SlideShare a Scribd company logo
1 of 20
Download to read offline
Tuesday, October 13, 2009
Ship your App in a Container
            JRuby on Google App Engine
            John Woodell
            Oct 5, 2009




              2



Tuesday, October 13, 2009
Rails Deployment Roadmap
            • 2004 - FastCGI on Apache or Lighttpd
                            “a rocket that sometimes blows up in strange ways”
            • 2006 - Mongrel clusters behind Apache mod_proxy
                            “high throughput, but requires multiple moving parts”
            • 2008 - Phusion Passenger on Apache
                            “simply upload files, rack-based, REE/COW”
            • 2010 - Rails3 or Sinatra + DataMapper in a servlet container
                            “powerful/portable/scalable, rack-based, JRuby”




              3



Tuesday, October 13, 2009
Why JRuby?
            • Outperforms MRI in many cases... 2x to 10x
            • Gem extensions written in Java (no more segfaults)
            • A wealth of integration options available
            • Already works on App Engine with supported APIs




              4



Tuesday, October 13, 2009
Why Rails3?
            • More modular, load only what you need for each request
            • Intelligent gem management and deployment tools
            • First-class integrations with “other” ORMs like DataMapper
            • Better routing and Rack integration
            • Better Javascript integration and options
            • Rails conventions!




              5



Tuesday, October 13, 2009
Why Sinatra?
            • No learning curve... a simple and elegant DSL
            • Some data-driven apps don’t require MVC or ActionView
            • No need to extract the components we can’t use
            • New application instances can spin up quickly




              6



Tuesday, October 13, 2009
Why DataMapper?
            • Data mapped in your model, auto-migrations or no migrations
            • Text fields treated like associations, lazy-load by default
            • Create concise queries without using method_missing
            • Supports validations and legacy AR finders
            • Already works with dm-appengine wrapper




              7



Tuesday, October 13, 2009
Why a Servlet Container?
            • Various app servers to choose from
            • Everything you need in in the container
            • JRuby-Rack dispatches to Rack
               while providing access to servlet features
            • Access to Google App Engine APIs for Java
               via Ruby APIs that are feature compatible
            • Our tools allow you to develop in the container
               with the ability to integrate Java servlets




              8



Tuesday, October 13, 2009
JRuby on App Engine
              9



Tuesday, October 13, 2009
Install it Now

                    sudo gem install google-appengine



                            Everything you need installs as gems


              10



Tuesday, October 13, 2009
What is Google App Engine?
            • A cloud-computing platform
            • We provide the container and services
            • Run your web apps on Google’s infrastructure
            • Pay-as-you-go, with free quota to get started




              11



Tuesday, October 13, 2009
App Engine JRuby APIs
            • AppEngine::Users
            • AppEngine::Datastore
            • AppEngine::Memcache
            • AppEngine::Mail
            • AppEngine::URLFetch
            • AppEngine::Images
            • AppEngine::Logger
            • AppEngine::Testing
            • AppEngine::XMPP
            • AppEngine::Labs::TaskQueue



              12



Tuesday, October 13, 2009
Dev_AppServer
            • Customized Jetty server
            • Local implementation of services
                   – LRU memcache
                   – Disk-backed datastore
                   – HttpClient-backed URLFetch
            • Emulates the production environment
                   – Sandbox restrictions may be inconsistent,
                    so run tests on production servers as well




              13



Tuesday, October 13, 2009
Deployment
            • Your app lives at
              – <app_id>.appspot.com, or
              – Custom domain with Google Apps
            • Deploying uploads
              – Static files
              – Resource files
              – Other metadata (datastore indexes, cron jobs)
            • Admin Console
                   – dashboards
                   – manage multiple versions
                   – view logs



              14



Tuesday, October 13, 2009
App Engine Architecture
                                                          Incoming Requests



                    Load                    App Engine     App Engine            App Engine
                   Balancer                  Front End      Front End             Front End




                                            AppServer      AppServer             AppServer



                                                                        Other Google
                            AppServer                                   Infrastructure

                                        API Layer                       - Bigtable

                                                                        - Google Accounts

                                                                        - Memcache
                               App        App       App
                                                                        - Image manipulation


              15



Tuesday, October 13, 2009
WhiteHouse.gov/openforquestions




              16



Tuesday, October 13, 2009
Quotas and Billing
                     Resource        Provided Free      Additional Cost
                            CPU      6.5 hours/day        $0.10/hour


                   Bandwidth In       1GByte/day         $0.10/GByte

               Bandwidth Out          1GByte/day         $0.12/GByte

                   Stored Data           1 GB           $0.005/GB-day

                   Emails sent     2000/day to users    $0.0001/email
                                  50000/day to admins

              17



Tuesday, October 13, 2009
Demo

        run lambda { |env| [200, {}, 'Aloha'] }




              18



Tuesday, October 13, 2009
Resources
            • John Woodell, woodie@google.com
            • Google App Engine for JRuby
                   – http://code.google.com/p/appengine-jruby/
            • Google Group
                   – http://groups.google.com/group/appengine-jruby
            • Blog: JRuby on App Engine Blog
                   – http://jruby-appengine.blogspot.com/




              19



Tuesday, October 13, 2009
Tuesday, October 13, 2009

More Related Content

Similar to Aloha on-rails-2009

Javaedge 2010-cschalk
Javaedge 2010-cschalkJavaedge 2010-cschalk
Javaedge 2010-cschalk
Chris Schalk
 
Google appenginejava.ppt
Google appenginejava.pptGoogle appenginejava.ppt
Google appenginejava.ppt
Young Alista
 
Improving Your Heroku App Performance with Asset CDN and Unicorn
Improving Your Heroku App Performance with Asset CDN and UnicornImproving Your Heroku App Performance with Asset CDN and Unicorn
Improving Your Heroku App Performance with Asset CDN and Unicorn
Simon Bagreev
 

Similar to Aloha on-rails-2009 (20)

Don Schwarz App Engine Talk
Don Schwarz App Engine TalkDon Schwarz App Engine Talk
Don Schwarz App Engine Talk
 
App Engine Meetup
App Engine MeetupApp Engine Meetup
App Engine Meetup
 
What is Google App Engine?
What is Google App Engine?What is Google App Engine?
What is Google App Engine?
 
Gaelyk - Groovy Grails eXchange 2010 - Guillaume Laforge
Gaelyk - Groovy Grails eXchange 2010 - Guillaume LaforgeGaelyk - Groovy Grails eXchange 2010 - Guillaume Laforge
Gaelyk - Groovy Grails eXchange 2010 - Guillaume Laforge
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
 
2011 June - Singapore GTUG presentation. App Engine program update + intro to Go
2011 June - Singapore GTUG presentation. App Engine program update + intro to Go2011 June - Singapore GTUG presentation. App Engine program update + intro to Go
2011 June - Singapore GTUG presentation. App Engine program update + intro to Go
 
Google App Engine - September 17 2009
Google App Engine - September 17 2009Google App Engine - September 17 2009
Google App Engine - September 17 2009
 
Introduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform TechnologiesIntroduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform Technologies
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
 
Javaedge 2010-cschalk
Javaedge 2010-cschalkJavaedge 2010-cschalk
Javaedge 2010-cschalk
 
One Page, One App -or- How to Write a Crawlable Single Page Web App
One Page, One App -or- How to Write a Crawlable Single Page Web AppOne Page, One App -or- How to Write a Crawlable Single Page Web App
One Page, One App -or- How to Write a Crawlable Single Page Web App
 
HTML5 and Google Chrome - DevFest09
HTML5 and Google Chrome - DevFest09HTML5 and Google Chrome - DevFest09
HTML5 and Google Chrome - DevFest09
 
Cloud Platforms for Java
Cloud Platforms for JavaCloud Platforms for Java
Cloud Platforms for Java
 
Application Architecture For The Cloud
Application Architecture For The CloudApplication Architecture For The Cloud
Application Architecture For The Cloud
 
App engine feature
App engine featureApp engine feature
App engine feature
 
Devfest09 App Engine Java
Devfest09  App Engine  JavaDevfest09  App Engine  Java
Devfest09 App Engine Java
 
What's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for BusinessWhat's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for Business
 
Google appenginejava.ppt
Google appenginejava.pptGoogle appenginejava.ppt
Google appenginejava.ppt
 
Improving Your Heroku App Performance with Asset CDN and Unicorn
Improving Your Heroku App Performance with Asset CDN and UnicornImproving Your Heroku App Performance with Asset CDN and Unicorn
Improving Your Heroku App Performance with Asset CDN and Unicorn
 
The PRPL Pattern
The PRPL PatternThe PRPL Pattern
The PRPL Pattern
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 

Aloha on-rails-2009

  • 2. Ship your App in a Container JRuby on Google App Engine John Woodell Oct 5, 2009 2 Tuesday, October 13, 2009
  • 3. Rails Deployment Roadmap • 2004 - FastCGI on Apache or Lighttpd “a rocket that sometimes blows up in strange ways” • 2006 - Mongrel clusters behind Apache mod_proxy “high throughput, but requires multiple moving parts” • 2008 - Phusion Passenger on Apache “simply upload files, rack-based, REE/COW” • 2010 - Rails3 or Sinatra + DataMapper in a servlet container “powerful/portable/scalable, rack-based, JRuby” 3 Tuesday, October 13, 2009
  • 4. Why JRuby? • Outperforms MRI in many cases... 2x to 10x • Gem extensions written in Java (no more segfaults) • A wealth of integration options available • Already works on App Engine with supported APIs 4 Tuesday, October 13, 2009
  • 5. Why Rails3? • More modular, load only what you need for each request • Intelligent gem management and deployment tools • First-class integrations with “other” ORMs like DataMapper • Better routing and Rack integration • Better Javascript integration and options • Rails conventions! 5 Tuesday, October 13, 2009
  • 6. Why Sinatra? • No learning curve... a simple and elegant DSL • Some data-driven apps don’t require MVC or ActionView • No need to extract the components we can’t use • New application instances can spin up quickly 6 Tuesday, October 13, 2009
  • 7. Why DataMapper? • Data mapped in your model, auto-migrations or no migrations • Text fields treated like associations, lazy-load by default • Create concise queries without using method_missing • Supports validations and legacy AR finders • Already works with dm-appengine wrapper 7 Tuesday, October 13, 2009
  • 8. Why a Servlet Container? • Various app servers to choose from • Everything you need in in the container • JRuby-Rack dispatches to Rack while providing access to servlet features • Access to Google App Engine APIs for Java via Ruby APIs that are feature compatible • Our tools allow you to develop in the container with the ability to integrate Java servlets 8 Tuesday, October 13, 2009
  • 9. JRuby on App Engine 9 Tuesday, October 13, 2009
  • 10. Install it Now sudo gem install google-appengine Everything you need installs as gems 10 Tuesday, October 13, 2009
  • 11. What is Google App Engine? • A cloud-computing platform • We provide the container and services • Run your web apps on Google’s infrastructure • Pay-as-you-go, with free quota to get started 11 Tuesday, October 13, 2009
  • 12. App Engine JRuby APIs • AppEngine::Users • AppEngine::Datastore • AppEngine::Memcache • AppEngine::Mail • AppEngine::URLFetch • AppEngine::Images • AppEngine::Logger • AppEngine::Testing • AppEngine::XMPP • AppEngine::Labs::TaskQueue 12 Tuesday, October 13, 2009
  • 13. Dev_AppServer • Customized Jetty server • Local implementation of services – LRU memcache – Disk-backed datastore – HttpClient-backed URLFetch • Emulates the production environment – Sandbox restrictions may be inconsistent, so run tests on production servers as well 13 Tuesday, October 13, 2009
  • 14. Deployment • Your app lives at – <app_id>.appspot.com, or – Custom domain with Google Apps • Deploying uploads – Static files – Resource files – Other metadata (datastore indexes, cron jobs) • Admin Console – dashboards – manage multiple versions – view logs 14 Tuesday, October 13, 2009
  • 15. App Engine Architecture Incoming Requests Load App Engine App Engine App Engine Balancer Front End Front End Front End AppServer AppServer AppServer Other Google AppServer Infrastructure API Layer - Bigtable - Google Accounts - Memcache App App App - Image manipulation 15 Tuesday, October 13, 2009
  • 16. WhiteHouse.gov/openforquestions 16 Tuesday, October 13, 2009
  • 17. Quotas and Billing Resource Provided Free Additional Cost CPU 6.5 hours/day $0.10/hour Bandwidth In 1GByte/day $0.10/GByte Bandwidth Out 1GByte/day $0.12/GByte Stored Data 1 GB $0.005/GB-day Emails sent 2000/day to users $0.0001/email 50000/day to admins 17 Tuesday, October 13, 2009
  • 18. Demo run lambda { |env| [200, {}, 'Aloha'] } 18 Tuesday, October 13, 2009
  • 19. Resources • John Woodell, woodie@google.com • Google App Engine for JRuby – http://code.google.com/p/appengine-jruby/ • Google Group – http://groups.google.com/group/appengine-jruby • Blog: JRuby on App Engine Blog – http://jruby-appengine.blogspot.com/ 19 Tuesday, October 13, 2009