0
Tuesday, October 13, 2009
Ship your App in a Container
            JRuby on Google App Engine
            John Woodell
            Oct 5, 2009




 ...
Rails Deployment Roadmap
            • 2004 - FastCGI on Apache or Lighttpd
                            “a rocket that som...
Why JRuby?
            • Outperforms MRI in many cases... 2x to 10x
            • Gem extensions written in Java (no more ...
Why Rails3?
            • More modular, load only what you need for each request
            • Intelligent gem management ...
Why Sinatra?
            • No learning curve... a simple and elegant DSL
            • Some data-driven apps don’t require...
Why DataMapper?
            • Data mapped in your model, auto-migrations or no migrations
            • Text fields treate...
Why a Servlet Container?
            • Various app servers to choose from
            • Everything you need in in the cont...
JRuby on App Engine
              9



Tuesday, October 13, 2009
Install it Now

                    sudo gem install google-appengine



                            Everything you need i...
What is Google App Engine?
            • A cloud-computing platform
            • We provide the container and services
  ...
App Engine JRuby APIs
            • AppEngine::Users
            • AppEngine::Datastore
            • AppEngine::Memcache
...
Dev_AppServer
            • Customized Jetty server
            • Local implementation of services
                   – LR...
Deployment
            • Your app lives at
              – <app_id>.appspot.com, or
              – Custom domain with Goo...
App Engine Architecture
                                                          Incoming Requests



                   ...
WhiteHouse.gov/openforquestions




              16



Tuesday, October 13, 2009
Quotas and Billing
                     Resource        Provided Free      Additional Cost
                            CPU...
Demo

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




              18



Tuesday, October 13, 2009
Resources
            • John Woodell, woodie@google.com
            • Google App Engine for JRuby
                   – htt...
Tuesday, October 13, 2009
Upcoming SlideShare
Loading in...5
×

Aloha on-rails-2009

816

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
816
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Aloha on-rails-2009"

  1. 1. Tuesday, October 13, 2009
  2. 2. Ship your App in a Container JRuby on Google App Engine John Woodell Oct 5, 2009 2 Tuesday, October 13, 2009
  3. 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. 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. 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. 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. 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. 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. 9. JRuby on App Engine 9 Tuesday, October 13, 2009
  10. 10. Install it Now sudo gem install google-appengine Everything you need installs as gems 10 Tuesday, October 13, 2009
  11. 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. 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. 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. 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. 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. 16. WhiteHouse.gov/openforquestions 16 Tuesday, October 13, 2009
  17. 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. 18. Demo run lambda { |env| [200, {}, 'Aloha'] } 18 Tuesday, October 13, 2009
  19. 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
  20. 20. Tuesday, October 13, 2009
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×