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

More Related Content

Similar to 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
 
Generating Print Sales Leads with LinkedIn session 1
Generating Print Sales Leads with LinkedIn session 1Generating Print Sales Leads with LinkedIn session 1
Generating Print Sales Leads with LinkedIn session 1Joe Kern
 
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
 

Similar to 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
 
Generating Print Sales Leads with LinkedIn session 1
Generating Print Sales Leads with LinkedIn session 1Generating Print Sales Leads with LinkedIn session 1
Generating Print Sales Leads with LinkedIn session 1
 
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
 

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

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

Recently uploaded

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"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
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
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
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Recently uploaded (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"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...
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
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...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
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
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

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