SlideShare una empresa de Scribd logo
1 de 82
Descargar para leer sin conexión
Complex Infrastructure Made Easy™


Agile Development at GoGrid with
       Pallet and JClouds
         Presented to JClouds Meetup @ Twitter’s HQ
     Toni Batchelli, Consultant and Entrepreneur wannabe
        tbatchelli@gmail.com, @tbatchelli, @disclojure
                        February 2, 2011

                             02/01/11
GoGrid’s Challenges
 GoGrid is a cloud provider, building their own
 software
 Developing and testing their cloud
 management software is complex. They need
 to create and maintain realistic environments
 in order to load them with their latest software
 builds
   ~10 different servers types
   ~20 different services
The problem?
 Current time to setup a development/QA
 environment is 2 days
 • Mostly manual work
 Building the environments manually is very
 error prone
 A high level of interconnectivity between
 services
Goal

 To be able to create development and
testing environments dynamically, in a
    customizable way, and on cloud
             infrastructure



       A Cloud in a Cloud
Additional Challenges
 Environments need to be verified as fully functional before
 deploying software on them
 Must support multiple locations
 Must be able to scale dynamically
 Must support concurrent development
 •   Different feature branches
 Must manage/version non-software components in a
 lockstep with the software:
 •   Network configuration
 •   System-level configurations
 •   Application-level configurations
tools



  02/01/11
Abstraction layer on resource management
If you code your infrastructure management
code to the jclouds API, you can port your
code to all cloud providers
JVM-based
Provides access to GoGrid’s infrastructure by
abstracting the communication GoGrid’s
Cloud API
Uses JClouds to create and manage nodes
Provisions nodes with software and
configuration
Verifies node and service correct operation
Operates the services in the nodes
Nodes are grouped by groups (formerly
known as ‘tags’). All nodes in a group are
equivalent
Clojure
Pallet is built on Clojure
Clojure is a JVM-based lisp with superb
integration with Java and concurrency
Can use any existing Java library (Tomcat, jdbc,
etc...)
Provides a high level of abstraction, which is
what is needed in this case
Growing community: there are 7 books on Clojure
either published or in preparation
how?



 02/01/11
GoGrid Cloud Infrastructure


                               Service             Service



GoGrid Cloud API
                     Service             Service             Service
                     Service             Service
                     Service



                               Service             Service
                                                   Service
GoGrid Cloud Infrastructure


                                         Service             Service



          GoGrid Cloud API
jclouds                        Service             Service             Service
                               Service             Service
                               Service



                                         Service             Service
                                                             Service
GoGrid Cloud Infrastructure

gimme
                                           Service             Service
nodes!
            GoGrid Cloud API
  jclouds                        Service             Service             Service
                                 Service             Service
                                 Service



                                           Service             Service
                                                               Service
GoGrid Cloud Infrastructure

gimme
                                           Service             Service
nodes!
            GoGrid Cloud API
  jclouds                        Service             Service             Service
                                 Service             Service
                                 Service



                                           Service             Service
                                                               Service
GoGrid Cloud Infrastructure


                               Service             Service



GoGrid Cloud API
                     Service             Service             Service
                     Service             Service
                     Service



                               Service             Service
                                                   Service
GoGrid Cloud Infrastructure


                                        Service             Service



    et   GoGrid Cloud API
pall
                              Service             Service             Service
pallet                        Service             Service
                              Service



                                        Service             Service
                                                            Service
GoGrid Cloud Infrastructure


do stuff!                                     Service             Service



          et   GoGrid Cloud API
      pall
                                    Service             Service             Service
      pallet                        Service             Service
                                    Service



                                              Service             Service
                                                                  Service
GoGrid Cloud Infrastructure


do stuff!                                     Service             Service



          et   GoGrid Cloud API
      pall
                                    Service             Service             Service
      pallet                        Service             Service
                                    Service



                                              Service             Service
                                                                  Service
GoGrid Cloud Infrastructure




GoGrid Cloud API
GoGrid Cloud Infrastructure




          GoGrid Cloud API

jclouds
GoGrid Cloud Infrastructure

  make me
a dev cloud!
               GoGrid Cloud API

   jclouds
GoGrid Cloud Infrastructure

  make me                                   Service             Service
a dev cloud!
               GoGrid Cloud API

   jclouds                        Service             Service             Service
                                  Service             Service
                                  Service



                                            Service             Service
                                                                Service
GoGrid Cloud Infrastructure

                                      Service             Service




    et
         GoGrid Cloud API
pall
                            Service             Service             Service
pallet                      Service             Service
                            Service



                                      Service             Service
                                                          Service
GoGrid Cloud Infrastructure

 install cloud
                                               Service             Service
infrastructure!

            et
                  GoGrid Cloud API
        pall
                                     Service             Service             Service
        pallet                       Service             Service
                                     Service



                                               Service             Service
                                                                   Service
GoGrid Cloud Infrastructure

 install cloud
                                               Service             Service
infrastructure!

            et
                  GoGrid Cloud API
        pall
                                     Service             Service             Service
        pallet                       Service             Service
                                     Service



                                               Service             Service
                                                                   Service
GoGrid Cloud Infrastructure

                                      Service             Service




    et
         GoGrid Cloud API
pall
                            Service             Service             Service
pallet                      Service             Service
                            Service



                                      Service             Service
                                                          Service
GoGrid Cloud Infrastructure

is all working                                Service             Service
     fine?

           et
                 GoGrid Cloud API
       pall
                                    Service             Service             Service
       pallet                       Service             Service
                                    Service



                                              Service             Service
                                                                  Service
GoGrid Cloud Infrastructure

is all working                                Service             Service
     fine?

           et
                 GoGrid Cloud API
       pall
                                    Service             Service             Service
       pallet                       Service             Service
                                    Service

    OK!
                                              Service             Service
                                                                  Service
GoGrid Cloud Infrastructure

                                      Service             Service




    et
         GoGrid Cloud API
pall
                            Service             Service             Service
pallet                      Service             Service
                            Service



                                      Service             Service
                                                          Service
GoGrid Cloud Infrastructure

 deploy                                    Service             Service
new build!

         et
              GoGrid Cloud API
     pall
                                 Service             Service             Service
     pallet                      Service             Service
                                 Service



                                           Service             Service
                                                               Service
GoGrid Cloud Infrastructure

 deploy                                    Service             Service
new build!

         et
              GoGrid Cloud API
     pall
                                 Service             Service             Service
     pallet                      Service             Service
                                 Service



                                           Service             Service
                                                               Service
GoGrid Cloud Infrastructure

 deploy                                                           GoGrid Cloud Infrastructure
                                                              Service           Service
new build!

         et
              GoGrid Cloud API
     pall
                                 GoGrid Cloud API
                                                    Service             Service             Service
     pallet                                         Service             Service
                                                    Service



                                                              Service             Service
                                                                                  Service
GoGrid Cloud Infrastructure

                                                    GoGrid Cloud Infrastructure
                                                Service           Service


GoGrid Cloud API


                   GoGrid Cloud API
                                      Service             Service             Service
                                      Service             Service
                                      Service



                                                Service             Service
                                                                    Service
GoGrid Cloud Infrastructure

awesome!                                                       GoGrid Cloud Infrastructure
                                                           Service           Service


           GoGrid Cloud API


                              GoGrid Cloud API
                                                 Service             Service             Service
                                                 Service             Service
                                                 Service



                                                           Service             Service
                                                                               Service
GoGrid Cloud Infrastructure

                                                    GoGrid Cloud Infrastructure
                                                Service           Service


GoGrid Cloud API


                   GoGrid Cloud API
                                      Service             Service             Service
                                      Service             Service
                                      Service



                                                Service             Service
                                                                    Service
GoGrid Cloud Infrastructure

                                                              GoGrid Cloud Infrastructure
                                                          Service           Service


          GoGrid Cloud API


                             GoGrid Cloud API
                                                Service             Service             Service
jclouds                                         Service             Service
                                                Service



                                                          Service             Service
                                                                              Service
GoGrid Cloud Infrastructure

  let’s test:
                                                                    GoGrid Cloud Infrastructure
                                                                Service           Service
gimme nodes!
                GoGrid Cloud API


                                   GoGrid Cloud API
                                                      Service             Service             Service
     jclouds                                          Service             Service
                                                      Service



                                                                Service             Service
                                                                                    Service
GoGrid Cloud Infrastructure

  let’s test:
                                                                    GoGrid Cloud Infrastructure
                                                                Service           Service
gimme nodes!
                GoGrid Cloud API


                                   GoGrid Cloud API
                                                      Service             Service             Service
     jclouds                                          Service             Service
                                                      Service



                                                                Service             Service
                                                                                    Service
GoGrid Cloud Infrastructure

                                                    GoGrid Cloud Infrastructure
                                                Service           Service


GoGrid Cloud API


                   GoGrid Cloud API
                                      Service             Service             Service
                                      Service             Service
                                      Service



                                                Service             Service
                                                                    Service
GoGrid Cloud Infrastructure

                                                              GoGrid Cloud Infrastructure
                                                          Service           Service


          GoGrid Cloud API


                             GoGrid Cloud API
                                                Service             Service             Service
jclouds                                         Service             Service
                                                Service



                                                          Service             Service
                                                                              Service
GoGrid Cloud Infrastructure

I’m done,                                                       GoGrid Cloud Infrastructure
                                                            Service           Service
 thanks!
            GoGrid Cloud API


                               GoGrid Cloud API
                                                  Service             Service             Service
  jclouds                                         Service             Service
                                                  Service



                                                            Service             Service
                                                                                Service
GoGrid Cloud Infrastructure

I’m done,
 thanks!
            GoGrid Cloud API


  jclouds
GoGrid Cloud Infrastructure




GoGrid Cloud API
environment
                                   GoGrid Cloud Infrastructure
for branch A?


                GoGrid Cloud API
environment
                                                      GoGrid Cloud Infrastructure
for branch A?
                                                        GoGrid Cloud Infrastructure   branch A


                GoGrid Cloud API


                                   GoGrid Cloud API
environment
                                                      GoGrid Cloud Infrastructure
for branch A?
                                                        GoGrid Cloud Infrastructure   branch A



 environment
                GoGrid Cloud API


                                   GoGrid Cloud API
for branch B?
environment
                                                                         GoGrid Cloud Infrastructure
for branch A?
                                                                           GoGrid Cloud Infrastructure branch A
                                                                               GoGrid Cloud Infrastructure branch B


 environment
                GoGrid Cloud API


                                   GoGrid Cloud API
for branch B?

                                                      GoGrid Cloud API
environment
                                                                          GoGrid Cloud Infrastructure
for branch A?
                                                                            GoGrid Cloud Infrastructure branch A
                                                                                GoGrid Cloud Infrastructure branch B


 environment
                 GoGrid Cloud API


                                    GoGrid Cloud API
for branch B?

                                                       GoGrid Cloud API


 environment
for QA please?
environment
                                                                                             GoGrid Cloud Infrastructure
for branch A?
                                                                                               GoGrid Cloud Infrastructure branch A
                                                                                                   GoGrid Cloud Infrastructure branch B

                                                                                                         GoGrid Cloud Infrastructure   QA
 environment
                 GoGrid Cloud API


                                    GoGrid Cloud API
for branch B?

                                                       GoGrid Cloud API

                                                                          GoGrid Cloud API
 environment
for QA please?
development



     02/01/11
GoGrid’s Development Process
 Create a feature branch
 Create an environment (cloud infrastructure) for
 this branch
 Verify new environment (end-to-end tests)
 Automatically build and deploy the new software
 every time new code is committed to the branch.
 Destroy environment and free resources when
 done
An Environment
 Usually one environment for active
 development branch
 Each environment is specified by:
 • The development branch it tracks
 • Service types and node count for each service type
 • Network configuration
 • External services/DB provisioning
Development Environments
 Each development environment tracks a
 development feature branch
 Each environment has a node with Hudson
 CI, configured to track the environment’s
 branch
 When new code is pushed to the development
 branch, the environment’s Hudson server
 builds the software and updates the
 environment with it.
more on pallet



      02/01/11
Why Pallet?
 There are well known solutions for node
 provisioning in the cloud, why pallet?
 • It integrates with infrastructure management
 • Service interconnections are first class entities in
  the framework
 • Scalable programming model
 • Integrates well with SCM and with other OPS tools
 • Comprehensive support for all development cycles
✓ No central server
✓ No agents on nodes
✓ Works with standard and custom images
✓ First-class support for complex multi-service
  configurations
✓ All node configuration done remotely via
  generated scripts over SSH
✓ DSL for generating scripts, resources
✓ Testable
crates
 Pallet’s basic configuration unit
 A crate is a grouping of functions around a
 service
 Functions usually:
 • manipulate/create internal representations
 • result in resources deployed or scripts being run in
  the target nodes
proxied

Custom Crates

                                     tomcat   reverse
    bootstrap     tomcat
                                     deploy    proxy


Standard Crates


    automated                                 haproxy
    admin user

                  java               tomcat
A Node
(core/defnode	
  proxied
	
  	
  "Basic	
  web	
  app,	
  served	
  by	
  tomcat"
	
  	
  {:os-­‐family	
  :ubuntu	
  
	
  	
  	
  :os-­‐description-­‐matches	
  "10.04"
	
  	
  	
  :inbound-­‐ports	
  [8080	
  22]}	
  
	
  	
  :bootstrap	
  (resource/phase	
  (crates/bootstrap))
	
  	
  :configure	
  (resource/phase	
  (crates/tomcat))
	
  	
  :deploy	
  (resource/phase	
  
                                                          (crates/tomcat-­‐deploy	
  "webapp.war"))
	
  	
  :restart-­‐tomcat	
  (resource/phase
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (service/service	
  
                                                                                "tomcat6"
                                                                                :action	
  :restart)))
jclouds section of a node
(core/defnode	
  proxied
	
  	
  "Basic	
  web	
  app,	
  served	
  by	
  tomcat"
	
  	
  {:os-­‐family	
  :ubuntu	
  
	
  	
  	
  :os-­‐description-­‐matches	
  "10.04"
	
  	
  	
  :inbound-­‐ports	
  [8080	
  22]}	
  
	
  	
  :bootstrap	
  (resource/phase	
  (crates/bootstrap))
	
  	
  :configure	
  (resource/phase	
  (crates/tomcat))
	
  	
  :deploy	
  (resource/phase	
  
                                                          (crates/tomcat-­‐deploy	
  "webapp.war"))
	
  	
  :restart-­‐tomcat	
  (resource/phase
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (service/service	
  
                                                                                "tomcat6"
                                                                                :action	
  :restart)))
Execution Phases
(core/defnode	
  proxied
	
  	
  "Basic	
  web	
  app,	
  served	
  by	
  tomcat"
	
  	
  {:os-­‐family	
  :ubuntu	
  
	
  	
  	
  :os-­‐description-­‐matches	
  "10.04"
	
  	
  	
  :inbound-­‐ports	
  [8080	
  22]}	
  
	
  	
  :bootstrap	
  (resource/phase	
  (crates/bootstrap))
	
  	
  :configure	
  (resource/phase	
  (crates/tomcat))
	
  	
  :deploy	
  (resource/phase	
  
                                                          (crates/tomcat-­‐deploy	
  "webapp.war"))
	
  	
  :restart-­‐tomcat	
  (resource/phase
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (service/service
                                                                                "tomcat6"	
  
                                                                                :action	
  :restart)))
Cloud Infrastructure


  Crates                          proxy            proxy




             Cloud API
  Pallet                 webapp           webapp           webapp




  Node
definitions                         DB               DB
Cloud Infrastructure


  Crates                          proxy            proxy




             Cloud API
  Pallet                 webapp           webapp           webapp




  Node
definitions                         DB               DB
Cloud Infrastructure


  Crates                          proxy            proxy




             Cloud API
  Pallet                 webapp           webapp           webapp




  Node
definitions                         DB               DB
Cloud Infrastructure


  Crates                                    proxy            proxy




             jclouds



                       Cloud API
  Pallet                           webapp           webapp           webapp




  Node
definitions                                   DB               DB
Cloud Infrastructure

                                            proxy
                                            proxy            proxy
                                                             proxy
  Crates



             jclouds



                       Cloud API
  Pallet                           webapp           webapp           webapp




  Node
definitions                                   DB               DB
Cloud Infrastructure

                                            proxy
                                            proxy            proxy
                                                             proxy
  Crates



             jclouds



                       Cloud API
                                   webapp           webapp           webapp
  Pallet                           webapp           webapp           webapp




  Node
definitions                                   DB               DB
Cloud Infrastructure

                                            proxy
                                            proxy            proxy
                                                             proxy
  Crates



             jclouds



                       Cloud API
                                   webapp           webapp           webapp
  Pallet                           webapp           webapp           webapp




  Node
                                            DB
                                            DB               DB
                                                              DB
definitions
Cloud Infrastructure

                                  proxy
                                  proxy            proxy
                                                   proxy
  Crates




             Cloud API
                         webapp           webapp           webapp
  Pallet                 webapp           webapp           webapp




  Node
                                  DB
                                  DB               DB
                                                    DB
definitions
Cloud Infrastructure

                                  proxy
                                   proxy            proxy
                                                     proxy
  Crates
                                  squid             squid




             Cloud API
                         webapp            webapp            webapp
  Pallet                 webapp            webapp            webapp




  Node
                                   DB
                                   DB               DB
                                                     DB
definitions
Cloud Infrastructure

                                  proxy
                                   proxy            proxy
                                                     proxy
  Crates
                                  squid             squid




             Cloud API
                         webapp            webapp            webapp
  Pallet                 webapp            webapp            webapp




  Node
                                   DB
                                   DB               DB
                                                     DB
definitions
Cloud Infrastructure

                                   proxy
                                    proxy             proxy
                                                       proxy
  Crates
                                   squid              squid




             Cloud API
                          webapp             webapp             webapp
  Pallet                  webapp             webapp             webapp
                         tomcat             tomcat             tomcat



  Node
                                    DB
                                    DB                DB
                                                       DB
definitions
Cloud Infrastructure

                                   proxy
                                    proxy             proxy
                                                       proxy
  Crates
                                   squid              squid




             Cloud API
                          webapp             webapp             webapp
  Pallet                  webapp             webapp             webapp
                         tomcat             tomcat             tomcat



  Node
                                    DB
                                    DB                DB
                                                       DB
definitions
Cloud Infrastructure

                                   proxy
                                    proxy             proxy
                                                       proxy
  Crates
                                   squid              squid




             Cloud API
                          webapp             webapp             webapp
  Pallet                  webapp             webapp             webapp
                         tomcat             tomcat             tomcat



  Node
                                    DB
                                    DB                DB
                                                       DB
definitions
                               mysql              mysql
How are systems interconnected?
 Phase 1
 •   Retrieve and/or create needed nodes
 •   For each node in each group: run phases for crates
     and
      a) Collect configuration info
      b) Schedule configuration actions to be performed
        on node
 Phase 2
 •   Generate and execute scripts and resources
how does this look
     today?


        02/01/11
Environment Definition
(def branch-1-environment
  {:branch "http://svn....../branches/branch-1"
   :compute-service {:provider "gogrid"
                     :identity "<username>"
                     :credential "<password>"
                     :endpoint "http://10...:8080/api/"}
   :db-name "branch-1-db"
   :db-properties env-network-properties
   :pre-bootstrap-fn #'setup-environment-db
   :bootstrap-tags {com.gogrid.nodes.services/LDAP 1
                    com.gogrid.nodes.services/Cache 1}
   :bootstrap-phases [:restart-cache :restart-LDAP]
   :verify-phases [:verify]})
Operation

 user => (start branch-1-environment)

 user => (verify branch-1-environment)

 user => (destroy branch-1-environment)
Challenge with Pallet
 It’s a newcomer in the field.
 • Documentation needs work
 • Untested support for some combinations of flavors
  and versions of Linux
 Steep learning curve, a new language
 OMG! It’s A Lisp!
Some pointers...
 http://jclouds.org Adrian Cole et al.
 http://palletops.com Hugo Duncan et al.
 http://gogrid.com For more info on GoGrid
 services please contact:
        Paul Lappas
       VP Engineering & Co-Founder of GoGrid
       paul@gogrid.com

 GoGrid is hiring devops and SW engineers
   for their SF office (contact Paul too)
Questions?
                               Toni Batchelli
                        tbatchelli@gmail.com
                                   @tbatchelli
                                  @disclojure




             02/01/11

Más contenido relacionado

Similar a Agile Development at GoGrid with Pallet and JClouds

Introduction to Google Cloud Platform
Introduction to Google Cloud PlatformIntroduction to Google Cloud Platform
Introduction to Google Cloud PlatformPradeep Bhadani
 
Vendor classification & rating
Vendor classification & ratingVendor classification & rating
Vendor classification & ratingAmit Puri
 
Grails & the World of Tomorrow
Grails & the World of TomorrowGrails & the World of Tomorrow
Grails & the World of TomorrowPeter Ledbrook
 
PHP Day 2011 PHP goes to the cloud
PHP Day 2011 PHP goes to the cloudPHP Day 2011 PHP goes to the cloud
PHP Day 2011 PHP goes to the cloudpietrobr
 
Leverage An Intelligent Application Infrastructure for Competitive Advantage.
Leverage An Intelligent Application Infrastructure for Competitive Advantage.Leverage An Intelligent Application Infrastructure for Competitive Advantage.
Leverage An Intelligent Application Infrastructure for Competitive Advantage.Eric D. Schabell
 
Virtualization And Cloud Impact Overview Auditor Spin Enterprise Gr Cv4
Virtualization And Cloud Impact Overview Auditor Spin   Enterprise Gr Cv4Virtualization And Cloud Impact Overview Auditor Spin   Enterprise Gr Cv4
Virtualization And Cloud Impact Overview Auditor Spin Enterprise Gr Cv4EnterpriseGRC Solutions, Inc.
 
Desarrollando Aplicaciones Multi-tenant con WCF y SaaSGrid
Desarrollando Aplicaciones Multi-tenant con WCF y SaaSGridDesarrollando Aplicaciones Multi-tenant con WCF y SaaSGrid
Desarrollando Aplicaciones Multi-tenant con WCF y SaaSGridSoftware Guru
 
Essentials of cloud dsc skct
Essentials of cloud dsc skctEssentials of cloud dsc skct
Essentials of cloud dsc skctNaveenK158
 
GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ...
 GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ... GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ...
GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ...James Anderson
 
Google Architecture - Breaking it Open
Google Architecture - Breaking it OpenGoogle Architecture - Breaking it Open
Google Architecture - Breaking it OpenHARMAN Services
 
Google cloud Platform
Google cloud PlatformGoogle cloud Platform
Google cloud PlatformJanu Jahnavi
 
Google cloud platform
Google cloud platformGoogle cloud platform
Google cloud platformJanu Jahnavi
 
Cloud Foundry Open Tour Keynote
Cloud Foundry Open Tour KeynoteCloud Foundry Open Tour Keynote
Cloud Foundry Open Tour KeynoteRamnivasLaddad
 
2012.05.11 - IBM Cloud Specialty - Application Provider - Forum du Club Cloud...
2012.05.11 - IBM Cloud Specialty - Application Provider - Forum du Club Cloud...2012.05.11 - IBM Cloud Specialty - Application Provider - Forum du Club Cloud...
2012.05.11 - IBM Cloud Specialty - Application Provider - Forum du Club Cloud...Club Cloud des Partenaires
 

Similar a Agile Development at GoGrid with Pallet and JClouds (20)

Introduction to Google Cloud Platform
Introduction to Google Cloud PlatformIntroduction to Google Cloud Platform
Introduction to Google Cloud Platform
 
Vendor classification & rating
Vendor classification & ratingVendor classification & rating
Vendor classification & rating
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Grails & the World of Tomorrow
Grails & the World of TomorrowGrails & the World of Tomorrow
Grails & the World of Tomorrow
 
PHP Day 2011 PHP goes to the cloud
PHP Day 2011 PHP goes to the cloudPHP Day 2011 PHP goes to the cloud
PHP Day 2011 PHP goes to the cloud
 
Leverage An Intelligent Application Infrastructure for Competitive Advantage.
Leverage An Intelligent Application Infrastructure for Competitive Advantage.Leverage An Intelligent Application Infrastructure for Competitive Advantage.
Leverage An Intelligent Application Infrastructure for Competitive Advantage.
 
Virtualization And Cloud Impact Overview Auditor Spin Enterprise Gr Cv4
Virtualization And Cloud Impact Overview Auditor Spin   Enterprise Gr Cv4Virtualization And Cloud Impact Overview Auditor Spin   Enterprise Gr Cv4
Virtualization And Cloud Impact Overview Auditor Spin Enterprise Gr Cv4
 
Desarrollando Aplicaciones Multi-tenant con WCF y SaaSGrid
Desarrollando Aplicaciones Multi-tenant con WCF y SaaSGridDesarrollando Aplicaciones Multi-tenant con WCF y SaaSGrid
Desarrollando Aplicaciones Multi-tenant con WCF y SaaSGrid
 
Cloud circle Simon Withers
Cloud circle Simon WithersCloud circle Simon Withers
Cloud circle Simon Withers
 
Essentials of cloud dsc skct
Essentials of cloud dsc skctEssentials of cloud dsc skct
Essentials of cloud dsc skct
 
GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ...
 GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ... GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ...
GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ...
 
Google Architecture - Breaking it Open
Google Architecture - Breaking it OpenGoogle Architecture - Breaking it Open
Google Architecture - Breaking it Open
 
Google cloud Platform
Google cloud PlatformGoogle cloud Platform
Google cloud Platform
 
Google cloud platform
Google cloud platformGoogle cloud platform
Google cloud platform
 
Cloud Foundry Open Tour Keynote
Cloud Foundry Open Tour KeynoteCloud Foundry Open Tour Keynote
Cloud Foundry Open Tour Keynote
 
2012.05.11 - IBM Cloud Specialty - Application Provider - Forum du Club Cloud...
2012.05.11 - IBM Cloud Specialty - Application Provider - Forum du Club Cloud...2012.05.11 - IBM Cloud Specialty - Application Provider - Forum du Club Cloud...
2012.05.11 - IBM Cloud Specialty - Application Provider - Forum du Club Cloud...
 
5 gsoftware faq
5 gsoftware faq5 gsoftware faq
5 gsoftware faq
 

Más de GoGrid Cloud Hosting

60 Second Guide: The New Game: Managed Services in the Cloud
60 Second Guide: The New Game: Managed Services in the Cloud60 Second Guide: The New Game: Managed Services in the Cloud
60 Second Guide: The New Game: Managed Services in the CloudGoGrid Cloud Hosting
 
How-To Easily Deploy MongoDB in the Cloud
How-To Easily Deploy MongoDB in the CloudHow-To Easily Deploy MongoDB in the Cloud
How-To Easily Deploy MongoDB in the CloudGoGrid Cloud Hosting
 
60 Second Guide: Boost Ad and Revenue Delivery with the Cloud
60 Second Guide: Boost Ad and Revenue Delivery with the Cloud60 Second Guide: Boost Ad and Revenue Delivery with the Cloud
60 Second Guide: Boost Ad and Revenue Delivery with the CloudGoGrid Cloud Hosting
 
60 Second Guide: Keep Your Patient Health Info Secure in the Cloud
60 Second Guide: Keep Your Patient Health Info Secure in the Cloud60 Second Guide: Keep Your Patient Health Info Secure in the Cloud
60 Second Guide: Keep Your Patient Health Info Secure in the CloudGoGrid Cloud Hosting
 
60 Second Guide: Big Data and the Cloud
60 Second Guide: Big Data and the Cloud60 Second Guide: Big Data and the Cloud
60 Second Guide: Big Data and the CloudGoGrid Cloud Hosting
 
Why GoGrid Wins Over Rackspace (RAX)
Why GoGrid Wins Over Rackspace (RAX)Why GoGrid Wins Over Rackspace (RAX)
Why GoGrid Wins Over Rackspace (RAX)GoGrid Cloud Hosting
 
Why GoGrid Wins Over Amazon Web Services (AWS)
Why GoGrid Wins Over Amazon Web Services (AWS)Why GoGrid Wins Over Amazon Web Services (AWS)
Why GoGrid Wins Over Amazon Web Services (AWS)GoGrid Cloud Hosting
 
How To Deploy a GoGrid Dynamic Load Balancer
How To Deploy a GoGrid Dynamic Load BalancerHow To Deploy a GoGrid Dynamic Load Balancer
How To Deploy a GoGrid Dynamic Load BalancerGoGrid Cloud Hosting
 
GoGrid 3.0 Webinar: Complex Infrastructure Made Easy - Learn About the GoGrid...
GoGrid 3.0 Webinar: Complex Infrastructure Made Easy - Learn About the GoGrid...GoGrid 3.0 Webinar: Complex Infrastructure Made Easy - Learn About the GoGrid...
GoGrid 3.0 Webinar: Complex Infrastructure Made Easy - Learn About the GoGrid...GoGrid Cloud Hosting
 
GoGrid API - Presented at Cloud Connect Event 2010
GoGrid API - Presented at Cloud Connect Event 2010GoGrid API - Presented at Cloud Connect Event 2010
GoGrid API - Presented at Cloud Connect Event 2010GoGrid Cloud Hosting
 
GoGrid February 2010 Webinar on New Features
GoGrid February 2010 Webinar on New FeaturesGoGrid February 2010 Webinar on New Features
GoGrid February 2010 Webinar on New FeaturesGoGrid Cloud Hosting
 
GoGrid CDN - Webinar about GoGrid's Content Delivery Network
GoGrid CDN - Webinar about GoGrid's Content Delivery NetworkGoGrid CDN - Webinar about GoGrid's Content Delivery Network
GoGrid CDN - Webinar about GoGrid's Content Delivery NetworkGoGrid Cloud Hosting
 
GoGrid/AppZero: "Moving Windows Server Applications to the Cloud in 3 Easy St...
GoGrid/AppZero: "Moving Windows Server Applications to the Cloud in 3 Easy St...GoGrid/AppZero: "Moving Windows Server Applications to the Cloud in 3 Easy St...
GoGrid/AppZero: "Moving Windows Server Applications to the Cloud in 3 Easy St...GoGrid Cloud Hosting
 
Cloud Computing - Disruptive Innovation & Enabling Technology
Cloud Computing - Disruptive Innovation & Enabling TechnologyCloud Computing - Disruptive Innovation & Enabling Technology
Cloud Computing - Disruptive Innovation & Enabling TechnologyGoGrid Cloud Hosting
 

Más de GoGrid Cloud Hosting (14)

60 Second Guide: The New Game: Managed Services in the Cloud
60 Second Guide: The New Game: Managed Services in the Cloud60 Second Guide: The New Game: Managed Services in the Cloud
60 Second Guide: The New Game: Managed Services in the Cloud
 
How-To Easily Deploy MongoDB in the Cloud
How-To Easily Deploy MongoDB in the CloudHow-To Easily Deploy MongoDB in the Cloud
How-To Easily Deploy MongoDB in the Cloud
 
60 Second Guide: Boost Ad and Revenue Delivery with the Cloud
60 Second Guide: Boost Ad and Revenue Delivery with the Cloud60 Second Guide: Boost Ad and Revenue Delivery with the Cloud
60 Second Guide: Boost Ad and Revenue Delivery with the Cloud
 
60 Second Guide: Keep Your Patient Health Info Secure in the Cloud
60 Second Guide: Keep Your Patient Health Info Secure in the Cloud60 Second Guide: Keep Your Patient Health Info Secure in the Cloud
60 Second Guide: Keep Your Patient Health Info Secure in the Cloud
 
60 Second Guide: Big Data and the Cloud
60 Second Guide: Big Data and the Cloud60 Second Guide: Big Data and the Cloud
60 Second Guide: Big Data and the Cloud
 
Why GoGrid Wins Over Rackspace (RAX)
Why GoGrid Wins Over Rackspace (RAX)Why GoGrid Wins Over Rackspace (RAX)
Why GoGrid Wins Over Rackspace (RAX)
 
Why GoGrid Wins Over Amazon Web Services (AWS)
Why GoGrid Wins Over Amazon Web Services (AWS)Why GoGrid Wins Over Amazon Web Services (AWS)
Why GoGrid Wins Over Amazon Web Services (AWS)
 
How To Deploy a GoGrid Dynamic Load Balancer
How To Deploy a GoGrid Dynamic Load BalancerHow To Deploy a GoGrid Dynamic Load Balancer
How To Deploy a GoGrid Dynamic Load Balancer
 
GoGrid 3.0 Webinar: Complex Infrastructure Made Easy - Learn About the GoGrid...
GoGrid 3.0 Webinar: Complex Infrastructure Made Easy - Learn About the GoGrid...GoGrid 3.0 Webinar: Complex Infrastructure Made Easy - Learn About the GoGrid...
GoGrid 3.0 Webinar: Complex Infrastructure Made Easy - Learn About the GoGrid...
 
GoGrid API - Presented at Cloud Connect Event 2010
GoGrid API - Presented at Cloud Connect Event 2010GoGrid API - Presented at Cloud Connect Event 2010
GoGrid API - Presented at Cloud Connect Event 2010
 
GoGrid February 2010 Webinar on New Features
GoGrid February 2010 Webinar on New FeaturesGoGrid February 2010 Webinar on New Features
GoGrid February 2010 Webinar on New Features
 
GoGrid CDN - Webinar about GoGrid's Content Delivery Network
GoGrid CDN - Webinar about GoGrid's Content Delivery NetworkGoGrid CDN - Webinar about GoGrid's Content Delivery Network
GoGrid CDN - Webinar about GoGrid's Content Delivery Network
 
GoGrid/AppZero: "Moving Windows Server Applications to the Cloud in 3 Easy St...
GoGrid/AppZero: "Moving Windows Server Applications to the Cloud in 3 Easy St...GoGrid/AppZero: "Moving Windows Server Applications to the Cloud in 3 Easy St...
GoGrid/AppZero: "Moving Windows Server Applications to the Cloud in 3 Easy St...
 
Cloud Computing - Disruptive Innovation & Enabling Technology
Cloud Computing - Disruptive Innovation & Enabling TechnologyCloud Computing - Disruptive Innovation & Enabling Technology
Cloud Computing - Disruptive Innovation & Enabling Technology
 

Último

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Último (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 

Agile Development at GoGrid with Pallet and JClouds

  • 1. Complex Infrastructure Made Easy™ Agile Development at GoGrid with Pallet and JClouds Presented to JClouds Meetup @ Twitter’s HQ Toni Batchelli, Consultant and Entrepreneur wannabe tbatchelli@gmail.com, @tbatchelli, @disclojure February 2, 2011 02/01/11
  • 2. GoGrid’s Challenges GoGrid is a cloud provider, building their own software Developing and testing their cloud management software is complex. They need to create and maintain realistic environments in order to load them with their latest software builds ~10 different servers types ~20 different services
  • 3. The problem? Current time to setup a development/QA environment is 2 days • Mostly manual work Building the environments manually is very error prone A high level of interconnectivity between services
  • 4. Goal To be able to create development and testing environments dynamically, in a customizable way, and on cloud infrastructure A Cloud in a Cloud
  • 5. Additional Challenges Environments need to be verified as fully functional before deploying software on them Must support multiple locations Must be able to scale dynamically Must support concurrent development • Different feature branches Must manage/version non-software components in a lockstep with the software: • Network configuration • System-level configurations • Application-level configurations
  • 7. Abstraction layer on resource management If you code your infrastructure management code to the jclouds API, you can port your code to all cloud providers JVM-based Provides access to GoGrid’s infrastructure by abstracting the communication GoGrid’s Cloud API
  • 8. Uses JClouds to create and manage nodes Provisions nodes with software and configuration Verifies node and service correct operation Operates the services in the nodes Nodes are grouped by groups (formerly known as ‘tags’). All nodes in a group are equivalent
  • 9. Clojure Pallet is built on Clojure Clojure is a JVM-based lisp with superb integration with Java and concurrency Can use any existing Java library (Tomcat, jdbc, etc...) Provides a high level of abstraction, which is what is needed in this case Growing community: there are 7 books on Clojure either published or in preparation
  • 11. GoGrid Cloud Infrastructure Service Service GoGrid Cloud API Service Service Service Service Service Service Service Service Service
  • 12. GoGrid Cloud Infrastructure Service Service GoGrid Cloud API jclouds Service Service Service Service Service Service Service Service Service
  • 13. GoGrid Cloud Infrastructure gimme Service Service nodes! GoGrid Cloud API jclouds Service Service Service Service Service Service Service Service Service
  • 14. GoGrid Cloud Infrastructure gimme Service Service nodes! GoGrid Cloud API jclouds Service Service Service Service Service Service Service Service Service
  • 15. GoGrid Cloud Infrastructure Service Service GoGrid Cloud API Service Service Service Service Service Service Service Service Service
  • 16. GoGrid Cloud Infrastructure Service Service et GoGrid Cloud API pall Service Service Service pallet Service Service Service Service Service Service
  • 17. GoGrid Cloud Infrastructure do stuff! Service Service et GoGrid Cloud API pall Service Service Service pallet Service Service Service Service Service Service
  • 18. GoGrid Cloud Infrastructure do stuff! Service Service et GoGrid Cloud API pall Service Service Service pallet Service Service Service Service Service Service
  • 20. GoGrid Cloud Infrastructure GoGrid Cloud API jclouds
  • 21. GoGrid Cloud Infrastructure make me a dev cloud! GoGrid Cloud API jclouds
  • 22. GoGrid Cloud Infrastructure make me Service Service a dev cloud! GoGrid Cloud API jclouds Service Service Service Service Service Service Service Service Service
  • 23. GoGrid Cloud Infrastructure Service Service et GoGrid Cloud API pall Service Service Service pallet Service Service Service Service Service Service
  • 24. GoGrid Cloud Infrastructure install cloud Service Service infrastructure! et GoGrid Cloud API pall Service Service Service pallet Service Service Service Service Service Service
  • 25. GoGrid Cloud Infrastructure install cloud Service Service infrastructure! et GoGrid Cloud API pall Service Service Service pallet Service Service Service Service Service Service
  • 26. GoGrid Cloud Infrastructure Service Service et GoGrid Cloud API pall Service Service Service pallet Service Service Service Service Service Service
  • 27. GoGrid Cloud Infrastructure is all working Service Service fine? et GoGrid Cloud API pall Service Service Service pallet Service Service Service Service Service Service
  • 28. GoGrid Cloud Infrastructure is all working Service Service fine? et GoGrid Cloud API pall Service Service Service pallet Service Service Service OK! Service Service Service
  • 29. GoGrid Cloud Infrastructure Service Service et GoGrid Cloud API pall Service Service Service pallet Service Service Service Service Service Service
  • 30. GoGrid Cloud Infrastructure deploy Service Service new build! et GoGrid Cloud API pall Service Service Service pallet Service Service Service Service Service Service
  • 31. GoGrid Cloud Infrastructure deploy Service Service new build! et GoGrid Cloud API pall Service Service Service pallet Service Service Service Service Service Service
  • 32. GoGrid Cloud Infrastructure deploy GoGrid Cloud Infrastructure Service Service new build! et GoGrid Cloud API pall GoGrid Cloud API Service Service Service pallet Service Service Service Service Service Service
  • 33. GoGrid Cloud Infrastructure GoGrid Cloud Infrastructure Service Service GoGrid Cloud API GoGrid Cloud API Service Service Service Service Service Service Service Service Service
  • 34. GoGrid Cloud Infrastructure awesome! GoGrid Cloud Infrastructure Service Service GoGrid Cloud API GoGrid Cloud API Service Service Service Service Service Service Service Service Service
  • 35. GoGrid Cloud Infrastructure GoGrid Cloud Infrastructure Service Service GoGrid Cloud API GoGrid Cloud API Service Service Service Service Service Service Service Service Service
  • 36. GoGrid Cloud Infrastructure GoGrid Cloud Infrastructure Service Service GoGrid Cloud API GoGrid Cloud API Service Service Service jclouds Service Service Service Service Service Service
  • 37. GoGrid Cloud Infrastructure let’s test: GoGrid Cloud Infrastructure Service Service gimme nodes! GoGrid Cloud API GoGrid Cloud API Service Service Service jclouds Service Service Service Service Service Service
  • 38. GoGrid Cloud Infrastructure let’s test: GoGrid Cloud Infrastructure Service Service gimme nodes! GoGrid Cloud API GoGrid Cloud API Service Service Service jclouds Service Service Service Service Service Service
  • 39. GoGrid Cloud Infrastructure GoGrid Cloud Infrastructure Service Service GoGrid Cloud API GoGrid Cloud API Service Service Service Service Service Service Service Service Service
  • 40. GoGrid Cloud Infrastructure GoGrid Cloud Infrastructure Service Service GoGrid Cloud API GoGrid Cloud API Service Service Service jclouds Service Service Service Service Service Service
  • 41. GoGrid Cloud Infrastructure I’m done, GoGrid Cloud Infrastructure Service Service thanks! GoGrid Cloud API GoGrid Cloud API Service Service Service jclouds Service Service Service Service Service Service
  • 42. GoGrid Cloud Infrastructure I’m done, thanks! GoGrid Cloud API jclouds
  • 44. environment GoGrid Cloud Infrastructure for branch A? GoGrid Cloud API
  • 45. environment GoGrid Cloud Infrastructure for branch A? GoGrid Cloud Infrastructure branch A GoGrid Cloud API GoGrid Cloud API
  • 46. environment GoGrid Cloud Infrastructure for branch A? GoGrid Cloud Infrastructure branch A environment GoGrid Cloud API GoGrid Cloud API for branch B?
  • 47. environment GoGrid Cloud Infrastructure for branch A? GoGrid Cloud Infrastructure branch A GoGrid Cloud Infrastructure branch B environment GoGrid Cloud API GoGrid Cloud API for branch B? GoGrid Cloud API
  • 48. environment GoGrid Cloud Infrastructure for branch A? GoGrid Cloud Infrastructure branch A GoGrid Cloud Infrastructure branch B environment GoGrid Cloud API GoGrid Cloud API for branch B? GoGrid Cloud API environment for QA please?
  • 49. environment GoGrid Cloud Infrastructure for branch A? GoGrid Cloud Infrastructure branch A GoGrid Cloud Infrastructure branch B GoGrid Cloud Infrastructure QA environment GoGrid Cloud API GoGrid Cloud API for branch B? GoGrid Cloud API GoGrid Cloud API environment for QA please?
  • 50. development 02/01/11
  • 51. GoGrid’s Development Process Create a feature branch Create an environment (cloud infrastructure) for this branch Verify new environment (end-to-end tests) Automatically build and deploy the new software every time new code is committed to the branch. Destroy environment and free resources when done
  • 52. An Environment Usually one environment for active development branch Each environment is specified by: • The development branch it tracks • Service types and node count for each service type • Network configuration • External services/DB provisioning
  • 53. Development Environments Each development environment tracks a development feature branch Each environment has a node with Hudson CI, configured to track the environment’s branch When new code is pushed to the development branch, the environment’s Hudson server builds the software and updates the environment with it.
  • 54. more on pallet 02/01/11
  • 55. Why Pallet? There are well known solutions for node provisioning in the cloud, why pallet? • It integrates with infrastructure management • Service interconnections are first class entities in the framework • Scalable programming model • Integrates well with SCM and with other OPS tools • Comprehensive support for all development cycles
  • 56. ✓ No central server ✓ No agents on nodes ✓ Works with standard and custom images ✓ First-class support for complex multi-service configurations ✓ All node configuration done remotely via generated scripts over SSH ✓ DSL for generating scripts, resources ✓ Testable
  • 57. crates Pallet’s basic configuration unit A crate is a grouping of functions around a service Functions usually: • manipulate/create internal representations • result in resources deployed or scripts being run in the target nodes
  • 58. proxied Custom Crates tomcat reverse bootstrap tomcat deploy proxy Standard Crates automated haproxy admin user java tomcat
  • 59. A Node (core/defnode  proxied    "Basic  web  app,  served  by  tomcat"    {:os-­‐family  :ubuntu        :os-­‐description-­‐matches  "10.04"      :inbound-­‐ports  [8080  22]}      :bootstrap  (resource/phase  (crates/bootstrap))    :configure  (resource/phase  (crates/tomcat))    :deploy  (resource/phase   (crates/tomcat-­‐deploy  "webapp.war"))    :restart-­‐tomcat  (resource/phase                                      (service/service   "tomcat6" :action  :restart)))
  • 60. jclouds section of a node (core/defnode  proxied    "Basic  web  app,  served  by  tomcat"    {:os-­‐family  :ubuntu        :os-­‐description-­‐matches  "10.04"      :inbound-­‐ports  [8080  22]}      :bootstrap  (resource/phase  (crates/bootstrap))    :configure  (resource/phase  (crates/tomcat))    :deploy  (resource/phase   (crates/tomcat-­‐deploy  "webapp.war"))    :restart-­‐tomcat  (resource/phase                                      (service/service   "tomcat6" :action  :restart)))
  • 61. Execution Phases (core/defnode  proxied    "Basic  web  app,  served  by  tomcat"    {:os-­‐family  :ubuntu        :os-­‐description-­‐matches  "10.04"      :inbound-­‐ports  [8080  22]}      :bootstrap  (resource/phase  (crates/bootstrap))    :configure  (resource/phase  (crates/tomcat))    :deploy  (resource/phase   (crates/tomcat-­‐deploy  "webapp.war"))    :restart-­‐tomcat  (resource/phase                                      (service/service "tomcat6"   :action  :restart)))
  • 62. Cloud Infrastructure Crates proxy proxy Cloud API Pallet webapp webapp webapp Node definitions DB DB
  • 63. Cloud Infrastructure Crates proxy proxy Cloud API Pallet webapp webapp webapp Node definitions DB DB
  • 64. Cloud Infrastructure Crates proxy proxy Cloud API Pallet webapp webapp webapp Node definitions DB DB
  • 65. Cloud Infrastructure Crates proxy proxy jclouds Cloud API Pallet webapp webapp webapp Node definitions DB DB
  • 66. Cloud Infrastructure proxy proxy proxy proxy Crates jclouds Cloud API Pallet webapp webapp webapp Node definitions DB DB
  • 67. Cloud Infrastructure proxy proxy proxy proxy Crates jclouds Cloud API webapp webapp webapp Pallet webapp webapp webapp Node definitions DB DB
  • 68. Cloud Infrastructure proxy proxy proxy proxy Crates jclouds Cloud API webapp webapp webapp Pallet webapp webapp webapp Node DB DB DB DB definitions
  • 69. Cloud Infrastructure proxy proxy proxy proxy Crates Cloud API webapp webapp webapp Pallet webapp webapp webapp Node DB DB DB DB definitions
  • 70. Cloud Infrastructure proxy proxy proxy proxy Crates squid squid Cloud API webapp webapp webapp Pallet webapp webapp webapp Node DB DB DB DB definitions
  • 71. Cloud Infrastructure proxy proxy proxy proxy Crates squid squid Cloud API webapp webapp webapp Pallet webapp webapp webapp Node DB DB DB DB definitions
  • 72. Cloud Infrastructure proxy proxy proxy proxy Crates squid squid Cloud API webapp webapp webapp Pallet webapp webapp webapp tomcat tomcat tomcat Node DB DB DB DB definitions
  • 73. Cloud Infrastructure proxy proxy proxy proxy Crates squid squid Cloud API webapp webapp webapp Pallet webapp webapp webapp tomcat tomcat tomcat Node DB DB DB DB definitions
  • 74. Cloud Infrastructure proxy proxy proxy proxy Crates squid squid Cloud API webapp webapp webapp Pallet webapp webapp webapp tomcat tomcat tomcat Node DB DB DB DB definitions mysql mysql
  • 75. How are systems interconnected? Phase 1 • Retrieve and/or create needed nodes • For each node in each group: run phases for crates and a) Collect configuration info b) Schedule configuration actions to be performed on node Phase 2 • Generate and execute scripts and resources
  • 76. how does this look today? 02/01/11
  • 77. Environment Definition (def branch-1-environment {:branch "http://svn....../branches/branch-1" :compute-service {:provider "gogrid" :identity "<username>" :credential "<password>" :endpoint "http://10...:8080/api/"} :db-name "branch-1-db" :db-properties env-network-properties :pre-bootstrap-fn #'setup-environment-db :bootstrap-tags {com.gogrid.nodes.services/LDAP 1 com.gogrid.nodes.services/Cache 1} :bootstrap-phases [:restart-cache :restart-LDAP] :verify-phases [:verify]})
  • 78. Operation user => (start branch-1-environment) user => (verify branch-1-environment) user => (destroy branch-1-environment)
  • 79. Challenge with Pallet It’s a newcomer in the field. • Documentation needs work • Untested support for some combinations of flavors and versions of Linux Steep learning curve, a new language OMG! It’s A Lisp!
  • 80.
  • 81. Some pointers... http://jclouds.org Adrian Cole et al. http://palletops.com Hugo Duncan et al. http://gogrid.com For more info on GoGrid services please contact: Paul Lappas VP Engineering & Co-Founder of GoGrid paul@gogrid.com GoGrid is hiring devops and SW engineers for their SF office (contact Paul too)
  • 82. Questions? Toni Batchelli tbatchelli@gmail.com @tbatchelli @disclojure 02/01/11