There are many Java Cloud Platforms in the market today. CloudFoundry, CloudBees, Google App Engine, OpenShift, Heroku and, recently announced, Oracle Java Cloud Service. These variety of options often create a dilemma to choose a platform. This presentation would help in understanding and using these platform with some examples. This comparison would help in comparing them for selecting for your application. This presentation would also help in understanding various key factors to look for.
2. Issues
! High Waste
! Occasional unfulfillment of demand
! High Upfront Cost
! Ongoing Op Cost
Time
Cost
People Cost
Operational Costs
Anticipated Peak Need of Capacity
Average Utilization of Capacity
3. Why Cloud?
! Cost:
! CapEx Cost, Operational Costs and Infra (cooling, electricity, space)
costs
! Utility Model: Pay for what you need.
! Efficiency: lower hardware and IT costs
! Agility: Add capacity fast
! Flexibility: Add / Shrink dynamically
5. IaaS vs PaaS
is it a Java AMI?
IaaS PaaS
Pricingt: IaaS cost + Software + Ops
Admins (less)
Pricing: IaaS + Stack (including DB)
included (but most of the vendors provide
only Open source J
OS and Level Access, Flexibility Freedom from Need to manage OS level
resources
Good flexibility with great responsibility Less Flexibility
Build your own stack Optimized Development Stack
Build tools for dev->Ops Dev to Ops Process defined
Build and do Apps monitoring Apps level monitoring part of the stack
Manage Backup/ Recoveries Backup & Recoveries part of DB support
Enterprises Prefer IaaS Startups , Mobile Apps
6. Why PaaS ? Summary
! No CapEx cost, Pay as you Use
! Quick Dev to Deployment Resulting into Fast GTM
! No Admin cost (compared no-cloud or even IaaS)
! Tested stack
! Monitoring Builtin
Cons:
Still evolving
Less flexibility
7. Amazon Beanstalk! Languages: Java, PhP, .Net
! Java Stack: TomCat + MySQL + Dynamo Build your stack
! Deployment: Amazon Visual Toolkit / Drop war
! Development: Eclipse Plugin
! Infrastructure: AWS EC2, S3
! Databases: Mysql, RDS, DynamoDB,
! Security: FIPS 140-2, ITAR, ISO 27001, PCI DSS Level 1, FISMA
Moderate, and SOC 1/SSAE 16/ISAE 3402
! Special Services: S3 for storage, ElasticCache, Route53,
! Experience:
! Easy deployment, drop war, Easy Monitoring UI but otherwise barebone
! Flexibility to change config
! Very basic stack.
9. Google App Engine
! Preview April 2008!
! Languages: Python, Java (**), PHP
! Java Stack: Jetty, JSP, JSF, JDO, JPA, GWT, Spring (***)
! Development: Eclipse Plugin
! Infrastructure: Google Datacenter Infrastructure
! Databases: BigTable, GQL (MySQL5.5 - join)
! Special Services: Mail Service, Messaging, Memcache, Image API, TaskQ,
Log API
! Experiment: MapReduce, TextSearch, Openauth(*) OpenID(*)
! Reference Customers: Khan Academy, BestBuy, Pulse,
! Experience:
! Issues in moving Spring Based / Hibernet App
! Restrictions: e.g. Blobstore API instead of file access
! Very proprietary
10. Important Considerations for PaaS
! Stack: Programming Languages & Stack
! Database: SQL , NoSQL, Versions
! Vendor Locking / Openness
! Availability & Maturity: Public / Beta, Failure Handling, Backup &
Restores, Uptime, SLA, Reference Customers
! Additional Services:
! Messaging, Logging, Monitoring
! Security: PCI and other certifications
! Price: Usage based, Clock Based, Per Bandwidth
! Customer Service, Forums, Documentation
11. CloudFoundry
! First OpenSource PaaS!
! Languages: Python, Java (**)
! Java Stack: Jetty, SpringSource Platform, Extended with Big Data
! Infrastructure: AWS EC2, Other Infra too
! Databases: mysql, Postgres, MongoDB,
! Special : Private , Public and Micro Cloud (local dev, offline)
! Service: RabbitMQ
! Experience:
! Seamless for Spring based.
12. CloudBees
! Stack: Java
! Infra: EC2
! Database: MySQL, Postgres, MongoDb
! Dev: Eclipse Plugin, GIT and Jenkins on Dev@Cloud
! Dev@Cloud
! Development focused tools and easiness
! Maven Repository and Build with high performing builds
! Continuous Integration Jenkins
! Partnership: Sonar, Selenium
! Many free plugins
! Scalable performance
! Run@Cloud:
! Tomcat / Java EE on EC2
! Easy deploy
! Simple Monitoring
! Access to Logs, AppDynamic for performance, PaperTrail logs
! Simple 1 server mysql + RDS for scaling
13. Heroku
! Preview launched in 2007 a Ryby PaaS!
! Languages: Ruby, Java, Scala, Python, Clojure, Grails, …
! Java Stack: Jetty , NewRelic for monitoring
! Development: Heroku Toolbelt, GIT + Maven
! Infrastructure: AWS EC2 Dynos: Web Dyno & Worker Dyno
! Databases: PostgreSql, MongoDB, Addons:Neo4J, MyRedis etc..
! Special Services: 60s/16MB backup
! Differentiator: Satble, and Very Large marketplace of plug-ins
! Reference Customers: Macy’s, Career Build, Code for America..
! Experience:
! Maven to build and Git push to deploy
15. Oracle Cloud
! From Oracle, 2012
! Languages: Java
! Java Stack: WebLogic
! Development: Eclipse, JDeveloper, NetBeans
! Infrastructure: Oracle
! Databases: Oracle
! Services: Identity Service, User Role Manager, SSO,
! Specials: Oracle ADF, ADF Services, Good monitoring
! Experience: Enterprise Oriented suitable to work with Oracle Java
App development stack.
16. Best Case(s) for PaaS Vendor
! Google App Engine: SLA, Price, Stability at cost of Locking In
! Microsoft Azure: If you are more on .Net and need Java PaaS
! Amazon BeanStalk: PaaS blends with IaaS : Flexibility and Access
! CloudFoundry: Flexibility, OpenSources, MicroCloud
! CloudBees: Developer focused, CI, Stable
! OpenShift: Java EE especially Jboss Enterprise version
! Oracle Cloud: Oracle Infrastructure ADF, Integration with Hosted
Oracle Apps
17. Summary
! Java PaaS platforms are still evolving and maturing
! Less flexibility to change versions of software
! Mostly “Connected” development
! No Standardization, Danger of lockin: Different services (find your
requirement and compatible)
! Less control for performance tunings / monitoring
! Great for Development and testing
! Far from Enterprise Scale Applications however Enterprises
experimenting with small customer apps and trainings
! Suitable for Startups and mobile Apps
18. Comparison
Amazon GAE Cloud
Foundry
CloudBees Heroku OpenShift Oracle
J2EE N N N N N Y Y
Java Server Tomcat Jetty Tomcat Tomcat Jetty JBoss Weblogic
SQL Oracle,
Mysql,
Postgres
Mysql,
Postgres
Mysql,
Postgres
Mysql,
Postgres
Mysql,
Postgres
Mysql,
Postgres
ORacle
NOSQL Dynamo BigTable MongoDb MongoDb MongoDb MongoDb -
Services + +++ ++ + +++ + ++
Maturity +++ ++ ++ + + +
Dev Ops + + ++ +++ + ++ +
LockIn + +++ + + + + ++
Portabililty +++ - +++ +++ + ++ +