This document discusses deploying and scaling Java applications on Heroku, a platform as a service (PaaS) that hosts applications in the cloud. Some key points:
- Heroku allows developers to run any programming language and focuses on innovation rather than infrastructure maintenance.
- Applications are deployed as isolated units called dynos that can be scaled horizontally. Logging and metrics are centralized.
- The platform provides services for load balancing, managing processes, and extending functionality through add-ons.
- Best practices include building stateless, self-contained applications that can be deployed across dynos and adopt a "12 factor app" methodology.
2. Safe Harbor Statement
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. 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.
4. Continuous Delivery
“..reducing the cycle time between an idea and usable
software”
- Martin Fowler
“Software delivers no revenue until it is in the hands of
its users.”
-Jez Humble
“.. leads to deeper relationship between IT, their
business customer, and their final customers.”
-Jez Humble
6. Monolithic > Micro apps
- Slower
Releases
Web App -1 Web App -2 - Memory footprint
- “noisy” neighbour
Scheduled MDBs EJBs
Jobs - Single
Language
Session Managers Message Listeners
Clustering M&M
App Server Core
JVM
7. Monolithic > Micro apps
+ Faster
Web App 1 Web App 2
Releases
+ Isolation
JVM / Container JVM / Container
+ Small Optimized
Apps
+ Scale independently
Message Batch
Driven apps Jobs + Composite Apps
JVM / Container JVM / Container + Polyglot Architecture
Cloud Services
Cloud icon – courtesy from The Noun Project collection
8. One language >
Polyglot
Presentation Tier
(JSP, JSF, Struts)
Business Logic Tier
(Java)
Data Tier
RDBMS
- No one size fits all
- Lower productivity
9. One platform > Polyglot
Presentation Tier Presentation Tier
(JSP, JSF,, Struts) (Rails, HTML5..)
Business Logic Tier Business Logic Tier
(Java) (Java, Scala, NodeJS)
Data Tier Data Tier
(RDBMS) RDBMS, NoSQL
+ Productivity
+ Language strengths
+ Performance
10. Application UIs > APIs
Application UI
(Browser)
Business Logic
Data Tier
- SOAP
- Single Viewport
- Stateful apps
11. Application UI > APIs
Application UI Application UI Mobile / Tablets
Devices
(Browser) (Browser) (Java,iOS)
Business Logic Business Logic API
Data Tier Data Tier
+ JSON
+ Multi-Device
+ Stateless apps
+ Monetization
12. Stateful > Stateless
Sticky State Load Balancer
App App App
Server Server Server
1 1 1
Sessio Sessio Sessio
n n n
- No continuous deployment
- Memory footprint
- Less elastic
13. Stateful > Stateless
Sticky State Load Balancer Load Balancer
App App App
Server Server Server App App App
1 1 1
Sessio Sessio Sessio
n n n
Distributed Cache
+ Continuous Deployment
+ Lower memory footprint
+ Elastic Scale
14. App Server >
HTTP
Applications
Container
- Dev / Production Parity
- Complex packaging / deployment
22. IaaS Reduces Costs
Traditional On-Premise Infrastructure as a
Development Service
Your Apps
Software Stack Software Stack
Mobile Server Mobile Server
Web Server Web Server
Software App Server App Server
Infrastructure Hyper V Server Hyper V Server
(Slow) Security Server Security Server
Operating System Operating System
Increase server utilization
Hardware
Infrastructure Reduce server costs
(Expensive)
Ease server administration
23. Still have stack
Infrastructure as a
Service
management
Your Apps
Software Stack
Mobile Server You still manage the software stack
Web Server
Software
Infrastructure
App Server You still upgrade and patch
Hyper V Server
(Slow)
Security Server
You still manually scale, tune and back-up
Operating System
Hardware
Infrastructure
(Expensive)
24. Run Forget See Trust &
Anything Servers Everything Manage
25. Run anything
HTML5 CometD
JavaScript
Django Perl
NoSQL Apex
Ruby Groovy
Spring Roo
MongoDB
SOQL Grails Scala
Play ! Hibernate Python
Spring MVC Clojure
Java NodeJS Rails PHP
27. Trust & Manage Forget Servers
Elastic Load
balancing
Dyno manifold
• Virtualized Linux Dyno manifold
containers (LxC)
• Dynos are fully
isolated from
each other
• Erosion resistant
28. See
Everything
Elastic Load
balancing
Logplex
• Real time Dyno manifold
stream of all
your
application
events
• Consumable Logplex
by 3rd party
services or
syslog drains
29. See
Everything
Elastic Load
balancing
API
• Process status Dyno manifold
Control Surface
• Manage your
processes
API
• Scale up or
down your
apps Logplex
Clients:
• CLI
• Eclipse plugin
• Apps
30. Elastic Load
balancing
Addons
• Extend the Dyno manifold
Control Surface
Platform
• Pre-Installed
API
Services
• Common
Components Logplex
Addons
31. Trend You will be building
Micro apps Web app, API
service
Cloud Services PubNub, Papertrail
Environments Salesforce Oauth
Stateless Distributed sessions w/Memcache
Containerless Webapp-runner
There are so many tools out there that solve for unique and niche use cases Every application has many use cases that can be solved by different frameworks and languages pretty easilyRoR solves for web app development and makes the developer really productiveScala makes functional programming a lot more easy and popularized the “actor” modelNodeJS is becoming a hot framework for highly concurrent event driven applicationsGrails and Groovy are leading the pack in terms of DSLs for JVM languagesTwitter uses Scala for their business tier and RoR for the UI layer, Groupon uses RoRThere is no 1 single language/framework that can satisfy all your app’s needs.