SlideShare a Scribd company logo
Eberhard Wolff
Freelance Consultant / Trainer
Head Technology Advisory Board
adesso AG
HISTORY & ORIGIN

Eberhard Wolff - @ewolff
History & Origin
§ Originally started as Ruby PaaS
§ Now: Support for Node.js, Clojure,
Grails, Scala and Python
§ Acquired by Salesforce.com
Eberhard Wolff - @ewolff
Programming Model
§ Jetty, Tomcat or Play! web server
§ Worker for background activities
§ Standard Java Programming Model

Eberhard Wolff - @ewolff
Scaling / High Availability 
§ Servers must be manually started for
scaling
§ Failed servers will be restarted

Eberhard Wolff - @ewolff
TOOLS

Eberhard Wolff - @ewolff
Command Line Tool
§ heroku
§ E.g. creates new applications
§ Other management functions
addons
o  logs
o  etc.
o 

Eberhard Wolff - @ewolff
Deployment
§  heroku tool creates an empty git repository
§  Deploy new versions with git
§  Build (maven) done by Heroku
§  Build automatically deployed
§  No specialized tools needed – git is enough
§  Integration with Atlassian Bamboo or Travis
possible
§  Alternative: WAR deployment
Eberhard Wolff - @ewolff
DEMO

Eberhard Wolff - @ewolff
Code Changes
Took the Spring application
Converted to PostgreSQL
<bean class="java.net.URI" id="dbUrl">	
<constructor-arg	
value="#{systemEnvironment['DATABASE_URL']}" />	
</bean>	
	
<bean id="dataSource"	
class="org.apache.commons.dbcp.BasicDataSource">	
<property name="url"	
value="#{ 'jdbc:postgresql://' + @dbUrl.getHost() + í	
':' + @dbUrl.getPort() + @dbUrl.getPath() }" />	
<property name="username"	
value="#{ @dbUrl.getUserInfo().split(':')[0] }" />	
<property name="password"	
value="#{ @dbUrl.getUserInfo().split(':')[1] }" />	
</bean>

Eberhard Wolff - @ewolff
Eberhard Wolff - @ewolff
Eberhard Wolff - @ewolff
Eberhard Wolff - @ewolff
Alternative: Eclipse PlugIn or Web

Eberhard Wolff - @ewolff
Full Stack Java EE 
No Java EE build pack available
Would need WAR with Java EE libs
Problem: JNDI DataSource

Eberhard Wolff - @ewolff
FLEXIBILITY

Eberhard Wolff - @ewolff
Flexibility
§  Dynos: processes run on Heroku
§  Procfile defines command line to start a
“Dyno”
§  Can be tuned and changed
§  Can create custom “Buildpack” to run
entirely different environments
§  Available as Open Source e.g. for Ruby,
PHP, Erlang, EmacsLisp…
Eberhard Wolff - @ewolff
Restrictions
§ Max source and build artifact size:
200MB
§ No sticky sessions
§ Dynos may not use more than
512MB RAM
§ I.e. max JVM heap about 400MB
Eberhard Wolff - @ewolff
PLATFORM AND OTHER
SERVICES
Eberhard Wolff - @ewolff
Platform
§ Amazon Web Services
§ US East region
§ EU West beta
§ Proven foundation
§ Can use AWS resources as part of the
solution
§ 750h per month free
Eberhard Wolff - @ewolff
Other Services
§ Heroku supports Add-ons
§ Postgresql and memcached by
Heroku
§ Many 3rd party
§ E.g. relational databases, NoSQL
databases, logging, caches…
§ Configuration passed to service via
environment variables

Eberhard Wolff - @ewolff
Heroku: Highlights
§ Very flexible: Supports many
different environments
§ Broad range of additional services
§ Also covers build
§ https://github.com/ewolff/newsapplication-heroku

Eberhard Wolff - @ewolff

More Related Content

PDF
ELK Stack
PDF
Micro Services - Smaller is Better?
PDF
Spring Boot
PDF
Micro Services - Small is Beautiful
PDF
Legacy Sins
PDF
Java Architectures - a New Hope
PDF
Spring Boot
PDF
Micro Services - Neither Micro Nor Service
ELK Stack
Micro Services - Smaller is Better?
Spring Boot
Micro Services - Small is Beautiful
Legacy Sins
Java Architectures - a New Hope
Spring Boot
Micro Services - Neither Micro Nor Service

What's hot (20)

PDF
Micro Service – The New Architecture Paradigm
PDF
Software Architecture for DevOps and Continuous Delivery
PDF
Continuous Delivery and Micro Services - A Symbiosis
PDF
Java Application Servers Are Dead!
PDF
High Availability and Scalability: Too Expensive! Architectures for Future E...
PDF
Microservice - All is Small, All is Well?
PDF
Developing Resilient Cloud Native Apps with Spring Cloud
PDF
External Master Data in Alfresco: Integrating and Keeping Metadata Consistent...
PDF
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
PDF
Testing Alfresco extensions
PPTX
IaC? VSTS to the rescue! Abbreviations explained
PDF
Java Application Servers Are Dead! - Short Version
PPTX
Continous integration and delivery for single page applications
PPTX
You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015
PPTX
Ansible benelux meetup - Amsterdam 27-5-2015
PDF
Future of Java
PDF
NCUG 2019: Super charge your API’s with Reactive streams
PPTX
I Don't Test Often ...
PPTX
Immutable Infrastructure: the new App Deployment
PDF
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
Micro Service – The New Architecture Paradigm
Software Architecture for DevOps and Continuous Delivery
Continuous Delivery and Micro Services - A Symbiosis
Java Application Servers Are Dead!
High Availability and Scalability: Too Expensive! Architectures for Future E...
Microservice - All is Small, All is Well?
Developing Resilient Cloud Native Apps with Spring Cloud
External Master Data in Alfresco: Integrating and Keeping Metadata Consistent...
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
Testing Alfresco extensions
IaC? VSTS to the rescue! Abbreviations explained
Java Application Servers Are Dead! - Short Version
Continous integration and delivery for single page applications
You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015
Ansible benelux meetup - Amsterdam 27-5-2015
Future of Java
NCUG 2019: Super charge your API’s with Reactive streams
I Don't Test Often ...
Immutable Infrastructure: the new App Deployment
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
Ad

Viewers also liked (8)

PDF
Amazon Elastic Beanstalk
PDF
NoSQL: An Architects Perspective
PDF
Continuous Delivery with java
PDF
PDF
How Small Can Java Microservices Be?
PDF
History of Java 1/2
PDF
Modern (Java) Enterprise Architectures
PDF
Continuous Delivery & DevOps in the Enterprise
Amazon Elastic Beanstalk
NoSQL: An Architects Perspective
Continuous Delivery with java
How Small Can Java Microservices Be?
History of Java 1/2
Modern (Java) Enterprise Architectures
Continuous Delivery & DevOps in the Enterprise
Ad

Similar to Heroku (20)

PDF
PPT
Heroku for-team-collaboration
PPT
Heroku for team collaboration
PPTX
what is Heroku , where, when and how it is used
PDF
Introduction to PaaS and Heroku
PDF
Modern web dev_taxonomy
PDF
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
PDF
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
PDF
Promise of DevOps
PDF
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
PDF
Amazon Elastic Beanstalk
PDF
Server’s variations bsw2015
PDF
Comment choisir entre Parse, Heroku et AWS ?
PDF
OSS SW Basics Lecture 03: Fundamental parts of open-source projects
PPTX
Prototype4Production Presented at FOSSASIA2015 at Singapore
PDF
Paasta: Application Delivery at Yelp
PPTX
Devops
PDF
Enterprise Heroku for Java
PPTX
How Open Source Embiggens Salesforce.com
PDF
{py}gradle
Heroku for-team-collaboration
Heroku for team collaboration
what is Heroku , where, when and how it is used
Introduction to PaaS and Heroku
Modern web dev_taxonomy
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Promise of DevOps
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
Amazon Elastic Beanstalk
Server’s variations bsw2015
Comment choisir entre Parse, Heroku et AWS ?
OSS SW Basics Lecture 03: Fundamental parts of open-source projects
Prototype4Production Presented at FOSSASIA2015 at Singapore
Paasta: Application Delivery at Yelp
Devops
Enterprise Heroku for Java
How Open Source Embiggens Salesforce.com
{py}gradle

More from Eberhard Wolff (20)

PDF
Architectures and Alternatives
PDF
Beyond Microservices
PDF
The Frontiers of Continuous Delivery
PDF
Four Times Microservices - REST, Kubernetes, UI Integration, Async
PDF
Microservices - not just with Java
PDF
Deployment - Done Right!
PDF
Data Architecture not Just for Microservices
PDF
How to Split Your System into Microservices
PDF
Microservices and Self-contained System to Scale Agile
PDF
Data Architecturen Not Just for Microservices
PDF
Microservices: Redundancy=Maintainability
PDF
Self-contained Systems: A Different Approach to Microservices
PDF
Microservices Technology Stack
PDF
Software Architecture for Innovation
PDF
Five (easy?) Steps Towards Continuous Delivery
PDF
Nanoservices and Microservices with Java
PDF
Microservices: Architecture to Support Agile
PDF
Microservices: Architecture to scale Agile
PDF
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
PDF
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?
Architectures and Alternatives
Beyond Microservices
The Frontiers of Continuous Delivery
Four Times Microservices - REST, Kubernetes, UI Integration, Async
Microservices - not just with Java
Deployment - Done Right!
Data Architecture not Just for Microservices
How to Split Your System into Microservices
Microservices and Self-contained System to Scale Agile
Data Architecturen Not Just for Microservices
Microservices: Redundancy=Maintainability
Self-contained Systems: A Different Approach to Microservices
Microservices Technology Stack
Software Architecture for Innovation
Five (easy?) Steps Towards Continuous Delivery
Nanoservices and Microservices with Java
Microservices: Architecture to Support Agile
Microservices: Architecture to scale Agile
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?

Recently uploaded (20)

PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PPT
Teaching material agriculture food technology
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Big Data Technologies - Introduction.pptx
PDF
Electronic commerce courselecture one. Pdf
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Approach and Philosophy of On baking technology
PDF
Modernizing your data center with Dell and AMD
PDF
Network Security Unit 5.pdf for BCA BBA.
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Teaching material agriculture food technology
Per capita expenditure prediction using model stacking based on satellite ima...
Spectral efficient network and resource selection model in 5G networks
MYSQL Presentation for SQL database connectivity
Empathic Computing: Creating Shared Understanding
Big Data Technologies - Introduction.pptx
Electronic commerce courselecture one. Pdf
GamePlan Trading System Review: Professional Trader's Honest Take
Chapter 3 Spatial Domain Image Processing.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
NewMind AI Weekly Chronicles - August'25 Week I
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Unlocking AI with Model Context Protocol (MCP)
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Approach and Philosophy of On baking technology
Modernizing your data center with Dell and AMD
Network Security Unit 5.pdf for BCA BBA.

Heroku

  • 1. Eberhard Wolff Freelance Consultant / Trainer Head Technology Advisory Board adesso AG
  • 2. HISTORY & ORIGIN Eberhard Wolff - @ewolff
  • 3. History & Origin § Originally started as Ruby PaaS § Now: Support for Node.js, Clojure, Grails, Scala and Python § Acquired by Salesforce.com Eberhard Wolff - @ewolff
  • 4. Programming Model § Jetty, Tomcat or Play! web server § Worker for background activities § Standard Java Programming Model Eberhard Wolff - @ewolff
  • 5. Scaling / High Availability § Servers must be manually started for scaling § Failed servers will be restarted Eberhard Wolff - @ewolff
  • 7. Command Line Tool § heroku § E.g. creates new applications § Other management functions addons o  logs o  etc. o  Eberhard Wolff - @ewolff
  • 8. Deployment §  heroku tool creates an empty git repository §  Deploy new versions with git §  Build (maven) done by Heroku §  Build automatically deployed §  No specialized tools needed – git is enough §  Integration with Atlassian Bamboo or Travis possible §  Alternative: WAR deployment Eberhard Wolff - @ewolff
  • 10. Code Changes Took the Spring application Converted to PostgreSQL <bean class="java.net.URI" id="dbUrl"> <constructor-arg value="#{systemEnvironment['DATABASE_URL']}" /> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="url" value="#{ 'jdbc:postgresql://' + @dbUrl.getHost() + í ':' + @dbUrl.getPort() + @dbUrl.getPath() }" /> <property name="username" value="#{ @dbUrl.getUserInfo().split(':')[0] }" /> <property name="password" value="#{ @dbUrl.getUserInfo().split(':')[1] }" /> </bean> Eberhard Wolff - @ewolff
  • 11. Eberhard Wolff - @ewolff
  • 12. Eberhard Wolff - @ewolff
  • 13. Eberhard Wolff - @ewolff
  • 14. Alternative: Eclipse PlugIn or Web Eberhard Wolff - @ewolff
  • 15. Full Stack Java EE No Java EE build pack available Would need WAR with Java EE libs Problem: JNDI DataSource Eberhard Wolff - @ewolff
  • 17. Flexibility §  Dynos: processes run on Heroku §  Procfile defines command line to start a “Dyno” §  Can be tuned and changed §  Can create custom “Buildpack” to run entirely different environments §  Available as Open Source e.g. for Ruby, PHP, Erlang, EmacsLisp… Eberhard Wolff - @ewolff
  • 18. Restrictions § Max source and build artifact size: 200MB § No sticky sessions § Dynos may not use more than 512MB RAM § I.e. max JVM heap about 400MB Eberhard Wolff - @ewolff
  • 20. Platform § Amazon Web Services § US East region § EU West beta § Proven foundation § Can use AWS resources as part of the solution § 750h per month free Eberhard Wolff - @ewolff
  • 21. Other Services § Heroku supports Add-ons § Postgresql and memcached by Heroku § Many 3rd party § E.g. relational databases, NoSQL databases, logging, caches… § Configuration passed to service via environment variables Eberhard Wolff - @ewolff
  • 22. Heroku: Highlights § Very flexible: Supports many different environments § Broad range of additional services § Also covers build § https://github.com/ewolff/newsapplication-heroku Eberhard Wolff - @ewolff