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

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 

Recently uploaded (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 

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