SlideShare a Scribd company logo
Deploying Java and Play!
    Apps on Heroku

     Sandeep Bhanot
       @cloudysan
Safe Harbor
   Safe harbor statement under the Private Securities Litigation Reform Act of 1995:

   This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such
   uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ
   materially from the results expressed or implied by the forward-looking statements we make. All statements other than
   statements of historical fact could be deemed forward-looking, including any projections of product or service availability,
   subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of
   management for future operations, statements of belief, any statements concerning new, planned, or upgraded services
   or technology developments and customer contracts or use of our services.

   The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and
   delivering new functionality for our service, new products and services, our new business model, our past operating
   losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting,
   breach of our security measures, the outcome of intellectual property and other litigation, risks associated with possible
   mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to
   expand, retain, and motivate our employees and manage our growth, new releases of our service and successful
   customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger
   enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc.
   is included in our annual report on Form 10-Q for the most recent fiscal quarter ended April 30, 2011. This documents
   and others containing important disclosures are available on the SEC Filings section of the Investor Information section of
   our Web site.

   Any unreleased services or features referenced in this or other presentations, press releases or public statements are not
   currently available and may not be delivered on time or at all. Customers who purchase our services should make the
   purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and
   does not intend to update these forward-looking statements.




Proprietary & Confidential
Once upon a time….


  Tim wanted to develop a Java app……
So he got to work….
•   Acquire and provision all the H/W (Servers, Load Balancers, Routers etc.)

•   Install, configure and tune the entire S/W stack (OS, Web/App Server, DB etc.)

•   Configure env. for Application services like Routing, Clustering, Load Balancing,
    DR, Caching, DB Replication etc ($$$)

• Patch and upgrade the H/W and S/W stack



              Cost

              Agility
One day….


Tim decided to try this ‘Cloud’ thingy……
So he tried an IAAS provider….
•   NO H/W to buy/install/configure!

•   Still has to configure and tune the entire S/W stack (OS, Web/App Server, DB etc.)

•   Still has to configure (and sometime code) env. for Application services like
    Scaling, Routing, Clustering, Load Balancing, DR, DB replication etc

•   Patch and upgrade the S/W stack




               Cost

               Agility
Finally….


Tim heard of Heroku
When Tim met Heroku….
• NO Servers

• Managed S/W stack (OS, Web/App Server, DB etc.)

• Application services like Routing, Load Balancing and DR built-in

• Elastic scaling

• git push heroku master
                                        Focus on your Code. Period.


               Cost

              Agility
Heroku = Polyglot Cloud Platform




        402,550+ Apps Running on Heroku
$ heroku create –s cedar

$ git push heroku master
Create more web processes:
$ heroku scale web=2


What processes are running:
$ heroku ps
Check the logs:
$ heroku logs
View releases:
$ heroku releases


Rollback:
$ heroku rollback
Run a process:
$ heroku run "your bash command"
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sandeep Bhanot
Deploying web apps...


Environment (Runtime, configuration, etc)
Ingredients (Dependencies, app, services, etc)
Process (Build, assemble, start, etc)

Environment + Ingredients + Process = web 1!
Environment + Ingredients + Process = web 2!
Externalize Environment Variables

$ heroku config


DATABASE_URL    =   postgres://blah:blah@ec2.compute-1.amazonaws.com/blah
JAVA_OPTS       =   -Xmx384m -Xss256k -XX:+UseCompressedOops
MAVEN_OPTS      =   -Xmx384m -Xss256k -XX:+UseCompressedOops
PATH            =   .maven/bin:/usr/local/bin:/usr/bin:/bin
REDISTOGO_URL   =   redis://redistogo:1234asdf@angler.redistogo.com:9291/
REPO            =   /app/.m2/repository
Ingredients defined (pom.xml)
<dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-webapp</artifactId>
      <version>${jetty.version}</version>
</dependency>
<dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jsp-2.1-glassfish</artifactId>
      <version>2.1.v20100127</version>
</dependency>
<dependency>
      <groupId>postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>9.0-801.jdbc4</version>
</dependency>
Process defined (Maven + Procfile)



web: sh target/bin/webapp
Don't Share-Something
Share-Nothing
Move state to the isolated & independent edges
    - UI state -> client
    - Permanent state -> external data stores
Deploy an app on Heroku

1. Create a Java Web App
2. Add a Procfile
3. Commit to a git repo
4. Create an app on Heroku
5. “git push” to Heroku
6. Scale and monitor on Heroku
Connect to a Database

• Free shared PostgreSQL DB
• Dedicated & managed PostgreSQL DB
• Amazon RDS MySQL & Oracle
• NoSQL Add-ons (Redis, MongoDB, etc)
• Database.com
• Or do your own thing
Transform DATABASE_URL
Heroku:
postgres://[username]:[password]@[server]/[db-name]



JDBC:
jdbc:postgresql://[server]/[db-name]?user=[username]&password=[password]



Transform:
dbUrl = dbUrl.replaceAll("postgres://(.*):(.*)@(.*)",
               "jdbc:postgresql://$3?user=$1&password=$2");
Create a Worker Process


1. Create a process
2. Update the Procfile
3. Push to Heroku
4. Scale the workers
Using a Heroku Add-on
• Find an Add-on: http://addons.heroku.com
• Activate the Add-on
• Use the service
• Push to Heroku
Play!
•   A Java framework for Web Applications
•   Non Servlet or JEE based
•   A full stack framework
•   Focuses on productivity and fun
Play! on Heroku


1. Create Play app
2. Add app to git repo
3. Create app on Heroku
4. Push app to Heroku
750 free dyno hours
 per month per app
heroku.com/java

github.com/heroku/java-workbook

@cloudysan
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sandeep Bhanot

More Related Content

PPTX
WATS 2014 WA Agents Overview - CA Workload Automation Technology Summit (WATS...
PPTX
SharePoint 2010 Upgrade User Group and SharePoint Saturday
PDF
Breaking SAP portal (HashDays)
PPTX
SharePoint 2010 Upgrade Drill Down
PPTX
Deborap
ODP
Lengua anuncio
PDF
Zhaojinbiao self introduction
PDF
Tsahim 1
WATS 2014 WA Agents Overview - CA Workload Automation Technology Summit (WATS...
SharePoint 2010 Upgrade User Group and SharePoint Saturday
Breaking SAP portal (HashDays)
SharePoint 2010 Upgrade Drill Down
Deborap
Lengua anuncio
Zhaojinbiao self introduction
Tsahim 1

Viewers also liked (20)

PDF
Why i want to work in a call center (and why i ultimately don't)
PPSX
1015026
PDF
Using GEOBIA to assess crown diameter classes of Acacia tortilis in Bou-Hedma...
PPTX
Piano tuner
PDF
Hum2310 fa2014 proust questionnaire
PPTX
PPTX
Performance Metrics for your Build Pipeline - presented at Vienna WebPerf Oct...
PPTX
квест Pons 1
PDF
Nascent Financial Services
PDF
Hum2220 fa2015 research project packet
PDF
Fall newsletter-2003
PPTX
Hugs instead of Bugs: Dreaming of Quality Tools for Devs and Testers
PDF
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
PDF
フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-
PPTX
Health Status of Children in Isabel, Leyte
PDF
2006 Winter Newsletter
PPTX
Kimia Terapan - Cassace (Cassava Rice/Nasi Singkong)
PPTX
Opportunity Execution Project - Career Mentor Online
PDF
DIY to CMS
Why i want to work in a call center (and why i ultimately don't)
1015026
Using GEOBIA to assess crown diameter classes of Acacia tortilis in Bou-Hedma...
Piano tuner
Hum2310 fa2014 proust questionnaire
Performance Metrics for your Build Pipeline - presented at Vienna WebPerf Oct...
квест Pons 1
Nascent Financial Services
Hum2220 fa2015 research project packet
Fall newsletter-2003
Hugs instead of Bugs: Dreaming of Quality Tools for Devs and Testers
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-
Health Status of Children in Isabel, Leyte
2006 Winter Newsletter
Kimia Terapan - Cassace (Cassava Rice/Nasi Singkong)
Opportunity Execution Project - Career Mentor Online
DIY to CMS
Ad

Similar to Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sandeep Bhanot (20)

PPT
Heroku for-team-collaboration
PPT
Heroku for team collaboration
PDF
Introduction to Heroku
PPTX
Heroku Introduction: Scaling customer facing apps & services
PPT
Dreamforce 13 developer session: Introduction to Heroku
PPTX
Heroku - developer playground
PPTX
Igor Androsov on Mobilizing Salesforce Data with 12 Factor App on Heroku
PPTX
Salesforce CCT Munich 2013 Introducing heroku - elastic, polyglot platform as...
PPTX
Social ent. with java on heroku
PPTX
Introduction to Heroku - CCT London 2013
PDF
Enterprise Heroku for Java
PDF
Social Enterprise Java Apps on Heroku Webinar
PPTX
Diving Into Heroku Private Spaces
PDF
Introduction to HEROKU Salesforce1 Platform DevDay
PDF
Heroku + Salesforce = Partner Success
PDF
Introduction to Heroku
PDF
Heroku Introduction
PDF
Agile Development with Heroku webinar
PDF
Présentation de la platefome Heroku
PDF
Salesforce platform session 2
Heroku for-team-collaboration
Heroku for team collaboration
Introduction to Heroku
Heroku Introduction: Scaling customer facing apps & services
Dreamforce 13 developer session: Introduction to Heroku
Heroku - developer playground
Igor Androsov on Mobilizing Salesforce Data with 12 Factor App on Heroku
Salesforce CCT Munich 2013 Introducing heroku - elastic, polyglot platform as...
Social ent. with java on heroku
Introduction to Heroku - CCT London 2013
Enterprise Heroku for Java
Social Enterprise Java Apps on Heroku Webinar
Diving Into Heroku Private Spaces
Introduction to HEROKU Salesforce1 Platform DevDay
Heroku + Salesforce = Partner Success
Introduction to Heroku
Heroku Introduction
Agile Development with Heroku webinar
Présentation de la platefome Heroku
Salesforce platform session 2
Ad

More from JAX London (20)

PDF
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
ODP
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
PDF
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
PDF
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
PDF
Spring Day | Behind the Scenes at Spring Batch | Dave Syer
PDF
Spring Day | Identity Management with Spring Security | Dave Syer
PDF
Spring Day | Spring and Scala | Eberhard Wolff
PDF
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
PPT
Keynote | The Rise and Fall and Rise of Java | James Governor
ODP
Java Tech & Tools | OSGi Best Practices | Emily Jiang
PPTX
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
PDF
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
PDF
Java Tech & Tools | Social Media in Programming in Java | Khanderao Kand
PDF
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
PDF
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
ODP
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
PDF
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
KEY
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
PDF
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
PPTX
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Keynote | The Rise and Fall and Rise of Java | James Governor
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter

Recently uploaded (20)

PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Big Data Technologies - Introduction.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
KodekX | Application Modernization Development
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
cuic standard and advanced reporting.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Spectral efficient network and resource selection model in 5G networks
Review of recent advances in non-invasive hemoglobin estimation
NewMind AI Monthly Chronicles - July 2025
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Advanced methodologies resolving dimensionality complications for autism neur...
“AI and Expert System Decision Support & Business Intelligence Systems”
Big Data Technologies - Introduction.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Dropbox Q2 2025 Financial Results & Investor Presentation
Per capita expenditure prediction using model stacking based on satellite ima...
Reach Out and Touch Someone: Haptics and Empathic Computing
KodekX | Application Modernization Development
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
Encapsulation_ Review paper, used for researhc scholars
CIFDAQ's Market Insight: SEC Turns Pro Crypto
cuic standard and advanced reporting.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx

Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sandeep Bhanot

  • 1. Deploying Java and Play! Apps on Heroku Sandeep Bhanot @cloudysan
  • 2. Safe Harbor Safe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of intellectual property and other litigation, risks associated with possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-Q for the most recent fiscal quarter ended April 30, 2011. This documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements. Proprietary & Confidential
  • 3. Once upon a time…. Tim wanted to develop a Java app……
  • 4. So he got to work…. • Acquire and provision all the H/W (Servers, Load Balancers, Routers etc.) • Install, configure and tune the entire S/W stack (OS, Web/App Server, DB etc.) • Configure env. for Application services like Routing, Clustering, Load Balancing, DR, Caching, DB Replication etc ($$$) • Patch and upgrade the H/W and S/W stack Cost Agility
  • 5. One day…. Tim decided to try this ‘Cloud’ thingy……
  • 6. So he tried an IAAS provider…. • NO H/W to buy/install/configure! • Still has to configure and tune the entire S/W stack (OS, Web/App Server, DB etc.) • Still has to configure (and sometime code) env. for Application services like Scaling, Routing, Clustering, Load Balancing, DR, DB replication etc • Patch and upgrade the S/W stack Cost Agility
  • 8. When Tim met Heroku…. • NO Servers • Managed S/W stack (OS, Web/App Server, DB etc.) • Application services like Routing, Load Balancing and DR built-in • Elastic scaling • git push heroku master Focus on your Code. Period. Cost Agility
  • 9. Heroku = Polyglot Cloud Platform 402,550+ Apps Running on Heroku
  • 10. $ heroku create –s cedar $ git push heroku master
  • 11. Create more web processes: $ heroku scale web=2 What processes are running: $ heroku ps
  • 12. Check the logs: $ heroku logs
  • 13. View releases: $ heroku releases Rollback: $ heroku rollback
  • 14. Run a process: $ heroku run "your bash command"
  • 16. Deploying web apps... Environment (Runtime, configuration, etc) Ingredients (Dependencies, app, services, etc) Process (Build, assemble, start, etc) Environment + Ingredients + Process = web 1! Environment + Ingredients + Process = web 2!
  • 17. Externalize Environment Variables $ heroku config DATABASE_URL = postgres://blah:blah@ec2.compute-1.amazonaws.com/blah JAVA_OPTS = -Xmx384m -Xss256k -XX:+UseCompressedOops MAVEN_OPTS = -Xmx384m -Xss256k -XX:+UseCompressedOops PATH = .maven/bin:/usr/local/bin:/usr/bin:/bin REDISTOGO_URL = redis://redistogo:1234asdf@angler.redistogo.com:9291/ REPO = /app/.m2/repository
  • 18. Ingredients defined (pom.xml) <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jsp-2.1-glassfish</artifactId> <version>2.1.v20100127</version> </dependency> <dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.0-801.jdbc4</version> </dependency>
  • 19. Process defined (Maven + Procfile) web: sh target/bin/webapp
  • 21. Share-Nothing Move state to the isolated & independent edges - UI state -> client - Permanent state -> external data stores
  • 22. Deploy an app on Heroku 1. Create a Java Web App 2. Add a Procfile 3. Commit to a git repo 4. Create an app on Heroku 5. “git push” to Heroku 6. Scale and monitor on Heroku
  • 23. Connect to a Database • Free shared PostgreSQL DB • Dedicated & managed PostgreSQL DB • Amazon RDS MySQL & Oracle • NoSQL Add-ons (Redis, MongoDB, etc) • Database.com • Or do your own thing
  • 25. Create a Worker Process 1. Create a process 2. Update the Procfile 3. Push to Heroku 4. Scale the workers
  • 26. Using a Heroku Add-on • Find an Add-on: http://addons.heroku.com • Activate the Add-on • Use the service • Push to Heroku
  • 27. Play! • A Java framework for Web Applications • Non Servlet or JEE based • A full stack framework • Focuses on productivity and fun
  • 28. Play! on Heroku 1. Create Play app 2. Add app to git repo 3. Create app on Heroku 4. Push app to Heroku
  • 29. 750 free dyno hours per month per app