Cloud State of the Union for Java Developers


Published on

This presentation provides a broad overview of what is going on in the Cloud computing world - for Java developers - presented on Dec 21st 2010 at the Atlanta Java Users Group - - no audio was recorded.

Published in: Technology
1 Comment
  • The demos included:
    - Use of Spring Tool Suite with Google App Engine
    - a brief look at Visual Studio & Microsoft Azure
    - simple jclouds & typica demo, along with AWS Java SDK
    - Eclipse + JBoss Tools for DeltaCloud
    - Steamcannon ( for JBoss PaaS running over EC2
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Cloud State of the Union for Java Developers

  1. 1. Burr Sutter <ul><li>Currently Product Manager of: </li></ul><ul><ul><li>JBoss Tools (JBoss Developer Studio) </li></ul></ul><ul><ul><li>Seam – feed into EE6-CDI/Weld, JSF2, etc. </li></ul></ul><ul><ul><li>Snowdrop – JBoss Spring integration </li></ul></ul><ul><ul><li>Richfaces – JSF AJAX Controls </li></ul></ul><ul><ul><li>Arquillian – Integration Testing Framework </li></ul></ul><ul><ul><li>Forge – RAD Framework </li></ul></ul><ul><li>Also working with: </li></ul><ul><ul><li>SteamCannon – JBoss PaaS </li></ul></ul><ul><ul><li>TorqueBox - RoR on JBoss </li></ul></ul><ul><ul><li>BoxGrinder – Virtual image/appliance creator </li></ul></ul>
  2. 2. Outline <ul><li>Historical Perspective </li></ul><ul><li>Key Players </li></ul><ul><li>Key Concepts – IaaS, PaaS, SaaS, images </li></ul><ul><li>Key Battles – API Turf War </li></ul><ul><li>Developers, Developers, Developers </li></ul><ul><li>Demos </li></ul>
  3. 3. IaaS PaaS SaaS Virtualization Compute grid Self-Service Pay-as-you-go Data grid CLOUD in December 2010
  4. 4. IT Evolution Mainframe Minis PC Client/Server Web 1U Blades Virtualization Cloud in a Box 80s 90s 00s 10s 70s Got Boat Ouch.
  5. 5. Developer Evolution COBOL C/C++ CORBA 4GLs RDBMS/SQL Unix HTML CGI GET/POST Cookies Java Servlet EJB Windows Solaris/AIX MVC - Struts DI- Spring ORM- Hibernate XML WS-* JSF RIA-AJAX Agile Automated Testing CI DSLs SVN EE6 GWT Mobile iOS/Android Groovy/Grails Scala OpenSocial Widgets/Gadgets Maven Git ? 80s 90s 00s 10s 70s Got Boat Ouch.
  6. 6. Yesterday
  7. 7. 1990 InfoWorld archive on Google Books
  8. 8. 1991 InfoWorld archive on Google Books
  9. 9. InfoWorld archive on Google Books 1991
  10. 10. Today Same Game Not the same players
  11. 12. Crossing the Chasm – Moore Where is your organization? Techies Geek on it Visionaries Competitive Advantage Pragmatists Stick with the Herd Conservatives Hold On Skeptics Only when forced
  12. 13. Gartner Hype Cycle – Cloud Computing 2010
  13. 14. What
  14. 15.
  15. 16. PaaS - Primary Value Proposition <ul><li>Zero time to business value by removing: </li></ul><ul><ul><li>Hardware evaluation, acquisition and implementation </li></ul></ul><ul><ul><li>OS & Database evaluation, acquisition and implementation </li></ul></ul><ul><ul><li>Middleware evaluation, acquisition and implementation </li></ul></ul><ul><ul><li>System tools (e.g. monitoring) evaluation, acquisition and implementation </li></ul></ul><ul><ul><li>No configuring Apache, load-balancers, tweaking Linux packages </li></ul></ul><ul><ul><li>No SAs </li></ul></ul><ul><ul><li>No DBAs </li></ul></ul><ul><ul><li>Hard drives fail, hard drives fill-up, memory chips fail, the OS needs patches </li></ul></ul><ul><ul><li>Peak capacity planning (end of month, Christmas, etc) </li></ul></ul><ul><ul><li>Lower capex, lower staff costs, portable, scalable, reliable, on-demand </li></ul></ul>
  16. 17. Hybrid Cloud Private Cloud B Chicago Datacenter 1 Private Cloud A New York Datacenter 1 Public Cloud Provider 1 VM: OS, JVM, App Server .jar, .war, .ear
  17. 18. Hybrid Cloud (Bursting) Private Cloud B Chicago Datacenter 1 Private Cloud A New York Datacenter 1 Public Cloud Provider 1 VM: OS, JVM, App Server .jar, .war, .ear
  18. 19. Why
  19. 20. Ten Years of Evolution Time: 6+ months 1999 Price Component 18,000 App Server HW 60,000 Weblogic 92,000 DB Server HW 243,000 Oracle 25,000 Symantec Café $438,000 + $ 87,600 annual maintenance Time: ~1 Day 2010
  20. 21. Who is this for?
  21. 22. People Factor <ul><li>By 2014, cloud platform experience will be a priority skill in most IT hiring decisions (Gartner) </li></ul><ul><li>The rise of DevOps </li></ul><ul><ul><li>Scheduling </li></ul></ul><ul><ul><li>Provisioning </li></ul></ul><ul><ul><li>Configuration Mgmt </li></ul></ul><ul><ul><li>Release Mgmt </li></ul></ul><ul><ul><li>Alerts/Event Mgmt </li></ul></ul><ul><ul><li>Orchestration </li></ul></ul><ul><ul><li>Performance </li></ul></ul><ul><ul><li>Log </li></ul></ul><ul><ul><li>Correlation </li></ul></ul><ul><ul><li>Goal: Fully Automated </li></ul></ul><ul><li> </li></ul>Source:
  22. 23. Point of View Developers Devops Build a new online inquiry UI – in 3 days Roll the new inquiry component into production - now Design/develop a AJAX-based B2C web application that targets smartphones and a real-time twitter feed. Design/develop a resilient infrastructure that will allow us to scale to 500 servers the moment the Super Bowl ad runs. Incorporate Agile principles that allow for changing functional requirements. Incorporate Agile principles that allow for changing non-functional requirements. Build a Web UI that inserts a record into a DB – in 1 day Launch a 10-node HA cluster that addresses DR - now
  23. 24. Web Stack Evolution DB UI Web Browser HTML5 CSS3 JavaScript JSON ? Stored Procedures NoSQL Cloud-based Services and RDBMS HTML HTML + AJAX Struts JSF1+Richfaces3* or SpringMVC or GWT Stored Procedures SpringMVC or GWT or RESTful UI Engine 2002 2006 2012-13+ HTML + AJAX Struts Stored Procedures 2010 Mid-2011 HTML + AJAX JSF2+Richfaces4* or SpringMVC or GWT Stored Procedures Mobile + Cloud Impact? Bus Logic EJB2 Struts Action Spring + Hibernate Spring or Seam2 + Hibernate/JPA EJB 3.1 or Spring + Hibernate/JPA JAX-RS? + Hibernate & NoSQL * Or IceFaces/Primefaces
  24. 25. Future Web - HTML5+REST HTML5+CSS3+jQuery/EXT JS ? DB JSON REST Websocket Cloud Service NoSQL
  25. 26. Java Developers like Abstraction <ul><li>Java Virtual Machine abstracts the OS </li></ul><ul><li>Java EE’s portable code & skills – servlet, JSP, JSTL, JSF, JMS, EJB, JPA, CDI, etc. </li></ul><ul><li>JDBC – database portability </li></ul><ul><li>Hibernate – schema portability </li></ul><ul><li>Web Services – services built in .NET </li></ul><ul><li>REST – resource-oriented services built in Python </li></ul><ul><li>Avoid Vendor Lock-in </li></ul>OS JVM DB JDBC Servlet, JSP, JPA Hibernate
  26. 27. Demo 1
  27. 28. Java APIs for the Cloud <ul><li>JClouds – </li></ul><ul><ul><li> </li></ul></ul><ul><li>JetS3t – focuses on Amazon S3 and CloudFront </li></ul><ul><ul><li> </li></ul></ul><ul><li>Typica – focuses on Amazon – compliments JetS3t </li></ul><ul><ul><li> Amazon API into Java </li></ul></ul><ul><li>Siena – cloud db (SimpleDB, GAE’s DB) abstraction API </li></ul><ul><ul><li> </li></ul></ul><ul><li>Dasein - </li></ul><ul><li>Cloudloop – focuses on cloud storage </li></ul><ul><li>AWS SDK for Java – from Amazon for Amazon </li></ul>
  28. 29. Non-Java Cloud abstractions <ul><li>libcloud – python - </li></ul><ul><li>Fog – ruby - </li></ul><ul><li>Deltacloud – RESTful Services – </li></ul>
  29. 30. jclouds <ul><li>Key-value stores </li></ul><ul><li>Blob stores </li></ul><ul><li>Provisioning: </li></ul><ul><ul><li>Compute </li></ul></ul><ul><ul><li>Storage </li></ul></ul>
  30. 31. <ul><li>import siena.*; import static siena.Json.*; @Table(&quot;employees&quot;) public class Employee extends Model {                 @Id(Generator.AUTO_INCREMENT)         public Long id;                 @Column(&quot;first_name&quot;)         @Max(200) @NotNull         public String firstName;                 @Column(&quot;last_name&quot;)         @Max(200) @NotNull         public String lastName;                 @Column(&quot;contact_info&quot;)         public Json contactInfo;                 @Column(&quot;boss&quot;) @Index(&quot;boss_index&quot;)         public Employee boss;                 @Filter(&quot;boss&quot;)         public Query<Employee> employees;                 public static void main(String[] args) {                 Employee e = new Employee();                 e.firstName = &quot;John&quot;;                 e.lastName = &quot;Smith&quot;;                 e.contactInfo = map()                         .put(&quot;email&quot;, &quot;;)                         .put(&quot;telephone&quot;, list(&quot;xxx&quot;, &quot;yyy&quot;));                 e.insert();                                 System.out.println(e.contactInfo);         }                 public static Query<Employee> all() {                 return Model.all(Employee.class);         } } </li></ul>Siena Siena is a persistence API for Java inspired on the Google App Engine Python Datastore API Google App Engine DataStore Amazon SimpleDB
  31. 32. DeltaCloud Basic Architecture Deltacloud Any Cloud Driver Amazon GoGrid OpenNebula Rackspace RHEV-M RimuHosting Eucalyptus * Terremark * vCloud * * coming soon Common REST API http://localhost/deltacloud only runs on Linux (as of Dec 2010) RoR-based <ul><li>Buckets – create, destroy </li></ul><ul><li>Hardware Profiles – list </li></ul><ul><li>Images – list </li></ul><ul><li>Instance States – list </li></ul><ul><li>Instances – list, create, reboot, start, stop, destroy </li></ul><ul><li>Keys – create, destroy </li></ul><ul><li>Storage Volumes – create, destroy, attach, detach </li></ul>IaaS Abstraction Note: Not a broker – one installation to one cloud
  32. 34. Demo 2
  33. 35. Picking a OSS Winner? <ul><li>Number of recently active committers </li></ul><ul><li>Number of recent forum postings </li></ul><ul><li>jclouds has the strongest community </li></ul><ul><li>Daesin and Typica appear to be 1 person teams. </li></ul>
  34. 42. JBoss and the Cloud
  35. 43. Adding PaaS to Deltacloud Deltacloud Any Cloud Driver Amazon GoGrid OpenNebula Rackspace RHEV-M RimuHosting Eucalyptus * Terremark * vCloud * * coming soon Linux+JVM JBoss Cluster-Ready Cloud Provider Image (e.g. AMI) <ul><li>Adds </li></ul><ul><li>Deploy .WAR </li></ul><ul><li>Deploy .EAR </li></ul><ul><li>Add Node </li></ul><ul><li>App Management </li></ul><ul><li>App Monitoring </li></ul>
  36. 44.
  37. 47. Demo 3
  38. 48. *aa S What’s your Service
  39. 49. Big Public Cloud Providers IaaS PaaS
  40. 50. Self Service Web UIs <ul><li>Amazon AWS Console (Native) </li></ul><ul><li>Google App Engine Console (Native) </li></ul><ul><li>Azure Console (Native) </li></ul><ul><li>Cloud Foundry (for EC2 only, acquired by SpringSource) </li></ul><ul><li>SteamCannon (portable) </li></ul><ul><li>Makara (recently acquired by Red Hat) </li></ul><ul><li>Cloud Kick (recently acquired by Rackspace) </li></ul><ul><li>Stax Networks (recently acquired by CloudBees) </li></ul>
  41. 51. Each Cloud Vendor <ul><li>Servers/hardware profile </li></ul><ul><li>Images (virtual machines) </li></ul><ul><li>Instances (running virtual machines) - states </li></ul><ul><li>Buckets (blob storage) </li></ul><ul><li>Realms (us-east1) </li></ul><ul><li>Authentication </li></ul><ul><li>Many are REST, some Web Service (SOAP) </li></ul>
  42. 53. Amazon for Java Developers <ul><li>Eclipse Tools </li></ul><ul><li>Tomcat on Linux </li></ul><ul><li>Gotcha: Local and remote Tomcat needs to match </li></ul>
  43. 54. Cloud Services: Amazon <ul><li>Simple Storage Service – S3 </li></ul><ul><li>Relational Data Service – RDS </li></ul><ul><li>SimpleDB </li></ul><ul><li>Simple Queuing Service – SQS </li></ul><ul><li>Simple Notification Service – SNS </li></ul><ul><li>Elastic Map Reduce (Hadoop) </li></ul><ul><li>Mechanical Turk </li></ul><ul><li>Flexible Payments Service - FPS </li></ul>
  44. 56. Cloud Services: Google <ul><li>Blobstore </li></ul><ul><li>Channel - server push to JS client </li></ul><ul><li>Datastore </li></ul><ul><li>Memcache </li></ul><ul><li>Mail </li></ul><ul><li>XMPP </li></ul><ul><li>Task Queues </li></ul><ul><li>Images </li></ul><ul><li>Google User Accounts </li></ul>
  45. 57. Cloud Services: Microsoft <ul><li>Blob Store </li></ul><ul><li>SQL Azure </li></ul><ul><li>Reporting </li></ul><ul><li>Service Bus </li></ul><ul><li>Cache </li></ul>
  46. 58. Cloud Services: vmForce * <ul><li>Reports </li></ul><ul><li>Easy integration with all your customer-related data (if you use </li></ul><ul><li>Social integration via Chatter </li></ul><ul><li>Security – Salesforce Users Accounts </li></ul><ul><li>Mobile support </li></ul>* Expected – as of Dec 21 st 2010 – not available to public
  47. 59. Salesforce – <ul><li>GUI-Driven Development </li></ul><ul><li>Apex programming language </li></ul><ul><li>Visualforce UI Framework </li></ul>
  48. 61. Google + try { SObject account = new SObject(); account.setType(&quot;Account&quot;); account.setField(&quot;Name&quot;, &quot;My New Account&quot; ); account.setField(&quot;Phone&quot;, &quot;123 244 3455&quot;); connection.create(new SObject[] { account }); } catch ( ConnectionException ce ) { log.warning(ce.getMessage()); } Call Salesforce Services from AppEngine
  49. 62. Public Cloud Providers <ul><li>Google – for student projects, departmental apps, not “Enterprise” – environment is unique and applications won’t move back “on-premise”. Q2 2011 (Hosted SQL) </li></ul><ul><li>vmForce – for extensions – leverage the data & functionality of the CRM++ SaaS. </li></ul><ul><li>Amazon – for something more like what will be in your datacenter – bursting scenario </li></ul><ul><li>Azure – more Microsoft-centric </li></ul>
  50. 63. Why give your datacenter to Amazon? slashdot
  51. 64. <ul><li>5 Lessons We’ve Learned Using AWS </li></ul><ul><ul><li>Dorothy, you’re not in Kansas anymore. If you’re used to designing and deploying applications in your own data centers, you need to be prepared to unlearn a lot of what you know. Seek to understand and embrace the differences operating in a cloud environment. </li></ul></ul><ul><ul><li>Co-tenancy is hard. Your best bet is to build your systems to expect and accommodate failure at any level, which introduces the next lesson </li></ul></ul><ul><ul><li>The best way to avoid failure is to fail constantly. Each system has to be able to succeed, no matter what, even all on its own. </li></ul></ul><ul><ul><li>Learn with real scale, not toy models Early in our production build out, we built a simple repeater and started copying full customer request traffic to our AWS systems. That is what really taught us where our bottlenecks were, and some design choices that had seemed wise on the white board turned out foolish at big scale. </li></ul></ul><ul><ul><li>Commit yourself. AWS is only a few years old, and building at a high scale within it is a pioneering enterprise today. There were some dark days as we struggled with the sheer size of the task we’d taken on, and some of the differences between how AWS operates vs. our own data centers. </li></ul></ul>
  52. 65. Agile Team in the Sky Offerings like: Hudson/Bamboo Maven Git/SVN Bugzilla/Jira Fisheye Develop Manage Monitor Scale