SlideShare una empresa de Scribd logo
1 de 95
Descargar para leer sin conexión
Clouds against
           the floods
           or how RoR saved the day in
           Australia




            Leonardo Borges


Monday, 7 November 2011
self slide
                          • ThoughtWorker in Sydney, Australia
                          • Programming languages enthusiast
                          • Blogger - leonardoborges.com
                          • Twitter blabbermouth @leonardo_borges
                          • Seldom OSS contributor - github.com/
                          leonardoborges




Monday, 7 November 2011
self slide
                                   • ThoughtWorker in Sydney, Australia
                                   • Programming languages enthusiast
                                   • Blogger - leonardoborges.com
                                   • Twitter blabbermouth @leonardo_borges
                                   • Seldom OSS contributor - github.com/
                                   leonardoborges

      ...and also
     • Heavy Metal guitarist
     • Singer
     • Overall adrenaline junkie
Monday, 7 November 2011
Let’s step back for a sec...



Monday, 7 November 2011
Heroku, an overview




Monday, 7 November 2011
Heroku, an overview
                          Basic concepts




Monday, 7 November 2011
Heroku, an overview
                          Basic concepts
                            • PaaS




Monday, 7 November 2011
Heroku, an overview
                          Basic concepts
                            • PaaS
                            • Git based deployment cycle




Monday, 7 November 2011
Heroku, an overview
                          Basic concepts
                            • PaaS
                            • Git based deployment cycle
                            • Dynos (web processes)




Monday, 7 November 2011
Heroku, an overview
                          Basic concepts
                            • PaaS
                            • Git based deployment cycle
                            • Dynos (web processes)
                            • Workers (background processes)




Monday, 7 November 2011
Heroku, an overview
                          Basic concepts
                            • PaaS
                            • Git based deployment cycle
                            • Dynos (web processes)
                            • Workers (background processes)
                            • Cron




Monday, 7 November 2011
Simplistic view of a web request
                                   request


                                   routing




                                    dyno




Monday, 7 November 2011
Simplistic view of a web request
                                               request


                                               routing




                          dyno   dyno   dyno    dyno     dyno   dyno   dyno


                          dyno   dyno   dyno    dyno     dyno   dyno   dyno




Monday, 7 November 2011
A typical setup




Monday, 7 November 2011
A typical setup
                          Environments




Monday, 7 November 2011
A typical setup
                          Environments
                            • staging, showcase and production




Monday, 7 November 2011
A typical setup
                          Environments
                            • staging, showcase and production




Monday, 7 November 2011
A typical setup
                          Environments
                            • staging, showcase and production




Monday, 7 November 2011
A typical setup
                          Environments
                            • staging, showcase and production

                          Branching strategy
                            • develop
                            • master (tagged release candidates)




Monday, 7 November 2011
But before you get too excited...



Monday, 7 November 2011
Catches & restrictions




Monday, 7 November 2011
Catches & restrictions
       • Read-only file system




Monday, 7 November 2011
Catches & restrictions
       • Read-only file system
       • 30 seconds cap on http requests




Monday, 7 November 2011
Catches & restrictions
       • Read-only file system
       • 30 seconds cap on http requests
       • The console hijacks the web
          processes




Monday, 7 November 2011
Catches & restrictions
       • Read-only file system
       • 30 seconds cap on http requests
       • The console hijacks the web
        processes
       • Processes limited to 300MB 512MB
        of RAM




Monday, 7 November 2011
Catches & restrictions
       • Read-only file system
       • 30 seconds cap on http requests
       • The console hijacks the web
        processes
       • Processes limited to 300MB 512MB
        of RAM
       • Busted IP based SSL solution


Monday, 7 November 2011
Catches & restrictions
       • Read-only file system
       • 30 seconds cap on http requests
       • The console hijacks the web
        processes
       • Processes limited to 300MB 512MB
        of RAM
       • Busted IP based SSL solution
       • ... and for Australia, latency

Monday, 7 November 2011
Troubleshooting




Monday, 7 November 2011
Troubleshooting
                          • NewRelic: essencial to spot
                           bottlenecks
                            • database
                            • external services - paypal,
                             memcached
                            • application
                          • Heroku logs



Monday, 7 November 2011
Performance




Monday, 7 November 2011
Performance
       • ORMs are dumb




Monday, 7 November 2011
Performance
       • ORMs are dumb
       • Offload stats from main DB




Monday, 7 November 2011
Performance
       • ORMs are dumb
       • Offload stats from main DB
       • Cache everything but not until you really
          need it




Monday, 7 November 2011
The new Heroku:
                          Celadon Cedar




Monday, 7 November 2011
The new Heroku:
                          Celadon Cedar
                          New features (most in public beta)




Monday, 7 November 2011
The new Heroku:
                          Celadon Cedar
                          New features (most in public beta)
                           • The procfile




Monday, 7 November 2011
The new Heroku:
                          Celadon Cedar
                          New features (most in public beta)
                           • The procfile
                           • One-off processes




Monday, 7 November 2011
The new Heroku:
                          Celadon Cedar
                          New features (most in public beta)
                           • The procfile
                           • One-off processes
                           • Node.js/Clojure/Java/Python...




Monday, 7 November 2011
The new Heroku:
                          Celadon Cedar
                          New features (most in public beta)
                           • The procfile
                           • One-off processes
                           • Node.js/Clojure/Java/Python...
                           • New HTTP stack




Monday, 7 November 2011
The new Heroku:
                          Celadon Cedar
                          New features (most in public beta)
                           • The procfile
                           • One-off processes
                           • Node.js/Clojure/Java/Python...
                           • New HTTP stack
                           • The foreman gem




Monday, 7 November 2011
The new Heroku:
                          Celadon Cedar
                          New features (most in public beta)
                           • The procfile
                           • One-off processes
                           • Node.js/Clojure/Java/Python...
                           • New HTTP stack
                           • The foreman gem
                           • Strive for purism




Monday, 7 November 2011
The new Heroku:
                          Celadon Cedar
                          New features (most in public beta)
                           • The procfile
                           • One-off processes
                           • Node.js/Clojure/Java/Python...
                           • New HTTP stack
                           • The foreman gem
                           • Strive for purism
                           • In the horizon (no ETA) : multi-region
                           availability



Monday, 7 November 2011
The Procfile




Monday, 7 November 2011
The Procfile
                          Run anything




Monday, 7 November 2011
The Procfile
                          Run anything
                          Rails

                          web:      bundle exec rails server -p $PORT
                          worker:   bundle exec rake jobs:work


                          Node.js

                          web:      node web.js


                          Clojure

                          web:      lein run -m demo.web

Monday, 7 November 2011
Multi-Region
                          Availability




Monday, 7 November 2011
Multi-Region
                          Availability
                          • Not here yet...




Monday, 7 November 2011
Multi-Region
                          Availability
                          • Not here yet...
                          • DIY cloud availability




Monday, 7 November 2011
Back in late 2010




Monday, 7 November 2011
Back in late 2010
                          • 75% of Queensland under water




Monday, 7 November 2011
Back in late 2010
                          • 75% of Queensland under water
                          • 35 dead / 9 missing




Monday, 7 November 2011
Back in late 2010
                          • 75% of Queensland under water
                          • 35 dead / 9 missing
                          • A$ 30 billion in damages




Monday, 7 November 2011
Appeal to the people




Monday, 7 November 2011
Appeal to the people
       • QLD Government to run a
          telethon on Channel Nine




Monday, 7 November 2011
Appeal to the people
       • QLD Government to run a
          telethon on Channel Nine

       • Dry run of existing system showed
          problems




Monday, 7 November 2011
Appeal to the people
       • QLD Government to run a
          telethon on Channel Nine

       • Dry run of existing system showed
          problems

       • Backup plan?


Monday, 7 November 2011
We can help!




Monday, 7 November 2011
We can help!
                          • ThoughtWorks offered help




Monday, 7 November 2011
We can help!
                          • ThoughtWorks offered help
                          • We were at the beach




Monday, 7 November 2011
We can help!
                          • ThoughtWorks offered help
                          • We were at the beach
                          • and had 48hs to deliver!




Monday, 7 November 2011
We can help!
                          • ThoughtWorks offered help
                          • We were at the beach
                          • and had 48hs to deliver!




Monday, 7 November 2011
What?!




Monday, 7 November 2011
What?!

       • Payment gateway integration




Monday, 7 November 2011
What?!

       • Payment gateway integration
       • Donation receipts by email
          (thousands of them)




Monday, 7 November 2011
What?!

       • Payment gateway integration
       • Donation receipts by email
          (thousands of them)

       • Ability to scale based on load


Monday, 7 November 2011
user
      What?!
                                                    varnish




                                                    app
       • Payment gateway integration
       • Donation receipts by email
          (thousands of them)

       • Ability to scale based on load   payment
                                                     DB
                                                                mail
                                          gateway             gateway



Monday, 7 November 2011
Challenges




Monday, 7 November 2011
Challenges
                          • SSQ’s infra-structure was a no go




Monday, 7 November 2011
Challenges
                          • SSQ’s infra-structure was a no go
                          • Had to come up with a solution for
                           email sending as well




Monday, 7 November 2011
Challenges
                          • SSQ’s infra-structure was a no go
                          • Had to come up with a solution for
                           email sending as well

                          • Skepticism




Monday, 7 November 2011
Choices




Monday, 7 November 2011
Choices

       • AWS




Monday, 7 November 2011
Choices

       • AWS
        - Cheaper but require ops




Monday, 7 November 2011
Choices

       • AWS
        - Cheaper but require ops
       • Heroku




Monday, 7 November 2011
Choices

       • AWS
        - Cheaper but require ops
       • Heroku
        - PaaS - no/less ops



Monday, 7 November 2011
Choices

       • AWS
        - Cheaper but require ops
       • Heroku
        - PaaS - no/less ops
        - As simple as a git push


Monday, 7 November 2011
Choices

       • AWS
        - Cheaper but require ops
       • Heroku
        - PaaS - no/less ops
        - As simple as a git push
        - Focus on your app

Monday, 7 November 2011
Choices

       • AWS
        - Cheaper but require ops
       • Heroku
        - PaaS - no/less ops
        - As simple as a git push
        - Focus on your app
        - Dozens of add-ons out of the box

Monday, 7 November 2011
Choices

       • AWS
        - Cheaper but require ops
       • Heroku
        - PaaS - no/less ops
        - As simple as a git push
        - Focus on your app
        - Dozens of add-ons out of the box
        - $0.00 upfront cost
Monday, 7 November 2011
Choices

       • AWS
        - Cheaper but require ops
       • Heroku
        - PaaS - no/less ops
        - As simple as a git push
        - Focus on your app
        - Dozens of add-ons out of the box
        - $0.00 upfront cost
Monday, 7 November 2011
One last ingredient...




                          Ben Barnard, Phillip Calçado and myself

Monday, 7 November 2011
One last ingredient...


                                                                    An awesome team, committed and
                                                                    having fun on a weekend :)




                          Ben Barnard, Phillip Calçado and myself

Monday, 7 November 2011
The telethon




Monday, 7 November 2011
The telethon

       • Live on channel 9 for 2 hours




Monday, 7 November 2011
The telethon

       • Live on channel 9 for 2 hours
       • SSQ’s app went down at the very
          start




Monday, 7 November 2011
The telethon

       • Live on channel 9 for 2 hours
       • SSQ’s app went down at the very
          start

       • The “backup” plan was now the
          main app

Monday, 7 November 2011
What we achieved




Monday, 7 November 2011
What we achieved
                          Despite all skepticism we...




Monday, 7 November 2011
What we achieved
                          Despite all skepticism we...

                          • Developed a production ready
                           donation app using Ruby on Rails




Monday, 7 November 2011
What we achieved
                          Despite all skepticism we...

                          • Developed a production ready
                           donation app using Ruby on Rails

                          • Leveraged PaaS to get ops out of
                           the way




Monday, 7 November 2011
What we achieved
                          Despite all skepticism we...

                          • Developed a production ready
                           donation app using Ruby on Rails

                          • Leveraged PaaS to get ops out of
                           the way

                          • Generated over A$ 2 million in
                           donations during the telethon



Monday, 7 November 2011
What we achieved
                          Despite all skepticism we...

                          • Developed a production ready
                           donation app using Ruby on Rails

                          • Leveraged PaaS to get ops out of
                           the way

                          • Generated over A$ 2 million in
                           donations during the telethon

                          • And over A$ 38 million since then

Monday, 7 November 2011
What we achieved
                          Despite all skepticism we...

                          • Developed a production ready
                           donation app using Ruby on Rails

                          • Leveraged PaaS to get ops out of
                           the way

                          • Generated over A$ 2 million in
                           donations during the telethon

                          • And over A$ 38 million since then
                                           ...all in a 48 hour effort
Monday, 7 November 2011
Anyone still thinks ‘the cloud’ isn’t for
                     serious stuff?


Monday, 7 November 2011
Thanks for listening!
                                  Questions?

                                    @leonardo_borges
                                  www.leonardoborges.com




            Leonardo Borges


Monday, 7 November 2011

Más contenido relacionado

Similar a Clouds against the Floods (RubyConfBR2011)

Content focused web design
Content focused web designContent focused web design
Content focused web designEddie Monge
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSCaridy Patino
 
Bonfire... How'd You Do That?! - AtlasCamp 2011
Bonfire... How'd You Do That?! - AtlasCamp 2011Bonfire... How'd You Do That?! - AtlasCamp 2011
Bonfire... How'd You Do That?! - AtlasCamp 2011Atlassian
 
The Easy Way - Plone Conference 2011
The Easy Way - Plone Conference 2011The Easy Way - Plone Conference 2011
The Easy Way - Plone Conference 2011Mikko Ohtamaa
 
MongoDB at Sailthru: Scaling and Schema Design
MongoDB at Sailthru: Scaling and Schema DesignMongoDB at Sailthru: Scaling and Schema Design
MongoDB at Sailthru: Scaling and Schema DesignDATAVERSITY
 
Image and Music: Processing plus Pure Data with libpd library
Image and Music: Processing plus Pure Data with libpd libraryImage and Music: Processing plus Pure Data with libpd library
Image and Music: Processing plus Pure Data with libpd libraryPETER KIRN
 
Layer 7 denial of services attack mitigation
Layer 7 denial of services attack mitigationLayer 7 denial of services attack mitigation
Layer 7 denial of services attack mitigationAmmar WK
 
Atlassian RoadTrip 2011 Slide Deck
Atlassian RoadTrip 2011 Slide DeckAtlassian RoadTrip 2011 Slide Deck
Atlassian RoadTrip 2011 Slide DeckAtlassian
 
Building Languages for the JVM - StarTechConf 2011
Building Languages for the JVM - StarTechConf 2011Building Languages for the JVM - StarTechConf 2011
Building Languages for the JVM - StarTechConf 2011Charles Nutter
 
Deploying large payloads at scale
Deploying large payloads at scaleDeploying large payloads at scale
Deploying large payloads at scaleramonvanalteren
 
Sustainable Theming with Fusion - DCCO 2011
Sustainable Theming with Fusion - DCCO 2011Sustainable Theming with Fusion - DCCO 2011
Sustainable Theming with Fusion - DCCO 2011sheenadonnelly
 
UCLUG TorqueBox - 03/08/2011
UCLUG TorqueBox - 03/08/2011UCLUG TorqueBox - 03/08/2011
UCLUG TorqueBox - 03/08/2011tobiascrawley
 
Oop design magma rails 2011
Oop design   magma rails 2011Oop design   magma rails 2011
Oop design magma rails 2011MagmaConf
 
3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time 3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time Pascal Rettig
 
Deploying on the cutting edge
Deploying on the cutting edgeDeploying on the cutting edge
Deploying on the cutting edgeericholscher
 
JavaSE - The road forward
JavaSE - The road forwardJavaSE - The road forward
JavaSE - The road forwardeug3n_cojocaru
 

Similar a Clouds against the Floods (RubyConfBR2011) (20)

Content focused web design
Content focused web designContent focused web design
Content focused web design
 
Caridy patino - node-js
Caridy patino - node-jsCaridy patino - node-js
Caridy patino - node-js
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JS
 
Bonfire... How'd You Do That?! - AtlasCamp 2011
Bonfire... How'd You Do That?! - AtlasCamp 2011Bonfire... How'd You Do That?! - AtlasCamp 2011
Bonfire... How'd You Do That?! - AtlasCamp 2011
 
Iwmn architecture
Iwmn architectureIwmn architecture
Iwmn architecture
 
The Easy Way - Plone Conference 2011
The Easy Way - Plone Conference 2011The Easy Way - Plone Conference 2011
The Easy Way - Plone Conference 2011
 
MongoDB at Sailthru: Scaling and Schema Design
MongoDB at Sailthru: Scaling and Schema DesignMongoDB at Sailthru: Scaling and Schema Design
MongoDB at Sailthru: Scaling and Schema Design
 
Image and Music: Processing plus Pure Data with libpd library
Image and Music: Processing plus Pure Data with libpd libraryImage and Music: Processing plus Pure Data with libpd library
Image and Music: Processing plus Pure Data with libpd library
 
Layer 7 denial of services attack mitigation
Layer 7 denial of services attack mitigationLayer 7 denial of services attack mitigation
Layer 7 denial of services attack mitigation
 
Atlassian RoadTrip 2011 Slide Deck
Atlassian RoadTrip 2011 Slide DeckAtlassian RoadTrip 2011 Slide Deck
Atlassian RoadTrip 2011 Slide Deck
 
Building Languages for the JVM - StarTechConf 2011
Building Languages for the JVM - StarTechConf 2011Building Languages for the JVM - StarTechConf 2011
Building Languages for the JVM - StarTechConf 2011
 
Deploying large payloads at scale
Deploying large payloads at scaleDeploying large payloads at scale
Deploying large payloads at scale
 
Sustainable Theming with Fusion - DCCO 2011
Sustainable Theming with Fusion - DCCO 2011Sustainable Theming with Fusion - DCCO 2011
Sustainable Theming with Fusion - DCCO 2011
 
Extending rails
Extending railsExtending rails
Extending rails
 
UCLUG TorqueBox - 03/08/2011
UCLUG TorqueBox - 03/08/2011UCLUG TorqueBox - 03/08/2011
UCLUG TorqueBox - 03/08/2011
 
Oop design magma rails 2011
Oop design   magma rails 2011Oop design   magma rails 2011
Oop design magma rails 2011
 
3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time 3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time
 
CSS Power Tools
CSS Power ToolsCSS Power Tools
CSS Power Tools
 
Deploying on the cutting edge
Deploying on the cutting edgeDeploying on the cutting edge
Deploying on the cutting edge
 
JavaSE - The road forward
JavaSE - The road forwardJavaSE - The road forward
JavaSE - The road forward
 

Más de Leonardo Borges

Realtime collaboration with Clojure - EuroClojure - Barcelona, 2015
Realtime collaboration with Clojure - EuroClojure - Barcelona, 2015Realtime collaboration with Clojure - EuroClojure - Barcelona, 2015
Realtime collaboration with Clojure - EuroClojure - Barcelona, 2015Leonardo Borges
 
Parametricity - #cljsyd - May, 2015
Parametricity - #cljsyd - May, 2015Parametricity - #cljsyd - May, 2015
Parametricity - #cljsyd - May, 2015Leonardo Borges
 
From Java to Parellel Clojure - Clojure South 2019
From Java to Parellel Clojure - Clojure South 2019From Java to Parellel Clojure - Clojure South 2019
From Java to Parellel Clojure - Clojure South 2019Leonardo Borges
 
The algebra of library design
The algebra of library designThe algebra of library design
The algebra of library designLeonardo Borges
 
Futures e abstração - QCon São Paulo 2015
Futures e abstração - QCon São Paulo 2015Futures e abstração - QCon São Paulo 2015
Futures e abstração - QCon São Paulo 2015Leonardo Borges
 
Functional Reactive Programming / Compositional Event Systems
Functional Reactive Programming / Compositional Event SystemsFunctional Reactive Programming / Compositional Event Systems
Functional Reactive Programming / Compositional Event SystemsLeonardo Borges
 
High Performance web apps in Om, React and ClojureScript
High Performance web apps in Om, React and ClojureScriptHigh Performance web apps in Om, React and ClojureScript
High Performance web apps in Om, React and ClojureScriptLeonardo Borges
 
Programação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncronoProgramação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncronoLeonardo Borges
 
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013Leonardo Borges
 
Intro to Clojure's core.async
Intro to Clojure's core.asyncIntro to Clojure's core.async
Intro to Clojure's core.asyncLeonardo Borges
 
Functional Reactive Programming in Clojurescript
Functional Reactive Programming in ClojurescriptFunctional Reactive Programming in Clojurescript
Functional Reactive Programming in ClojurescriptLeonardo Borges
 
Clojure/West 2013 in 30 mins
Clojure/West 2013 in 30 minsClojure/West 2013 in 30 mins
Clojure/West 2013 in 30 minsLeonardo Borges
 
The many facets of code reuse in JavaScript
The many facets of code reuse in JavaScriptThe many facets of code reuse in JavaScript
The many facets of code reuse in JavaScriptLeonardo Borges
 
Heroku addons development - Nov 2011
Heroku addons development - Nov 2011Heroku addons development - Nov 2011
Heroku addons development - Nov 2011Leonardo Borges
 
Clouds Against the Floods
Clouds Against the FloodsClouds Against the Floods
Clouds Against the FloodsLeonardo Borges
 

Más de Leonardo Borges (19)

Realtime collaboration with Clojure - EuroClojure - Barcelona, 2015
Realtime collaboration with Clojure - EuroClojure - Barcelona, 2015Realtime collaboration with Clojure - EuroClojure - Barcelona, 2015
Realtime collaboration with Clojure - EuroClojure - Barcelona, 2015
 
Parametricity - #cljsyd - May, 2015
Parametricity - #cljsyd - May, 2015Parametricity - #cljsyd - May, 2015
Parametricity - #cljsyd - May, 2015
 
From Java to Parellel Clojure - Clojure South 2019
From Java to Parellel Clojure - Clojure South 2019From Java to Parellel Clojure - Clojure South 2019
From Java to Parellel Clojure - Clojure South 2019
 
The algebra of library design
The algebra of library designThe algebra of library design
The algebra of library design
 
Futures e abstração - QCon São Paulo 2015
Futures e abstração - QCon São Paulo 2015Futures e abstração - QCon São Paulo 2015
Futures e abstração - QCon São Paulo 2015
 
Functional Reactive Programming / Compositional Event Systems
Functional Reactive Programming / Compositional Event SystemsFunctional Reactive Programming / Compositional Event Systems
Functional Reactive Programming / Compositional Event Systems
 
High Performance web apps in Om, React and ClojureScript
High Performance web apps in Om, React and ClojureScriptHigh Performance web apps in Om, React and ClojureScript
High Performance web apps in Om, React and ClojureScript
 
Programação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncronoProgramação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncrono
 
Monads in Clojure
Monads in ClojureMonads in Clojure
Monads in Clojure
 
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
 
Intro to Clojure's core.async
Intro to Clojure's core.asyncIntro to Clojure's core.async
Intro to Clojure's core.async
 
Functional Reactive Programming in Clojurescript
Functional Reactive Programming in ClojurescriptFunctional Reactive Programming in Clojurescript
Functional Reactive Programming in Clojurescript
 
Clojure/West 2013 in 30 mins
Clojure/West 2013 in 30 minsClojure/West 2013 in 30 mins
Clojure/West 2013 in 30 mins
 
The many facets of code reuse in JavaScript
The many facets of code reuse in JavaScriptThe many facets of code reuse in JavaScript
The many facets of code reuse in JavaScript
 
Heroku addons development - Nov 2011
Heroku addons development - Nov 2011Heroku addons development - Nov 2011
Heroku addons development - Nov 2011
 
Clouds Against the Floods
Clouds Against the FloodsClouds Against the Floods
Clouds Against the Floods
 
Arel in Rails 3
Arel in Rails 3Arel in Rails 3
Arel in Rails 3
 
Testing with Spring
Testing with SpringTesting with Spring
Testing with Spring
 
JRuby in The Enterprise
JRuby in The EnterpriseJRuby in The Enterprise
JRuby in The Enterprise
 

Último

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
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
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
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
 
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
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
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
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 

Último (20)

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
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...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
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
 
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
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 

Clouds against the Floods (RubyConfBR2011)

  • 1. Clouds against the floods or how RoR saved the day in Australia Leonardo Borges Monday, 7 November 2011
  • 2. self slide • ThoughtWorker in Sydney, Australia • Programming languages enthusiast • Blogger - leonardoborges.com • Twitter blabbermouth @leonardo_borges • Seldom OSS contributor - github.com/ leonardoborges Monday, 7 November 2011
  • 3. self slide • ThoughtWorker in Sydney, Australia • Programming languages enthusiast • Blogger - leonardoborges.com • Twitter blabbermouth @leonardo_borges • Seldom OSS contributor - github.com/ leonardoborges ...and also • Heavy Metal guitarist • Singer • Overall adrenaline junkie Monday, 7 November 2011
  • 4. Let’s step back for a sec... Monday, 7 November 2011
  • 5. Heroku, an overview Monday, 7 November 2011
  • 6. Heroku, an overview Basic concepts Monday, 7 November 2011
  • 7. Heroku, an overview Basic concepts • PaaS Monday, 7 November 2011
  • 8. Heroku, an overview Basic concepts • PaaS • Git based deployment cycle Monday, 7 November 2011
  • 9. Heroku, an overview Basic concepts • PaaS • Git based deployment cycle • Dynos (web processes) Monday, 7 November 2011
  • 10. Heroku, an overview Basic concepts • PaaS • Git based deployment cycle • Dynos (web processes) • Workers (background processes) Monday, 7 November 2011
  • 11. Heroku, an overview Basic concepts • PaaS • Git based deployment cycle • Dynos (web processes) • Workers (background processes) • Cron Monday, 7 November 2011
  • 12. Simplistic view of a web request request routing dyno Monday, 7 November 2011
  • 13. Simplistic view of a web request request routing dyno dyno dyno dyno dyno dyno dyno dyno dyno dyno dyno dyno dyno dyno Monday, 7 November 2011
  • 14. A typical setup Monday, 7 November 2011
  • 15. A typical setup Environments Monday, 7 November 2011
  • 16. A typical setup Environments • staging, showcase and production Monday, 7 November 2011
  • 17. A typical setup Environments • staging, showcase and production Monday, 7 November 2011
  • 18. A typical setup Environments • staging, showcase and production Monday, 7 November 2011
  • 19. A typical setup Environments • staging, showcase and production Branching strategy • develop • master (tagged release candidates) Monday, 7 November 2011
  • 20. But before you get too excited... Monday, 7 November 2011
  • 22. Catches & restrictions • Read-only file system Monday, 7 November 2011
  • 23. Catches & restrictions • Read-only file system • 30 seconds cap on http requests Monday, 7 November 2011
  • 24. Catches & restrictions • Read-only file system • 30 seconds cap on http requests • The console hijacks the web processes Monday, 7 November 2011
  • 25. Catches & restrictions • Read-only file system • 30 seconds cap on http requests • The console hijacks the web processes • Processes limited to 300MB 512MB of RAM Monday, 7 November 2011
  • 26. Catches & restrictions • Read-only file system • 30 seconds cap on http requests • The console hijacks the web processes • Processes limited to 300MB 512MB of RAM • Busted IP based SSL solution Monday, 7 November 2011
  • 27. Catches & restrictions • Read-only file system • 30 seconds cap on http requests • The console hijacks the web processes • Processes limited to 300MB 512MB of RAM • Busted IP based SSL solution • ... and for Australia, latency Monday, 7 November 2011
  • 29. Troubleshooting • NewRelic: essencial to spot bottlenecks • database • external services - paypal, memcached • application • Heroku logs Monday, 7 November 2011
  • 31. Performance • ORMs are dumb Monday, 7 November 2011
  • 32. Performance • ORMs are dumb • Offload stats from main DB Monday, 7 November 2011
  • 33. Performance • ORMs are dumb • Offload stats from main DB • Cache everything but not until you really need it Monday, 7 November 2011
  • 34. The new Heroku: Celadon Cedar Monday, 7 November 2011
  • 35. The new Heroku: Celadon Cedar New features (most in public beta) Monday, 7 November 2011
  • 36. The new Heroku: Celadon Cedar New features (most in public beta) • The procfile Monday, 7 November 2011
  • 37. The new Heroku: Celadon Cedar New features (most in public beta) • The procfile • One-off processes Monday, 7 November 2011
  • 38. The new Heroku: Celadon Cedar New features (most in public beta) • The procfile • One-off processes • Node.js/Clojure/Java/Python... Monday, 7 November 2011
  • 39. The new Heroku: Celadon Cedar New features (most in public beta) • The procfile • One-off processes • Node.js/Clojure/Java/Python... • New HTTP stack Monday, 7 November 2011
  • 40. The new Heroku: Celadon Cedar New features (most in public beta) • The procfile • One-off processes • Node.js/Clojure/Java/Python... • New HTTP stack • The foreman gem Monday, 7 November 2011
  • 41. The new Heroku: Celadon Cedar New features (most in public beta) • The procfile • One-off processes • Node.js/Clojure/Java/Python... • New HTTP stack • The foreman gem • Strive for purism Monday, 7 November 2011
  • 42. The new Heroku: Celadon Cedar New features (most in public beta) • The procfile • One-off processes • Node.js/Clojure/Java/Python... • New HTTP stack • The foreman gem • Strive for purism • In the horizon (no ETA) : multi-region availability Monday, 7 November 2011
  • 43. The Procfile Monday, 7 November 2011
  • 44. The Procfile Run anything Monday, 7 November 2011
  • 45. The Procfile Run anything Rails web: bundle exec rails server -p $PORT worker: bundle exec rake jobs:work Node.js web: node web.js Clojure web: lein run -m demo.web Monday, 7 November 2011
  • 46. Multi-Region Availability Monday, 7 November 2011
  • 47. Multi-Region Availability • Not here yet... Monday, 7 November 2011
  • 48. Multi-Region Availability • Not here yet... • DIY cloud availability Monday, 7 November 2011
  • 49. Back in late 2010 Monday, 7 November 2011
  • 50. Back in late 2010 • 75% of Queensland under water Monday, 7 November 2011
  • 51. Back in late 2010 • 75% of Queensland under water • 35 dead / 9 missing Monday, 7 November 2011
  • 52. Back in late 2010 • 75% of Queensland under water • 35 dead / 9 missing • A$ 30 billion in damages Monday, 7 November 2011
  • 53. Appeal to the people Monday, 7 November 2011
  • 54. Appeal to the people • QLD Government to run a telethon on Channel Nine Monday, 7 November 2011
  • 55. Appeal to the people • QLD Government to run a telethon on Channel Nine • Dry run of existing system showed problems Monday, 7 November 2011
  • 56. Appeal to the people • QLD Government to run a telethon on Channel Nine • Dry run of existing system showed problems • Backup plan? Monday, 7 November 2011
  • 57. We can help! Monday, 7 November 2011
  • 58. We can help! • ThoughtWorks offered help Monday, 7 November 2011
  • 59. We can help! • ThoughtWorks offered help • We were at the beach Monday, 7 November 2011
  • 60. We can help! • ThoughtWorks offered help • We were at the beach • and had 48hs to deliver! Monday, 7 November 2011
  • 61. We can help! • ThoughtWorks offered help • We were at the beach • and had 48hs to deliver! Monday, 7 November 2011
  • 63. What?! • Payment gateway integration Monday, 7 November 2011
  • 64. What?! • Payment gateway integration • Donation receipts by email (thousands of them) Monday, 7 November 2011
  • 65. What?! • Payment gateway integration • Donation receipts by email (thousands of them) • Ability to scale based on load Monday, 7 November 2011
  • 66. user What?! varnish app • Payment gateway integration • Donation receipts by email (thousands of them) • Ability to scale based on load payment DB mail gateway gateway Monday, 7 November 2011
  • 68. Challenges • SSQ’s infra-structure was a no go Monday, 7 November 2011
  • 69. Challenges • SSQ’s infra-structure was a no go • Had to come up with a solution for email sending as well Monday, 7 November 2011
  • 70. Challenges • SSQ’s infra-structure was a no go • Had to come up with a solution for email sending as well • Skepticism Monday, 7 November 2011
  • 72. Choices • AWS Monday, 7 November 2011
  • 73. Choices • AWS - Cheaper but require ops Monday, 7 November 2011
  • 74. Choices • AWS - Cheaper but require ops • Heroku Monday, 7 November 2011
  • 75. Choices • AWS - Cheaper but require ops • Heroku - PaaS - no/less ops Monday, 7 November 2011
  • 76. Choices • AWS - Cheaper but require ops • Heroku - PaaS - no/less ops - As simple as a git push Monday, 7 November 2011
  • 77. Choices • AWS - Cheaper but require ops • Heroku - PaaS - no/less ops - As simple as a git push - Focus on your app Monday, 7 November 2011
  • 78. Choices • AWS - Cheaper but require ops • Heroku - PaaS - no/less ops - As simple as a git push - Focus on your app - Dozens of add-ons out of the box Monday, 7 November 2011
  • 79. Choices • AWS - Cheaper but require ops • Heroku - PaaS - no/less ops - As simple as a git push - Focus on your app - Dozens of add-ons out of the box - $0.00 upfront cost Monday, 7 November 2011
  • 80. Choices • AWS - Cheaper but require ops • Heroku - PaaS - no/less ops - As simple as a git push - Focus on your app - Dozens of add-ons out of the box - $0.00 upfront cost Monday, 7 November 2011
  • 81. One last ingredient... Ben Barnard, Phillip Calçado and myself Monday, 7 November 2011
  • 82. One last ingredient... An awesome team, committed and having fun on a weekend :) Ben Barnard, Phillip Calçado and myself Monday, 7 November 2011
  • 83. The telethon Monday, 7 November 2011
  • 84. The telethon • Live on channel 9 for 2 hours Monday, 7 November 2011
  • 85. The telethon • Live on channel 9 for 2 hours • SSQ’s app went down at the very start Monday, 7 November 2011
  • 86. The telethon • Live on channel 9 for 2 hours • SSQ’s app went down at the very start • The “backup” plan was now the main app Monday, 7 November 2011
  • 87. What we achieved Monday, 7 November 2011
  • 88. What we achieved Despite all skepticism we... Monday, 7 November 2011
  • 89. What we achieved Despite all skepticism we... • Developed a production ready donation app using Ruby on Rails Monday, 7 November 2011
  • 90. What we achieved Despite all skepticism we... • Developed a production ready donation app using Ruby on Rails • Leveraged PaaS to get ops out of the way Monday, 7 November 2011
  • 91. What we achieved Despite all skepticism we... • Developed a production ready donation app using Ruby on Rails • Leveraged PaaS to get ops out of the way • Generated over A$ 2 million in donations during the telethon Monday, 7 November 2011
  • 92. What we achieved Despite all skepticism we... • Developed a production ready donation app using Ruby on Rails • Leveraged PaaS to get ops out of the way • Generated over A$ 2 million in donations during the telethon • And over A$ 38 million since then Monday, 7 November 2011
  • 93. What we achieved Despite all skepticism we... • Developed a production ready donation app using Ruby on Rails • Leveraged PaaS to get ops out of the way • Generated over A$ 2 million in donations during the telethon • And over A$ 38 million since then ...all in a 48 hour effort Monday, 7 November 2011
  • 94. Anyone still thinks ‘the cloud’ isn’t for serious stuff? Monday, 7 November 2011
  • 95. Thanks for listening! Questions? @leonardo_borges www.leonardoborges.com Leonardo Borges Monday, 7 November 2011