SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Ruby on Google App Engine
  Upgrade to Google App “Turbo” Engine




                            Joseph Ku (Chieh-Fang Ku)
                               chiehfang.ku@gmail.com
Outline
What’s Google App    Be prepared
Engine?
                     What’s JRuby
Why Google App
Engine?              Why Sinatra and why
                     not Rails?
  Free quotas and
  limits             Hack! Hack! Hack!

  Significant         References
  features

                                                  v1.2.0
                                     Build 201105111230
Who am I?
Joseph Ku (Chieh-Fang Ku)(@josephku)

  Male

     Single, but not rich

A Linux user since 1996

Fed by embedded Linux and Android

Ruby lover and Guitar Hero rocker
Before we start...

Don’t take any notes. This slide will be
published with CC BY-NC-ND.

Don’t judge my look and shape. It’s cold, and
I need Calories.

Don’t play Angry Birds during my presentation

  ...including Angry Birds Seasons edition
Before we start...


You CAN interrupt me anytime.

You CAN take pictures anytime.

You CAN go to the toilet anytime.
What’s Google App Engine?


 GAE (Google App Engine) lets you run your
 web apps on Google's infrastructure.

 Reliable PaaS (Platform as a Service)

 Easy to use, maintain and scale

 Almost free!
What’s Google App Engine?

 GAE (Google App Engine) lets you run your
 web apps on Google's infrastructure.

 Typical PaaS (Platform as a Service)

 Only supports Python and Java runtime
 environments

 Who did choose GAE?...
Why Google App Engine?


 World-class infrastructure

 Light-weight PaaS

 Booming of Client-Side JavaScript

 Obey its limitations
Free quotas and limits
Free Quotas (without   1 GB shared
enabling billing)      Datastore/
                       Blobstore size
  43,200,000
  requests per day     6.5 CPU-hours per
                       day
  45,200 requests
  per minute           1 GB shared
                       bandwidth in/out
                       per day
Reduced again and
 again...and again?
Free quotas and limits
Limits

   10 apps for          150 MB app code
   developer account    size

   30 sec per request   1,000 deployments

   10 MB HTTP           200 indexes
   response size
Significant features
Schedule tasks        Google account
                      integration
  Schedule tasks -
  Like Cron service   URL fetch

     Every minutes!   Mail

     Up to 20 tasks   Memcache

Task queues - only    Image manipulation
support Python
What’s URL Shortener?
 Such as:

   TinyURL.com

   bit.ly

   goo.gl

   t.co

   fb.me
Create your own URL
     shortener
I want this: http://mrku.co/j3Rs7k

Base 62 (0-9, a-z, A-Z)

Generated by O(1) algorithm

I want my service fast

I don’t wanna pay

I   Ruby!
Why this happen?

You just said GAE could only support Python
and Java...

  Mighty JVM

  JRuby

  DataMapper

  appengine-jruby project (John Woodell)
Be Prepared

Java SE Development Kit (JDK)

Ruby

RubyGems

JRuby

(...Wh...Where is GAE?)
Be Prepared


Install all packages we need:

$ gem install google-appengine
(rack, jruby-rack, jruby-jars, appengine-rack, appengine-apis,
appengine-sdk, bundler08, rubyzip, appengine-tools, google-
appengine)
Be Prepared


Create a GAE app and test it:

$ appcfg.rb generate_app myapp

$ dev_appserver.rb myapp

Go and check http://localhost:8080/
...That’s all?
Wake up!!
This world is NOT
     perfect!
Be prepared for the real
         world

  Java SE Development Kit (JDK) 6

  Ruby 1.8.7-p330 or 1.8.7-p334

  RubyGems 1.3.7

  JRuby 1.5.6
Be prepared for the real
         world

  Suggestions:

    Use “RVM” to deploy your Ruby
    environment on Linux or Mac

    Use “Pik” to deploy your Ruby environment
    on Windows
Be prepared for the real
         world
  Install all packages we need:

  $ gem install google-appengine

  And do some tricks...

  $ gem uninstall appengine-sdk

  $ gem install appengine-sdk -v "1.4.0"
Be prepared for the real
         world
  Create a GAE app and test it:

  $ appcfg.rb generate_app myapp

  $ echo “gem 'jruby-rack', '< 1.0.6'” >> myapp/
  Gemfile

  $ dev_appserver.rb myapp

  Go and check http://localhost:8080/
What’s JRuby
100% Java implementation of the Ruby
programming language

  We could call Ruby MRI, “CRuby.”

Open source, Started in 2001

Always aiming for compatibility with current
Ruby version

  Latest release: 1.6.1 (update to 2011.05.11)
Why Sinatra and why
     not Rails
Sinatra is lighter than Rails

Sinatra’s CGI-friendly is more close to GAE

Tons of problems while trying to deploy a
Rails app to GAE

Big performance issues in Rails apps on GAE

Besides...
Why Sinatra and why
     not Rails
There is Heroku!!

$ gem install heroku

$ heroku create myapp

$ git push heroku master

Go and check http://myapp.heroku.com
Hack! Hack! Hack!
References

Google App Engine: Quotas

  http://code.google.com/intl/en/appengine/
  docs/quotas.html

JRuby

  http://www.jruby.org/
References


DataMapper

  http://datamapper.org/

appengine-jruby project

  http://code.google.com/p/appengine-jruby/

  John Woodell (woodie@google.com)
References
RVM: Ruby Version Manger

  http://rvm.beginrescueend.com/

Pik: Ruby version manager for Windows

  https://github.com/vertiginous/pik/

Sinatra

  http://www.sinatrarb.com/
Any questions?

Mais conteúdo relacionado

Mais procurados

Dockerising Appium : London Appium Meetup
Dockerising Appium : London Appium MeetupDockerising Appium : London Appium Meetup
Dockerising Appium : London Appium MeetupShashikant Jagtap
 
Headless BDD & Responsive Test Automation
Headless BDD & Responsive Test AutomationHeadless BDD & Responsive Test Automation
Headless BDD & Responsive Test AutomationShashikant Jagtap
 
Experiences building apps with React Native @DomCode 2016
Experiences building apps with React Native @DomCode 2016Experiences building apps with React Native @DomCode 2016
Experiences building apps with React Native @DomCode 2016Adrian Philipp
 
Going Native With React
Going Native With ReactGoing Native With React
Going Native With ReactEric Nograles
 
What's New in JHipsterLand - DevNexus 2017
What's New in JHipsterLand - DevNexus 2017What's New in JHipsterLand - DevNexus 2017
What's New in JHipsterLand - DevNexus 2017Matt Raible
 
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...Matt Raible
 
Creating books app with react native
Creating books app with react nativeCreating books app with react native
Creating books app with react nativeAli Sa'o
 
Power of React Native
Power of React NativePower of React Native
Power of React NativeMurugan Durai
 
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017Matt Raible
 
Testing Angular Applications - Jfokus 2017
Testing Angular Applications - Jfokus 2017Testing Angular Applications - Jfokus 2017
Testing Angular Applications - Jfokus 2017Matt Raible
 
Install Concourse CI with BOSH
Install Concourse CI with BOSHInstall Concourse CI with BOSH
Install Concourse CI with BOSHToshiaki Maki
 
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo MeetupWordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo MeetuprtCamp
 
Spring Bootを触ってみた
Spring Bootを触ってみたSpring Bootを触ってみた
Spring Bootを触ってみたonozaty
 
Using JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot appsUsing JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot appsYakov Fain
 
More than nexus, better than nexus.
More than nexus, better than nexus.More than nexus, better than nexus.
More than nexus, better than nexus.Young-Ho Cha
 
All About GitHub Pull Requests
All About GitHub Pull RequestsAll About GitHub Pull Requests
All About GitHub Pull RequestsMatthew McCullough
 
Memaksimalkan Non-Blocking IO pada Node.js
Memaksimalkan Non-Blocking IO pada Node.jsMemaksimalkan Non-Blocking IO pada Node.js
Memaksimalkan Non-Blocking IO pada Node.jsCodePolitan
 
Testing Mobile JavaScript
Testing Mobile JavaScriptTesting Mobile JavaScript
Testing Mobile JavaScriptjeresig
 

Mais procurados (20)

Dockerising Appium : London Appium Meetup
Dockerising Appium : London Appium MeetupDockerising Appium : London Appium Meetup
Dockerising Appium : London Appium Meetup
 
Headless BDD & Responsive Test Automation
Headless BDD & Responsive Test AutomationHeadless BDD & Responsive Test Automation
Headless BDD & Responsive Test Automation
 
Experiences building apps with React Native @DomCode 2016
Experiences building apps with React Native @DomCode 2016Experiences building apps with React Native @DomCode 2016
Experiences building apps with React Native @DomCode 2016
 
Going Native With React
Going Native With ReactGoing Native With React
Going Native With React
 
What's New in JHipsterLand - DevNexus 2017
What's New in JHipsterLand - DevNexus 2017What's New in JHipsterLand - DevNexus 2017
What's New in JHipsterLand - DevNexus 2017
 
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
 
Creating books app with react native
Creating books app with react nativeCreating books app with react native
Creating books app with react native
 
Power of React Native
Power of React NativePower of React Native
Power of React Native
 
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
 
Testing Angular Applications - Jfokus 2017
Testing Angular Applications - Jfokus 2017Testing Angular Applications - Jfokus 2017
Testing Angular Applications - Jfokus 2017
 
Install Concourse CI with BOSH
Install Concourse CI with BOSHInstall Concourse CI with BOSH
Install Concourse CI with BOSH
 
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo MeetupWordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
 
Spring Bootを触ってみた
Spring Bootを触ってみたSpring Bootを触ってみた
Spring Bootを触ってみた
 
GWT
GWTGWT
GWT
 
Using JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot appsUsing JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot apps
 
More than nexus, better than nexus.
More than nexus, better than nexus.More than nexus, better than nexus.
More than nexus, better than nexus.
 
All About GitHub Pull Requests
All About GitHub Pull RequestsAll About GitHub Pull Requests
All About GitHub Pull Requests
 
Mojolicious and REST
Mojolicious and RESTMojolicious and REST
Mojolicious and REST
 
Memaksimalkan Non-Blocking IO pada Node.js
Memaksimalkan Non-Blocking IO pada Node.jsMemaksimalkan Non-Blocking IO pada Node.js
Memaksimalkan Non-Blocking IO pada Node.js
 
Testing Mobile JavaScript
Testing Mobile JavaScriptTesting Mobile JavaScript
Testing Mobile JavaScript
 

Destaque

JavaじゃないあたりのGAE事情
JavaじゃないあたりのGAE事情JavaじゃないあたりのGAE事情
JavaじゃないあたりのGAE事情Yusuke Ohmichi
 
Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Soudai Sone
 
Semana Santa Calpe 2015
Semana Santa Calpe 2015Semana Santa Calpe 2015
Semana Santa Calpe 2015TurismoCalp
 
NCA-#1985747-v3B-ARCHIVE_Memorundum_of_Understanding_Core_vs_non-core
NCA-#1985747-v3B-ARCHIVE_Memorundum_of_Understanding_Core_vs_non-coreNCA-#1985747-v3B-ARCHIVE_Memorundum_of_Understanding_Core_vs_non-core
NCA-#1985747-v3B-ARCHIVE_Memorundum_of_Understanding_Core_vs_non-coreMikaël Meyer, BAA, MSc, ITIL, COBIT
 
Ccna 3 v 4.0 final-exam-17-07-2010
Ccna 3 v 4.0 final-exam-17-07-2010Ccna 3 v 4.0 final-exam-17-07-2010
Ccna 3 v 4.0 final-exam-17-07-2010irbas
 
Marketing inbound para empresas B2B
Marketing inbound para empresas B2BMarketing inbound para empresas B2B
Marketing inbound para empresas B2BSlashMobility.com
 
Presentación teléfono bilal y igor
Presentación teléfono bilal y igorPresentación teléfono bilal y igor
Presentación teléfono bilal y igorjosetecnologies
 
Reunión FAPA Rioja de 29 de enero de 2009
Reunión FAPA Rioja de 29 de enero de 2009Reunión FAPA Rioja de 29 de enero de 2009
Reunión FAPA Rioja de 29 de enero de 2009ampavicenteochoa
 
035.02.08 sk scheur rapportage
035.02.08 sk scheur rapportage035.02.08 sk scheur rapportage
035.02.08 sk scheur rapportageHendrik Haafkens
 
Labsurlab cooperaciones
Labsurlab cooperacionesLabsurlab cooperaciones
Labsurlab cooperacionesGuerrerasolar
 
7 abilitites of a linchpin
7 abilitites of a linchpin7 abilitites of a linchpin
7 abilitites of a linchpinRichard Meyer
 
Ex118119 sp 68014902001a
Ex118119 sp 68014902001aEx118119 sp 68014902001a
Ex118119 sp 68014902001apapaoso2012
 
Elaine Muir (Plan Vivo)-Carbon Offsetting Case Study
Elaine Muir (Plan Vivo)-Carbon Offsetting Case StudyElaine Muir (Plan Vivo)-Carbon Offsetting Case Study
Elaine Muir (Plan Vivo)-Carbon Offsetting Case StudyScotland Malawi Partnership
 
Tema 3. prehistoria (nacimiento del hombre 3000 a. c)
Tema 3. prehistoria (nacimiento del hombre  3000 a. c)Tema 3. prehistoria (nacimiento del hombre  3000 a. c)
Tema 3. prehistoria (nacimiento del hombre 3000 a. c)Candela De Cruz Romero
 

Destaque (20)

JavaじゃないあたりのGAE事情
JavaじゃないあたりのGAE事情JavaじゃないあたりのGAE事情
JavaじゃないあたりのGAE事情
 
Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由
 
Camera di Commercio Italiana per la Svizzera
Camera di Commercio Italiana per la SvizzeraCamera di Commercio Italiana per la Svizzera
Camera di Commercio Italiana per la Svizzera
 
114 NariñO InstitucióN Educativa San Bartolomé Q
114 NariñO  InstitucióN Educativa San Bartolomé Q114 NariñO  InstitucióN Educativa San Bartolomé Q
114 NariñO InstitucióN Educativa San Bartolomé Q
 
Semana Santa Calpe 2015
Semana Santa Calpe 2015Semana Santa Calpe 2015
Semana Santa Calpe 2015
 
Clausula
ClausulaClausula
Clausula
 
NCA-#1985747-v3B-ARCHIVE_Memorundum_of_Understanding_Core_vs_non-core
NCA-#1985747-v3B-ARCHIVE_Memorundum_of_Understanding_Core_vs_non-coreNCA-#1985747-v3B-ARCHIVE_Memorundum_of_Understanding_Core_vs_non-core
NCA-#1985747-v3B-ARCHIVE_Memorundum_of_Understanding_Core_vs_non-core
 
Ccna 3 v 4.0 final-exam-17-07-2010
Ccna 3 v 4.0 final-exam-17-07-2010Ccna 3 v 4.0 final-exam-17-07-2010
Ccna 3 v 4.0 final-exam-17-07-2010
 
Marketing inbound para empresas B2B
Marketing inbound para empresas B2BMarketing inbound para empresas B2B
Marketing inbound para empresas B2B
 
Presentación teléfono bilal y igor
Presentación teléfono bilal y igorPresentación teléfono bilal y igor
Presentación teléfono bilal y igor
 
Mobile Mastery
Mobile MasteryMobile Mastery
Mobile Mastery
 
Reunión FAPA Rioja de 29 de enero de 2009
Reunión FAPA Rioja de 29 de enero de 2009Reunión FAPA Rioja de 29 de enero de 2009
Reunión FAPA Rioja de 29 de enero de 2009
 
035.02.08 sk scheur rapportage
035.02.08 sk scheur rapportage035.02.08 sk scheur rapportage
035.02.08 sk scheur rapportage
 
Labsurlab cooperaciones
Labsurlab cooperacionesLabsurlab cooperaciones
Labsurlab cooperaciones
 
Cecot Xarxes Socials Marius Cirera
Cecot   Xarxes Socials   Marius CireraCecot   Xarxes Socials   Marius Cirera
Cecot Xarxes Socials Marius Cirera
 
7 abilitites of a linchpin
7 abilitites of a linchpin7 abilitites of a linchpin
7 abilitites of a linchpin
 
Neubau AM PULS Alt-Maxglan, Salzburg
Neubau AM PULS Alt-Maxglan, SalzburgNeubau AM PULS Alt-Maxglan, Salzburg
Neubau AM PULS Alt-Maxglan, Salzburg
 
Ex118119 sp 68014902001a
Ex118119 sp 68014902001aEx118119 sp 68014902001a
Ex118119 sp 68014902001a
 
Elaine Muir (Plan Vivo)-Carbon Offsetting Case Study
Elaine Muir (Plan Vivo)-Carbon Offsetting Case StudyElaine Muir (Plan Vivo)-Carbon Offsetting Case Study
Elaine Muir (Plan Vivo)-Carbon Offsetting Case Study
 
Tema 3. prehistoria (nacimiento del hombre 3000 a. c)
Tema 3. prehistoria (nacimiento del hombre  3000 a. c)Tema 3. prehistoria (nacimiento del hombre  3000 a. c)
Tema 3. prehistoria (nacimiento del hombre 3000 a. c)
 

Semelhante a Ruby on Google App Engine: Upgrade to Google App "Turbo" Engine

Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Enginecatherinewall
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyKyle Drake
 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munichdion
 
Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript Onely
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for JavaLars Vogel
 
Mobile Development integration tests
Mobile Development integration testsMobile Development integration tests
Mobile Development integration testsKenneth Poon
 
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 GaelykGuillaume Laforge
 
Play Framework on Google App Engine
Play Framework on Google App EnginePlay Framework on Google App Engine
Play Framework on Google App EngineFred Lin
 
Google App Engine: An Introduction
Google App Engine: An IntroductionGoogle App Engine: An Introduction
Google App Engine: An IntroductionAbu Ashraf Masnun
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for JavaLars Vogel
 
Introduction to Google App Engine
Introduction to Google App EngineIntroduction to Google App Engine
Introduction to Google App Enginemdc11
 
Gentle App Engine Intro
Gentle App Engine IntroGentle App Engine Intro
Gentle App Engine Introrobinb123
 
Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2Matthew McCullough
 
What is App Engine? O
What is App Engine? OWhat is App Engine? O
What is App Engine? Oikailan
 
What is Google App Engine?
What is Google App Engine?What is Google App Engine?
What is Google App Engine?weschwee
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekDr. Felix Raab
 
Cloud Computing Bootcamp On The Google App Engine [v1.1]
Cloud Computing Bootcamp On The Google App Engine [v1.1]Cloud Computing Bootcamp On The Google App Engine [v1.1]
Cloud Computing Bootcamp On The Google App Engine [v1.1]Matthew McCullough
 
"Product Architecture: failures and lessons learnt" - Royi Benyossef @Product...
"Product Architecture: failures and lessons learnt" - Royi Benyossef @Product..."Product Architecture: failures and lessons learnt" - Royi Benyossef @Product...
"Product Architecture: failures and lessons learnt" - Royi Benyossef @Product...Product of Things
 
JRuby and Google App Engine
JRuby and Google App EngineJRuby and Google App Engine
JRuby and Google App Enginejoshsmoore
 

Semelhante a Ruby on Google App Engine: Upgrade to Google App "Turbo" Engine (20)

Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Engine
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munich
 
Ruby And The Cloud
Ruby And The CloudRuby And The Cloud
Ruby And The Cloud
 
Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
Mobile Development integration tests
Mobile Development integration testsMobile Development integration tests
Mobile Development integration tests
 
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
 
Play Framework on Google App Engine
Play Framework on Google App EnginePlay Framework on Google App Engine
Play Framework on Google App Engine
 
Google App Engine: An Introduction
Google App Engine: An IntroductionGoogle App Engine: An Introduction
Google App Engine: An Introduction
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
Introduction to Google App Engine
Introduction to Google App EngineIntroduction to Google App Engine
Introduction to Google App Engine
 
Gentle App Engine Intro
Gentle App Engine IntroGentle App Engine Intro
Gentle App Engine Intro
 
Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2
 
What is App Engine? O
What is App Engine? OWhat is App Engine? O
What is App Engine? O
 
What is Google App Engine?
What is Google App Engine?What is Google App Engine?
What is Google App Engine?
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one week
 
Cloud Computing Bootcamp On The Google App Engine [v1.1]
Cloud Computing Bootcamp On The Google App Engine [v1.1]Cloud Computing Bootcamp On The Google App Engine [v1.1]
Cloud Computing Bootcamp On The Google App Engine [v1.1]
 
"Product Architecture: failures and lessons learnt" - Royi Benyossef @Product...
"Product Architecture: failures and lessons learnt" - Royi Benyossef @Product..."Product Architecture: failures and lessons learnt" - Royi Benyossef @Product...
"Product Architecture: failures and lessons learnt" - Royi Benyossef @Product...
 
JRuby and Google App Engine
JRuby and Google App EngineJRuby and Google App Engine
JRuby and Google App Engine
 

Mais de Joseph Ku

R&B: When Ruby Met Bitcoin
R&B: When Ruby Met BitcoinR&B: When Ruby Met Bitcoin
R&B: When Ruby Met BitcoinJoseph Ku
 
Swift Introduction to Swift in Ruby
Swift Introduction to Swift in RubySwift Introduction to Swift in Ruby
Swift Introduction to Swift in RubyJoseph Ku
 
第一次去 WWDC 就上手
第一次去 WWDC 就上手第一次去 WWDC 就上手
第一次去 WWDC 就上手Joseph Ku
 
手機遊戲開發的兩三事
手機遊戲開發的兩三事手機遊戲開發的兩三事
手機遊戲開發的兩三事Joseph Ku
 
RubyMotion Gets A Cool New Friend: mruby on iOS
RubyMotion Gets A Cool New Friend: mruby on iOSRubyMotion Gets A Cool New Friend: mruby on iOS
RubyMotion Gets A Cool New Friend: mruby on iOSJoseph Ku
 
RubyMotion: Hack Your iOS App Like Never Before
RubyMotion: Hack Your iOS App Like Never BeforeRubyMotion: Hack Your iOS App Like Never Before
RubyMotion: Hack Your iOS App Like Never BeforeJoseph Ku
 
iOS Game Development: When Cocoa Met Cocos...
iOS Game Development: When Cocoa Met Cocos...iOS Game Development: When Cocoa Met Cocos...
iOS Game Development: When Cocoa Met Cocos...Joseph Ku
 

Mais de Joseph Ku (7)

R&B: When Ruby Met Bitcoin
R&B: When Ruby Met BitcoinR&B: When Ruby Met Bitcoin
R&B: When Ruby Met Bitcoin
 
Swift Introduction to Swift in Ruby
Swift Introduction to Swift in RubySwift Introduction to Swift in Ruby
Swift Introduction to Swift in Ruby
 
第一次去 WWDC 就上手
第一次去 WWDC 就上手第一次去 WWDC 就上手
第一次去 WWDC 就上手
 
手機遊戲開發的兩三事
手機遊戲開發的兩三事手機遊戲開發的兩三事
手機遊戲開發的兩三事
 
RubyMotion Gets A Cool New Friend: mruby on iOS
RubyMotion Gets A Cool New Friend: mruby on iOSRubyMotion Gets A Cool New Friend: mruby on iOS
RubyMotion Gets A Cool New Friend: mruby on iOS
 
RubyMotion: Hack Your iOS App Like Never Before
RubyMotion: Hack Your iOS App Like Never BeforeRubyMotion: Hack Your iOS App Like Never Before
RubyMotion: Hack Your iOS App Like Never Before
 
iOS Game Development: When Cocoa Met Cocos...
iOS Game Development: When Cocoa Met Cocos...iOS Game Development: When Cocoa Met Cocos...
iOS Game Development: When Cocoa Met Cocos...
 

Último

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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 WorkerThousandEyes
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Último (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

Ruby on Google App Engine: Upgrade to Google App "Turbo" Engine

  • 1. Ruby on Google App Engine Upgrade to Google App “Turbo” Engine Joseph Ku (Chieh-Fang Ku) chiehfang.ku@gmail.com
  • 2. Outline What’s Google App Be prepared Engine? What’s JRuby Why Google App Engine? Why Sinatra and why not Rails? Free quotas and limits Hack! Hack! Hack! Significant References features v1.2.0 Build 201105111230
  • 3. Who am I? Joseph Ku (Chieh-Fang Ku)(@josephku) Male Single, but not rich A Linux user since 1996 Fed by embedded Linux and Android Ruby lover and Guitar Hero rocker
  • 4. Before we start... Don’t take any notes. This slide will be published with CC BY-NC-ND. Don’t judge my look and shape. It’s cold, and I need Calories. Don’t play Angry Birds during my presentation ...including Angry Birds Seasons edition
  • 5. Before we start... You CAN interrupt me anytime. You CAN take pictures anytime. You CAN go to the toilet anytime.
  • 6. What’s Google App Engine? GAE (Google App Engine) lets you run your web apps on Google's infrastructure. Reliable PaaS (Platform as a Service) Easy to use, maintain and scale Almost free!
  • 7. What’s Google App Engine? GAE (Google App Engine) lets you run your web apps on Google's infrastructure. Typical PaaS (Platform as a Service) Only supports Python and Java runtime environments Who did choose GAE?...
  • 8. Why Google App Engine? World-class infrastructure Light-weight PaaS Booming of Client-Side JavaScript Obey its limitations
  • 9. Free quotas and limits Free Quotas (without 1 GB shared enabling billing) Datastore/ Blobstore size 43,200,000 requests per day 6.5 CPU-hours per day 45,200 requests per minute 1 GB shared bandwidth in/out per day
  • 10. Reduced again and again...and again?
  • 11. Free quotas and limits Limits 10 apps for 150 MB app code developer account size 30 sec per request 1,000 deployments 10 MB HTTP 200 indexes response size
  • 12. Significant features Schedule tasks Google account integration Schedule tasks - Like Cron service URL fetch Every minutes! Mail Up to 20 tasks Memcache Task queues - only Image manipulation support Python
  • 13.
  • 14. What’s URL Shortener? Such as: TinyURL.com bit.ly goo.gl t.co fb.me
  • 15. Create your own URL shortener I want this: http://mrku.co/j3Rs7k Base 62 (0-9, a-z, A-Z) Generated by O(1) algorithm I want my service fast I don’t wanna pay I Ruby!
  • 16. Why this happen? You just said GAE could only support Python and Java... Mighty JVM JRuby DataMapper appengine-jruby project (John Woodell)
  • 17. Be Prepared Java SE Development Kit (JDK) Ruby RubyGems JRuby (...Wh...Where is GAE?)
  • 18. Be Prepared Install all packages we need: $ gem install google-appengine (rack, jruby-rack, jruby-jars, appengine-rack, appengine-apis, appengine-sdk, bundler08, rubyzip, appengine-tools, google- appengine)
  • 19. Be Prepared Create a GAE app and test it: $ appcfg.rb generate_app myapp $ dev_appserver.rb myapp Go and check http://localhost:8080/
  • 21. Wake up!! This world is NOT perfect!
  • 22. Be prepared for the real world Java SE Development Kit (JDK) 6 Ruby 1.8.7-p330 or 1.8.7-p334 RubyGems 1.3.7 JRuby 1.5.6
  • 23. Be prepared for the real world Suggestions: Use “RVM” to deploy your Ruby environment on Linux or Mac Use “Pik” to deploy your Ruby environment on Windows
  • 24. Be prepared for the real world Install all packages we need: $ gem install google-appengine And do some tricks... $ gem uninstall appengine-sdk $ gem install appengine-sdk -v "1.4.0"
  • 25. Be prepared for the real world Create a GAE app and test it: $ appcfg.rb generate_app myapp $ echo “gem 'jruby-rack', '< 1.0.6'” >> myapp/ Gemfile $ dev_appserver.rb myapp Go and check http://localhost:8080/
  • 26. What’s JRuby 100% Java implementation of the Ruby programming language We could call Ruby MRI, “CRuby.” Open source, Started in 2001 Always aiming for compatibility with current Ruby version Latest release: 1.6.1 (update to 2011.05.11)
  • 27. Why Sinatra and why not Rails Sinatra is lighter than Rails Sinatra’s CGI-friendly is more close to GAE Tons of problems while trying to deploy a Rails app to GAE Big performance issues in Rails apps on GAE Besides...
  • 28. Why Sinatra and why not Rails There is Heroku!! $ gem install heroku $ heroku create myapp $ git push heroku master Go and check http://myapp.heroku.com
  • 30. References Google App Engine: Quotas http://code.google.com/intl/en/appengine/ docs/quotas.html JRuby http://www.jruby.org/
  • 31. References DataMapper http://datamapper.org/ appengine-jruby project http://code.google.com/p/appengine-jruby/ John Woodell (woodie@google.com)
  • 32. References RVM: Ruby Version Manger http://rvm.beginrescueend.com/ Pik: Ruby version manager for Windows https://github.com/vertiginous/pik/ Sinatra http://www.sinatrarb.com/