SlideShare a Scribd company logo
1 of 82
Download to read offline
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

More Related Content

Similar to 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 to 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
 

More from 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
 

More from 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
 

Recently uploaded

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
 
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
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 

Recently uploaded (20)

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
 
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
 
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?
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 

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