Cloud State of the Union for Java Developers
-
Upload
red-hat -
Category
Technology
-
view
2.757 -
download
1
description
Transcript of Cloud State of the Union for Java Developers
Burr Sutter• Currently Product Manager of:
– JBoss Tools (JBoss Developer Studio)– Seam – feed into EE6-CDI/Weld, JSF2, etc.– Snowdrop – JBoss Spring integration– Richfaces – JSF AJAX Controls– Arquillian – Integration Testing Framework– Forge – RAD Framework
• Also working with:– SteamCannon – JBoss PaaS– TorqueBox - RoR on JBoss– BoxGrinder – Virtual image/appliance creator
Outline
• Historical Perspective• Key Players• Key Concepts – IaaS, PaaS, SaaS, images• Key Battles – API Turf War• Developers, Developers, Developers• Demos
IaaS
PaaS
SaaS
Virtualization
Compute grid
Self-Service
Pay-as-you-go
Data grid
CLOUDin December 2010
Mainframe Minis PCClient/Server
Web1U Blades
Virtualization Cloudin a Box
IT EvolutionGot Boat
Ouch.
80s 90s 00s 10s70s
COBOL C/C++CORBA
4GLsRDBMS/SQL
Unix
HTMLCGI
GET/POSTCookies
JavaServlet
EJBWindows
Solaris/AIX
MVC - StrutsDI- Spring
ORM- HibernateXMLWS-*
JSFRIA-AJAX
AgileAutomated Testing
CIDSLsSVN
EE6GWT
MobileiOS/Android
Groovy/GrailsScala
OpenSocialWidgets/Gadgets
MavenGit
?
Developer EvolutionGot Boat
Ouch.
80s 90s 00s 10s70s
Yesterday
1990
InfoWorld archive on Google Books
1991
InfoWorld archive on Google Books
InfoWorld archive on Google Books
1991
TodaySame Game
Not the same players
Crossing the Chasm – MooreWhere is your organization?
TechiesGeek on it
VisionariesCompetitiveAdvantage
PragmatistsStick with the Herd
ConservativesHold On
SkepticsOnly when forced
http://en.wikipedia.org/wiki/Crossing_the_chasm
Gartner Hype Cycle – Cloud Computing 2010
What
http://blog.mariaspinola.com/2009/08/what-exactly-is-cloud-computing.html
PaaS - Primary Value Proposition
• Zero time to business value by removing:– Hardware evaluation, acquisition and implementation– OS & Database evaluation, acquisition and implementation– Middleware evaluation, acquisition and implementation– System tools (e.g. monitoring) evaluation, acquisition and implementation– No configuring Apache, load-balancers, tweaking Linux packages– No SAs– No DBAs– Hard drives fail, hard drives fill-up, memory chips fail, the OS needs patches– Peak capacity planning (end of month, Christmas, etc)– Lower capex, lower staff costs, portable, scalable, reliable, on-demand
Hybrid Cloud
Private Cloud BChicago Datacenter 1
Private Cloud ANew York Datacenter 1
Public Cloud Provider 1
VM: OS, JVM, App Server
.jar, .war, .ear
Hybrid Cloud (Bursting)
Private Cloud BChicago Datacenter 1
Private Cloud ANew York Datacenter 1
Public Cloud Provider 1
VM: OS, JVM, App Server
.jar, .war, .ear
Why
Ten Years of Evolution
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: 6+ months
1999
Time: ~1 Day
2010
Whois this for?
People Factor• By 2014, cloud platform experience will be a
priority skill in most IT hiring decisions (Gartner)• The rise of DevOps
– Scheduling– Provisioning– Configuration Mgmt– Release Mgmt– Alerts/Event Mgmt– Orchestration– Performance– Log– Correlation– Goal: Fully Automated
http://dev2ops.org/blog/2010/2/22/what-is-devops.htmlSource: http://en.wikipedia.org/wiki/DevOps
Point of View
Developers Devops
Build a new online inquiryUI – in 3 days
Roll the new inquiry componentinto production - now
Design/develop a AJAX-basedB2C web application that targets smartphonesand a real-time twitter feed.
Design/develop a resilient infrastructurethat will allow us to scale to 500 serversthe moment the Super Bowl ad runs.
Incorporate Agile principlesthat allow for changing functional requirements.
Incorporate Agile principlesthat allow for changing non-functional requirements.
Build a Web UI that insertsa record into a DB – in 1 day
Launch a 10-node HA clusterthat addresses DR - now
Web Stack Evolution
DB
UI
Web
Browser
HTML5CSS3
JavaScriptJSON
?
StoredProcedures
NoSQLCloud-based
Services
andRDBMS
HTMLHTML
+ AJAX
Struts
JSF1+Richfaces3*or
SpringMVCor
GWT
StoredProcedures
SpringMVCor
GWTor
RESTful UI Engine
2002 2006 2012-13+
HTML+ AJAX
Struts
StoredProcedures
2010 Mid-2011
HTML+ AJAX
JSF2+Richfaces4*or
SpringMVCor
GWT
StoredProcedures
Mobile +Cloud
Impact?
Bus Logic
EJB2
StrutsAction
Spring+
Hibernate
Spring or Seam2+
Hibernate/JPA
EJB 3.1 or Spring+
Hibernate/JPA
JAX-RS?+
Hibernate & NoSQL
* Or IceFaces/Primefaces
Future Web - HTML5+REST
HTML5+CSS3+jQuery/EXT JS
?
DB
JSONREST
Websocket
Cloud Service
NoSQL
Java Developers like Abstraction• Java Virtual Machine abstracts the OS• Java EE’s portable code & skills – servlet, JSP, JSTL, JSF,
JMS, EJB, JPA, CDI, etc.• JDBC – database portability• Hibernate – schema portability• Web Services – services built in .NET• REST – resource-oriented services built in Python• Avoid Vendor Lock-in
OSJVM
DB
JDBCServlet, JSP, JPAHibernate
Demo 1
Java APIs for the Cloud
• JClouds – jclouds.org– http://code.google.com/p/jclouds/
• JetS3t – focuses on Amazon S3 and CloudFront– http://jets3t.s3.amazonaws.com/toolkit/toolkit.html
• Typica – focuses on Amazon – compliments JetS3t– http://code.google.com/p/typica/
Amazon API into Java
• Siena – cloud db (SimpleDB, GAE’s DB) abstraction API– http://www.sienaproject.com
• Dasein - http://dasein-cloud.sourceforge.net/
• Cloudloop – focuses on cloud storage• AWS SDK for Java – from Amazon for Amazon
Non-Java Cloud abstractions
• libcloud – python - incubator.apache.org/libcloud/
• Fog – ruby - github.com/geemus/fog• Deltacloud – RESTful Services – deltacloud.org
jclouds
• Key-value stores• Blob stores• Provisioning:
– Compute– Storage
import siena.*;import static siena.Json.*;
@Table("employees")public class Employee extends Model { @Id(Generator.AUTO_INCREMENT) public Long id; @Column("first_name") @Max(200) @NotNull public String firstName; @Column("last_name") @Max(200) @NotNull public String lastName; @Column("contact_info") public Json contactInfo; @Column("boss") @Index("boss_index") public Employee boss; @Filter("boss") public Query<Employee> employees; public static void main(String[] args) { Employee e = new Employee(); e.firstName = "John"; e.lastName = "Smith"; e.contactInfo = map() .put("email", "[email protected]") .put("telephone", list("xxx", "yyy")); e.insert(); System.out.println(e.contactInfo); } public static Query<Employee> all() { return Model.all(Employee.class); }}
Siena www.sienaproject.com
Siena is a persistence API for Java inspired on the Google App Engine
Python Datastore API
Google App Engine DataStoreAmazon SimpleDB
DeltaCloud Basic Architecture
Deltacloud Any Cloud
Driver
AmazonGoGridOpenNebulaRackspaceRHEV-MRimuHostingEucalyptus *Terremark *vCloud *
Deltacloud.org* coming soon
Common REST API http://localhost/deltacloud
only runs on Linux (as of Dec 2010)RoR-based
•Buckets – create, destroy•Hardware Profiles – list•Images – list•Instance States – list•Instances – list, create, reboot, start, stop, destroy•Keys – create, destroy•Storage Volumes – create, destroy, attach, detach
IaaS Abstraction
Note: Not a broker – one installation to one cloud
Demo 2
Picking a OSS Winner?
• Number of recently active committers • Number of recent forum postings• jclouds has the strongest community• Daesin and Typica appear to be 1 person
teams.
JBossand the Cloud
Adding PaaS to Deltacloud
Deltacloud Any Cloud
Driver
AmazonGoGridOpenNebulaRackspaceRHEV-MRimuHostingEucalyptus *Terremark *vCloud *
Deltacloud.org* coming soon
Linux+JVMJBoss
Cluster-ReadyCloud Provider Image (e.g. AMI)
Adds •Deploy .WAR•Deploy .EAR•Add Node•App Management•App Monitoring
http://try.steamcannon.org
Demo 3
*aaSWhat’s your Service
Big Public Cloud Providers
IaaS
PaaS
Self Service Web UIs
• Amazon AWS Console (Native)• Google App Engine Console (Native)• Azure Console (Native)• Cloud Foundry (for EC2 only, acquired by
SpringSource)• SteamCannon (portable)• Makara (recently acquired by Red Hat)• Cloud Kick (recently acquired by Rackspace)• Stax Networks (recently acquired by CloudBees)
Each Cloud Vendor
• Servers/hardware profile• Images (virtual machines)• Instances (running virtual machines) - states• Buckets (blob storage)• Realms (us-east1)• Authentication• Many are REST, some Web Service (SOAP)
Amazon for Java Developers
• Eclipse Tools• Tomcat on Linux• Gotcha: Local
and remoteTomcatneeds to match
Cloud Services: Amazon
• Simple Storage Service – S3• Relational Data Service – RDS• SimpleDB• Simple Queuing Service – SQS• Simple Notification Service – SNS• Elastic Map Reduce (Hadoop)• Mechanical Turk• Flexible Payments Service - FPS
Cloud Services: Google• Blobstore• Channel - server push to JS client• Datastore• Memcache• Mail• XMPP• Task Queues• Images• Google User Accounts
Cloud Services: Microsoft
• Blob Store• SQL Azure• Reporting• Service Bus• Cache
Cloud Services: vmForce *
• Reports• Easy integration with all your customer-
related data (if you use Salesforce.com)• Social integration via Chatter• Security – Salesforce Users Accounts• Mobile support
* Expected – as of Dec 21st 2010 – not available to public
Salesforce – Force.com
• GUI-Driven Development• Apex programming language• Visualforce UI Framework
Google + Force.com
try { SObject account = new SObject(); account.setType("Account"); account.setField("Name", "My New Account" ); account.setField("Phone", "123 244 3455"); connection.create(new SObject[] { account }); } catch ( ConnectionException ce ) { log.warning(ce.getMessage()); }
http://developer.force.com/appengine
Call Salesforce Services from AppEngine
Public Cloud Providers• Google – for student projects, departmental apps,
not “Enterprise” – environment is unique and applications won’t move back “on-premise”. Q2 2011 (Hosted SQL)
• vmForce – for Salesforce.com extensions – leverage the data & functionality of the CRM++ SaaS.
• Amazon – for something more like what will be in your datacenter – bursting scenario
• Azure – more Microsoft-centric
Why give your datacenter to Amazon?
slashdot
• 5 Lessons We’ve Learned Using AWS1. 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.
2. 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
3. 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.
4. Learn with real scale, not toy modelsEarly 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.
5. 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.
http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html
Agile Team in the SkyOfferings like:Hudson/BambooMavenGit/SVNBugzilla/JiraFisheye
Develop ManageMonitor
Scale