Nuxeo on the Cloud


                  Stefane Fermigier (Nuxeo), Nick Barcet (Canonical) - 2011/10/21



Open Source ECM
What’s the Cloud?



                    2
Cloud Services

                     Applications

                 Application containers

                   Virtual machines
                     and storage

                                      3
Scale As You Need



• Manual or Automatic provisioning
• The Cloud knows what’s available



                                     4
Pay As You Go


• Instances (Memory, CPU)
• Storage
• Bandwidth
• Applications

                            5
Public / Private / Hybrid


• Public commercial cloud
• Private instances
  • Needs the full cloud machinery locally
• Hybrid model

                                             6
Why Nuxeo on the Cloud?



                          7
Use Cases and Business
Motivations


• Developers
• Business Users
• Ops


                         8
Nuxeo Cloud for Developers


• Quick setup of development instances
• Rapid deployment from Nuxeo Studio
  and Nuxeo IDE


                                         9
Nuxeo Cloud for Business


• Quick setup of business applications
• Customize using profiles from the Nuxeo
  Marketplace in the Update Center


                                            10
Nuxeo Cloud for Ops


• Simplify and speed up Nuxeo
  deployment on public or private clouds
  (e.g. OpenStack)
• Manage your instances


                                           11
Current State
of Nuxeo Cloud


                 12
Nuxeo as SaaS


• Running on Amazon EC2
• Managed Nuxeo instances
• Customizable through Nuxeo Studio
• Arbitrary plugins allowed

                                      13
Nuxeo as SaaS




                14
Nuxeo on IaaS



• CloudFormation scripts (Amazon)
• Or pre-baked images (AMI)



                                    15
16
Upcoming Offers



                  17
Nuxeo on IaaS



• Short term projects
• Upcoming support for more IaaS providers (ex:
  Rackspace) and private IaaS (ex: OpenStack)



                                                  18
Nuxeo on a PaaS
• Short / medium term projects
• Options: Elastic Beanstalk, CloudBees, Cloud
  Foundry, OpenShift...
  •   All need customization due to our own specific needs

  •   CloudFoundry is currently the only open source solution

• Need an open source platform to adapt it to our own
  needs (Studio, Update Center...)
  •   Cloud Foundry (maybe)

  •   OpenShift when they decide to open it for real            19
Focus on CloudFoundry

• Set of command-line tools to deploy applications
  (Java, Ruby, Node...) to a public PaaS (owned by
  VMWare) or your own
• Takes care of application provisioning, starting,
  stopping, monitoring
• Can add / remove instances to scale up / down
  your applications
                                                      20
Nuxeo on CloudFoundry

• One needs to patch several pieces of
  CloudFoundry
• Sample Usage:
  $ vmc push myapp --no-start
  $ vmc start myapp
  $ vmc apps
  +-------------+----+---------+----------------+------------------+
  | Application | # | Health | URLS             | Services         |
  +-------------+----+---------+----------------+------------------+
  | myapp       | 1 | RUNNING | myapp.vcap.me | myappdb            |
  +-------------+----+---------+----------------+------------------+
                                                                       21
Current issues


• We still need to figure out how to support some
  important Nuxeo features on this platform:
  • Hot deploy / reload
  • Updates through Nuxeo Connect



                                                    22
Scale up

 $ vmc instances myapp +1

 $ vmc instances myapp

 +-------+----------+--------------------+
 | Index | State    | Start Time         |
 +-------+----------+--------------------+
 | 0     | RUNNING | 09/30/2011 05:20PM |
 | 1     | RUNNING | 09/30/2011 05:24PM |
 +-------+----------+--------------------+
                                             23
Nuxeo as a PaaS



• Longer term
• Multi-tenant PaaS specific to ECM applications
• ECM as a service



                                                   24
Nick Barcet




• Presentation of Juju




                         25
DevOps, Distilled
What is DevOps?



   Rate of agile development and deployment requires deeper
    interaction between teams

   A melding of development, deployment, and QA principles,
    methods, and practices


   Fills the gap between developers and system
    administrators




Presentation by Nick Barcet
What drives DevOps?



   Speed of the deployment

   Continuous Integration, Automated Testing, etc.


   Fast change vs. Stability




Presentation by Nick Barcet
What does DevOps “deliver”?



   Fast repeatable server setup, consistent environment

   Abstract ops tasks to empower devs


   Smaller deployments empower ops


   Repeatable processes that let you scale out quickly




Presentation by Nick Barcet
You've got the tools already



   Hardware
   Virtualization
   Platform (OS)
   Configuration Management




       need to tie that together into something whole.




Presentation by Nick Barcet
Manages Services, not Machines




Presentation by Nick Barcet
Elevate to Juju


                                 Service
                              Orchestration



                               Configuration
                               Management


                              Virtualization


                               Operating
                                System




                               Hardware




Presentation by Nick Barcet
Juju, DevOps Distilled


Dev                                              Ops
    Reuse existing deployment charms in an     Explicit control over deployment,
     openly-accessible repository of shared       configuration and upgrade options
     expertise                                  See what’s deployed and track usage in the
    Reproduce deployments for test and           cloud
     staging purposes
                                                Create and share charms for new
    Rapid deployment of your dependencies        applications
     for development purposes
                                                Monitor, scale, shrink and adjust
    Compose whole systems from individual        deployment parameters in real time
     application components and describe the
                                                Explicitly connect different components and
     entire deployment
                                                  maintain those relationships over time

                                                Collaborate with developers on the exact
                                                  deployment and upgrade processes

                                                Get more done: implement decisions
                                                  immediately regardless of infrastructure
                                                  scale
                                     http://juju.ubuntu.com
    Presentation by Nick Barcet
Juju's Charms


   Charms are a shareable, re-usable, and repeatable
    expressions of DevOps best practices.


   You can use them unmodified, or easily change and
    connect them to fit your needs.


   Deploying a formula is similar to installing a package on
    Ubuntu: ask for it and it’s there, remove it and it’s
    completely gone.




    Presentation by Nick Barcet
Juju is a community of DevOps expertise.



   Most of the application you want will be available in Juju.

   Juju provides direct and free access to a DevOps
    community-contributed collection of formulas




Presentation by Nick Barcet
Juju provides service orchestration



   Juju focuses on managing the service units you need to
    deliver a single solution, above simply configuring the
    machines or cloud instances needed to run them.

   Charms developed, tested, and deployed on your own
    hardware will operate the same in an EC2 API compatible
    cloud, including OpenStack.




Presentation by Nick Barcet
Juju is intelligent



   Juju exposes re-usable service units and well-defined
    interfaces that allow you to quickly and organically adjust
    and scale solutions without repeating yourself.




Presentation by Nick Barcet
Juju is Easy



   There’s no need to learn a domain specific language (DSL)
    to use Juju or create formulas. You can be up and running
    with your own formula in minutes




Presentation by Nick Barcet
Juju's internals




Presentation by Nick Barcet
Juju



                                                    Juju treats individual services
                                                     as atoms that are described
                                                     as charms and can be
   Juju environment                                  instantiated one or many
                                                     times.
                              Cloud app


   and dependency
   solver




Presentation by Nick Barcet           OpenStack in Action, Paris
Juju



                                                    Juju treats individual services
                                                     as atoms that are described
                                                     as charms and can be
   Juju environment                                  instantiated one or many
                                                     times.
                              Cloud app
                               Cloud app


   and dependency
   solver




Presentation by Nick Barcet           OpenStack in Action, Paris
Juju



                                                    Juju treats individual services
                                                     as atoms that are described
                                                     as charms and can be
   Juju environment                                  instantiated one or many
                                                     times.
                              Cloud app
                               Cloud app
                                Cloud app

   and dependency
   solver




Presentation by Nick Barcet           OpenStack in Action, Paris
Juju


                                 Load
                                Balancer               Each charm (or atom) define
                                                        dependencies and/or
                                                        provides.
                              Depends
   Juju environment



                               Cloud app
                                Cloud app
                                 Cloud app

   and dependency
   solver
                                        Depends



                              SQL Database




Presentation by Nick Barcet              OpenStack in Action, Paris
Juju


                                 Load
                                Balancer
                                  HAProxy             Each charm (or atom) define
                                                       dependencies and/or
                                                       provides.
                              Depends Provides
   Juju environment



                                Cloud app
                                 Cloud app
                                  Cloud app

   and dependency
   solver
                                      Depends



                              SQL Database




Presentation by Nick Barcet             OpenStack in Action, Paris
Juju


                                 Load
                                Balancer
                                  HAProxy             Each charm (or atom) define
                                                       dependencies and/or
                                                       provides.
                              Depends Provides
   Juju environment



                                Cloud app
                                 Cloud app
                                  Cloud app

   and dependency
   solver
                              Provides Depends



                              SQL Database
                                  MySQL



Presentation by Nick Barcet             OpenStack in Action, Paris
Juju


                                 Load
                                Balancer
                                  HAProxy
                                  Varnish             Multiple charms can provide
                                                       the same service and can be
                                                       easily switched.
                              Depends Provides
   Juju environment



                                Cloud app
                                 Cloud app
                                  Cloud app

   and dependency
   solver
                              Provides Depends



                              SQL Database
                                  MySQL



Presentation by Nick Barcet             OpenStack in Action, Paris
Juju



                                Varnish
                                 Varnish            Juju maintains the relations
                                                     between the services so
                                                     that you don't need to care
   Juju environment                                  about the elasticity of your
                                                     environment.
                              Cloud app
                               Cloud app
                                Cloud app
                                                       Relations are to charms
   and dependency
   solver
                                                       what bounds are to atoms.


                                                    Services are loosely coupled
                               MySQL
                                MySQL                but highly cohesive.
                                 MySQL



Presentation by Nick Barcet           OpenStack in Action, Paris
Juju



                                 Varnish           Juju delivers service focused
                                                    management through their
                                                    life-cycle
   Juju environment                                   Offers the same simple rules to
                                                       components of you infra as we do already
                                                       for packages on your servers:
                              Cloud app
                               Cloud app               dependencies, provides
                                Cloud app
                                                      Adds the notion of dynamic relations
                                                       between components
   and dependency
   solver*                                            To provide you with simple automated
                                                       elasticity that is easy to expand
                                                      Working on your bare metal servers
                                                       (through Orchestra*) as easily as on your
                                                       favourite clouds (AWS, OpenStack*, ...)
                                 MySQL



Presentation by Nick Barcet           OpenStack in Action, Paris soon
                                                       *coming
Juju's Architechture




Presentation by Nick Barcet
Thank you




Nick Barcet
<nick.barcet@canonical.com>




www.ubuntu.com
Nuxeo on Juju



                47
Use case


• We already know how to deploy single server
  instances of Nuxeo on the cloud (ex: using
  CloudFormation)
• But deploying fault-tolerant and scalable multi-
  servers instances is still a manual process
• Enters Juju...

                                                     48
Target architecture




                      49
Bootstrap the environment


 $ juju bootstrap

 # Wait a couple of minutes

 $ juju status

 ..


                              50
Launch the services

 $ juju deploy --repository=charms 
    local:haproxy

 $ juju deploy --repository=charms 
    local:nuxeo

 $ juju deploy --repository=charms 
    local:postgres-nuxeo

                                       51
52
Connect the services together


 $ juju add-relation haproxy:reverseproxy
    nuxeo:website

 $ juju add-relation postgres-nuxeo:db 
    nuxeo:db


                                             53
54
Open the business!




 $ juju expose haproxy




                         55
Users are coming !




                     56
Add more servers!



 $ juju add-unit nuxeo

 $ juju add-unit nuxeo




                         57
58
Additional goodies
• NFS storage (or S3 / S3-like)
• Monitoring
• Auto-scalability (add more Nuxeo servers when
  loads increases, remove them afterwards)
• HA and scale out for the PostgreSQL, for HAProxy
• Backups
• Integration with Nuxeo Connect & Nuxeo
  Marketplace                                        59
Work in progress


• Juju is still a developer preview (will reach
  production-readiness in April 2012)
• Watch (and contribute to) our charms on
  http://github.com/nuxeo/nuxeo-juju



                                                  60

Nuxeo on the Cloud - Nuxeo World 2011

  • 1.
    Nuxeo on theCloud Stefane Fermigier (Nuxeo), Nick Barcet (Canonical) - 2011/10/21 Open Source ECM
  • 2.
  • 3.
    Cloud Services Applications Application containers Virtual machines and storage 3
  • 4.
    Scale As YouNeed • Manual or Automatic provisioning • The Cloud knows what’s available 4
  • 5.
    Pay As YouGo • Instances (Memory, CPU) • Storage • Bandwidth • Applications 5
  • 6.
    Public / Private/ Hybrid • Public commercial cloud • Private instances • Needs the full cloud machinery locally • Hybrid model 6
  • 7.
    Why Nuxeo onthe Cloud? 7
  • 8.
    Use Cases andBusiness Motivations • Developers • Business Users • Ops 8
  • 9.
    Nuxeo Cloud forDevelopers • Quick setup of development instances • Rapid deployment from Nuxeo Studio and Nuxeo IDE 9
  • 10.
    Nuxeo Cloud forBusiness • Quick setup of business applications • Customize using profiles from the Nuxeo Marketplace in the Update Center 10
  • 11.
    Nuxeo Cloud forOps • Simplify and speed up Nuxeo deployment on public or private clouds (e.g. OpenStack) • Manage your instances 11
  • 12.
  • 13.
    Nuxeo as SaaS •Running on Amazon EC2 • Managed Nuxeo instances • Customizable through Nuxeo Studio • Arbitrary plugins allowed 13
  • 14.
  • 15.
    Nuxeo on IaaS •CloudFormation scripts (Amazon) • Or pre-baked images (AMI) 15
  • 16.
  • 17.
  • 18.
    Nuxeo on IaaS •Short term projects • Upcoming support for more IaaS providers (ex: Rackspace) and private IaaS (ex: OpenStack) 18
  • 19.
    Nuxeo on aPaaS • Short / medium term projects • Options: Elastic Beanstalk, CloudBees, Cloud Foundry, OpenShift... • All need customization due to our own specific needs • CloudFoundry is currently the only open source solution • Need an open source platform to adapt it to our own needs (Studio, Update Center...) • Cloud Foundry (maybe) • OpenShift when they decide to open it for real 19
  • 20.
    Focus on CloudFoundry •Set of command-line tools to deploy applications (Java, Ruby, Node...) to a public PaaS (owned by VMWare) or your own • Takes care of application provisioning, starting, stopping, monitoring • Can add / remove instances to scale up / down your applications 20
  • 21.
    Nuxeo on CloudFoundry •One needs to patch several pieces of CloudFoundry • Sample Usage: $ vmc push myapp --no-start $ vmc start myapp $ vmc apps +-------------+----+---------+----------------+------------------+ | Application | # | Health | URLS | Services | +-------------+----+---------+----------------+------------------+ | myapp | 1 | RUNNING | myapp.vcap.me | myappdb | +-------------+----+---------+----------------+------------------+ 21
  • 22.
    Current issues • Westill need to figure out how to support some important Nuxeo features on this platform: • Hot deploy / reload • Updates through Nuxeo Connect 22
  • 23.
    Scale up $vmc instances myapp +1 $ vmc instances myapp +-------+----------+--------------------+ | Index | State | Start Time | +-------+----------+--------------------+ | 0 | RUNNING | 09/30/2011 05:20PM | | 1 | RUNNING | 09/30/2011 05:24PM | +-------+----------+--------------------+ 23
  • 24.
    Nuxeo as aPaaS • Longer term • Multi-tenant PaaS specific to ECM applications • ECM as a service 24
  • 25.
  • 26.
  • 27.
    What is DevOps?  Rate of agile development and deployment requires deeper interaction between teams  A melding of development, deployment, and QA principles, methods, and practices  Fills the gap between developers and system administrators Presentation by Nick Barcet
  • 28.
    What drives DevOps?  Speed of the deployment  Continuous Integration, Automated Testing, etc.  Fast change vs. Stability Presentation by Nick Barcet
  • 29.
    What does DevOps“deliver”?  Fast repeatable server setup, consistent environment  Abstract ops tasks to empower devs  Smaller deployments empower ops  Repeatable processes that let you scale out quickly Presentation by Nick Barcet
  • 30.
    You've got thetools already  Hardware  Virtualization  Platform (OS)  Configuration Management need to tie that together into something whole. Presentation by Nick Barcet
  • 31.
    Manages Services, notMachines Presentation by Nick Barcet
  • 32.
    Elevate to Juju Service Orchestration Configuration Management Virtualization Operating System Hardware Presentation by Nick Barcet
  • 33.
    Juju, DevOps Distilled Dev Ops  Reuse existing deployment charms in an Explicit control over deployment, openly-accessible repository of shared configuration and upgrade options expertise See what’s deployed and track usage in the  Reproduce deployments for test and cloud staging purposes Create and share charms for new  Rapid deployment of your dependencies applications for development purposes Monitor, scale, shrink and adjust  Compose whole systems from individual deployment parameters in real time application components and describe the Explicitly connect different components and entire deployment maintain those relationships over time Collaborate with developers on the exact deployment and upgrade processes Get more done: implement decisions immediately regardless of infrastructure scale http://juju.ubuntu.com Presentation by Nick Barcet
  • 34.
    Juju's Charms  Charms are a shareable, re-usable, and repeatable expressions of DevOps best practices.  You can use them unmodified, or easily change and connect them to fit your needs.  Deploying a formula is similar to installing a package on Ubuntu: ask for it and it’s there, remove it and it’s completely gone. Presentation by Nick Barcet
  • 35.
    Juju is acommunity of DevOps expertise.  Most of the application you want will be available in Juju.  Juju provides direct and free access to a DevOps community-contributed collection of formulas Presentation by Nick Barcet
  • 36.
    Juju provides serviceorchestration  Juju focuses on managing the service units you need to deliver a single solution, above simply configuring the machines or cloud instances needed to run them.  Charms developed, tested, and deployed on your own hardware will operate the same in an EC2 API compatible cloud, including OpenStack. Presentation by Nick Barcet
  • 37.
    Juju is intelligent  Juju exposes re-usable service units and well-defined interfaces that allow you to quickly and organically adjust and scale solutions without repeating yourself. Presentation by Nick Barcet
  • 38.
    Juju is Easy  There’s no need to learn a domain specific language (DSL) to use Juju or create formulas. You can be up and running with your own formula in minutes Presentation by Nick Barcet
  • 39.
  • 40.
    Juju Juju treats individual services as atoms that are described as charms and can be Juju environment instantiated one or many times. Cloud app and dependency solver Presentation by Nick Barcet OpenStack in Action, Paris
  • 41.
    Juju Juju treats individual services as atoms that are described as charms and can be Juju environment instantiated one or many times. Cloud app Cloud app and dependency solver Presentation by Nick Barcet OpenStack in Action, Paris
  • 42.
    Juju Juju treats individual services as atoms that are described as charms and can be Juju environment instantiated one or many times. Cloud app Cloud app Cloud app and dependency solver Presentation by Nick Barcet OpenStack in Action, Paris
  • 43.
    Juju Load Balancer Each charm (or atom) define dependencies and/or provides. Depends Juju environment Cloud app Cloud app Cloud app and dependency solver Depends SQL Database Presentation by Nick Barcet OpenStack in Action, Paris
  • 44.
    Juju Load Balancer HAProxy Each charm (or atom) define dependencies and/or provides. Depends Provides Juju environment Cloud app Cloud app Cloud app and dependency solver Depends SQL Database Presentation by Nick Barcet OpenStack in Action, Paris
  • 45.
    Juju Load Balancer HAProxy Each charm (or atom) define dependencies and/or provides. Depends Provides Juju environment Cloud app Cloud app Cloud app and dependency solver Provides Depends SQL Database MySQL Presentation by Nick Barcet OpenStack in Action, Paris
  • 46.
    Juju Load Balancer HAProxy Varnish Multiple charms can provide the same service and can be easily switched. Depends Provides Juju environment Cloud app Cloud app Cloud app and dependency solver Provides Depends SQL Database MySQL Presentation by Nick Barcet OpenStack in Action, Paris
  • 47.
    Juju Varnish Varnish Juju maintains the relations between the services so that you don't need to care Juju environment about the elasticity of your environment. Cloud app Cloud app Cloud app Relations are to charms and dependency solver what bounds are to atoms. Services are loosely coupled MySQL MySQL but highly cohesive. MySQL Presentation by Nick Barcet OpenStack in Action, Paris
  • 48.
    Juju Varnish Juju delivers service focused management through their life-cycle Juju environment  Offers the same simple rules to components of you infra as we do already for packages on your servers: Cloud app Cloud app dependencies, provides Cloud app  Adds the notion of dynamic relations between components and dependency solver*  To provide you with simple automated elasticity that is easy to expand  Working on your bare metal servers (through Orchestra*) as easily as on your favourite clouds (AWS, OpenStack*, ...) MySQL Presentation by Nick Barcet OpenStack in Action, Paris soon *coming
  • 49.
  • 50.
  • 51.
  • 52.
    Use case • Wealready know how to deploy single server instances of Nuxeo on the cloud (ex: using CloudFormation) • But deploying fault-tolerant and scalable multi- servers instances is still a manual process • Enters Juju... 48
  • 53.
  • 54.
    Bootstrap the environment $ juju bootstrap # Wait a couple of minutes $ juju status .. 50
  • 55.
    Launch the services $ juju deploy --repository=charms local:haproxy $ juju deploy --repository=charms local:nuxeo $ juju deploy --repository=charms local:postgres-nuxeo 51
  • 56.
  • 57.
    Connect the servicestogether $ juju add-relation haproxy:reverseproxy nuxeo:website $ juju add-relation postgres-nuxeo:db nuxeo:db 53
  • 58.
  • 59.
    Open the business! $ juju expose haproxy 55
  • 60.
  • 61.
    Add more servers! $ juju add-unit nuxeo $ juju add-unit nuxeo 57
  • 62.
  • 63.
    Additional goodies • NFSstorage (or S3 / S3-like) • Monitoring • Auto-scalability (add more Nuxeo servers when loads increases, remove them afterwards) • HA and scale out for the PostgreSQL, for HAProxy • Backups • Integration with Nuxeo Connect & Nuxeo Marketplace 59
  • 64.
    Work in progress •Juju is still a developer preview (will reach production-readiness in April 2012) • Watch (and contribute to) our charms on http://github.com/nuxeo/nuxeo-juju 60

Editor's Notes