Upload
gunnar-hillert
View
3.402
Download
5
Embed Size (px)
DESCRIPTION
This session provides an overview of how to build and deploy Spring-based applications to the Cloud Foundry platform. The session will cover application configuration parameters, binding services to your application, deployment options using using STS, the vmc command tool, as well as the new Apache Maven plugin for Cloud Foundry. Gunnar will demonstrate how to deploy applications to both micro and public Cloud Foundry and will also show how debugging works with Cloud Foundry and how you can inspect services remotely using Caldecott. Gunnar will also show various options to keep your War-files deployable to both Cloud Foundry and stand-alone Servlet Containers using auto-reconfiguration, the cloud namespace, and Spring 3.1 profiles. Lastly, he will give a high-level overview how you can use Cloud Foundry together with Spring Integration in order to create scalable Spring applications.
Citation preview
© 2011 SpringSource, A division of VMware. All rights reserved
Cloud Foundry for Spring Developers
Gunnar Hillert, Member of Technical Staff, Spring Integration
2 2
Agenda
§ Overview § Deployment § Debugging § Profiling § Agnostic War Files § Modular Cloud Apps
3 3
What is Cloud Foundry?
4 4
5 5
Three Layers of Cloud Computing
§ SaaS • Software as a Service
§ PaaS • Platform as a Service
§ IaaS • Infrastructure as a Service
6 6
Private Clouds
Public Clouds
Micro Clouds
Choice of clouds
.js
Data Services
Other Services
Msg Services
.COM
…
7 7
Broad Support for Languages/Application Frameworks
§ JVM • Spring, Grails, Roo, Lift, plain Java
§ Ruby • Rails, Sinatra
§ Node.js § Community contributions • Erlang, Python, PHP
8 8
JVM Frameworks
§ Unit of deployment: Java WAR files • Can run any standard War file • Servlet 2.5
• Don’t assume particular container
§ Spring, Grails, Lift framework • Auto-reconfiguration goodies
9 9
Services
§ Relational database • Postgres • MySQL
§ Key-value store • Redis
§ Document store • MongoDB
§ Messaging • RabbitMQ
10 10
Open Source
§ Source code available under Apache License v2.0 • https://github.com/cloudfoundry/
• VCAP • https://github.com/cloudfoundry/vcap
• Project Website • http://cloudfoundry.org/
11 11
Logical View
12 12
Architecture
25
Architecture
Thursday, October 27, 11
13 13
Deployment Options
14 14
Deployment Options
§ VMC • Ruby based command line tool
§ SpringSource Tool Suite (STS) § Grails § Spring Roo Cloud Foundry Addon § Cloud Foundry Maven Plugin § vcap-java-client
• Used by STS and Cloud Foundry Maven Plugin
15 15
DEMO Deployment Options
16 16
Debugging
17 17
Debugging
§ Start Cloud Foundry applications in debug mode § Set Break Points for Micro Cloud Foundry § STS 2.8.1 supports it § Coming with Micro Cloud Foundry 1.1.1 (Currently RC)
18 18
Caldecott
§ TCP over HTTP tunnel § Local client § Remote server
19 19
Caldecott - Multiple Services and Sessions
§ One vcc server instance • Manages multiple tunnels
§ One vcc client instance per service • Multiple local apps may share a
client if they connect to the same remote server:port
• Each listens on different local port
20 20
DEMO Debugging
21 21
Profiling
22 22
Profiling – Spring Insight
§ Providing real-time application runtime performance and behavior information for Java Spring applications
§ Beta available for CloudFoundry.com § Signup at: insight.cloudfoundry.com § Write your own plugins
• https://github.com/SpringSource/spring-insight-plugins
23 23
DEMO Spring Insight for Cloud Foundry
24 24
Agnostic War Files
25 25
Agnostic War Files – Toolbox
§ Auto Reconfiguration § Cloud Namespace § Spring 3.1 Profiles
26 26
Agnostic War Files – Auto Reconfiguration
§ Move existing Applications easily to Cloud Foundry § Makes 2 modifications at deploy time:
• Adds additional Jar • Updates web.xml
§ BeanFactoryPostProcessor examines the application context before creating beans
§ Swaps existing beans of matching types
27 27
Agnostic War Files – Auto Reconfiguration
Service Type Replaced Bean Type
MySQL javax.sql.DataSource
Postgres javax.sql.DataSource
Redis org.sf.data.redis.connection.RedisConnectionFactory
MongoDB org.sf.data.document.mongodb.MongoDbFactory
RabbitMQ org.sf.amqp.rabbit.connection.ConnectionFactory
28 28
Agnostic War Files – Auto Reconfiguration
§ Limitations • one service of a given service type • one bean of the matching type
• If application does not follow limits, auto-reconfiguration mechanism will not take place
29 29
Agnostic War Files – Cloud Namespace
§ Explicit configuration of Cloud Foundry Services § Finer grained control of configuration parameters § Necessary when configuring multiple services of same type
30 30
Agnostic War Files – Cloud Namespace
§ Setup – Maven
§ Setup – Spring Application Context
<dependency> <groupId>org.cloudfoundry</groupId> <artifactId>cloudfoundry-runtime</artifactId> <version>0.8.1</version> </dependency>
<?xml version="1.0" encoding="UTF-8"?> <beans … xmlns:cloud="http://schema.cloudfoundry.org/spring" xsi:schemaLocation=“http://schema.cloudfoundry.org/spring http://schema.cloudfoundry.org/spring/cloudfoundry-spring-0.8.xsd">
31 31
Available Namespace Elements
§ Define and use a DataSource
§ Optional Subelements • <cloud:connection> • <cloud:pool>
<cloud:data-source id="dataSource" /> <bean id="jdbcTemplate” class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean>
32 32
Available Namespace Elements
§ MongoDB Support • <cloud:mongo-db-factory>
§ Redis Support • <cloud:redis-connection-factory>
§ RabbitMQ • <cloud:rabbit-connection-factory>
§ Autocreate Services • <cloud:service-scan>
33 33
Agnostic War Files – Spring Profiles
§ Spring 3.1 adds new support for environments § Deploy to Cloud Foundry and Stand-alone Containers
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongoDbFactory" /> </bean> <beans profile="default"> <mongo:db-factory id="mongoDbFactory" dbname="pwdtest" host="127.0.0.1" port="27017" username="test_user" password=”s3cr3t" /> </beans> <beans profile="cloud"> <cloud:mongo-db-factory id="mongoDbFactory" /> </beans>
34 34
Modular Cloud Apps
35 35
Monolithic Enterprise Application
36 36
Benefits of App-level Modularity
§ Efficient Elasticity § Fault Isolation § Dynamic Configuration § “always-on”/Rolling Upgrades
37 37
Modularized Enterprise Application
38 38
DEMO Spring Integration
39 39
Resources
40 40
Resources
§ Cloud Foundry on Ubuntu http://blog.dustinkirkland.com/2011/08/howto-install-cloudfoundry-server-paas.html
§ VMC http://support.cloudfoundry.com/entries/20012337-getting-started-guide-command-line-vmc-users http://cloudfoundry.zendesk.com/entries/20012462-getting-started-guide-sts-users http://blog.dustinkirkland.com/2011/07/getting-started-with-cloudfoundry.html
http://blog.cloudfoundry.com/post/9037486110/vmc-everywhere
41 41
Resources
§ Cloud Foundry Maven Plugin http://blog.springsource.com/2011/09/22/rapid-cloud-foundry-deployments-with-maven/
https://github.com/cloudfoundry/vcap-java-client/tree/master/cloudfoundry-maven-plugin (Sources + Reference Documentation)
§ Caldecott http://blog.cloudfoundry.com/post/12928974099/now-you-can-tunnel-into-any-cloud-foundry-data-service
§ Cloud Foundry Samples https://github.com/SpringSource/cloudfoundry-samples
42 42
Resources
§ Spring Auto Reconfiguration http://blog.springsource.org/2011/11/04/using-cloud-foundry-services-with-spring-part-2-auto-reconfiguration/
§ Spring Insight for Cloud Foundry http://insight.cloudfoundry.com/
§ Cloud Foundry Namespace
http://blog.springsource.org/2011/11/09/using-cloud-foundry-services-with-spring-applications-part-3-the-cloud-namespace/
§ Spring Profiles http://blog.springsource.org/2011/11/10/using-cloud-foundry-services-with-spring-part-4-%E2%80%93-spring-profiles/
43 43
Resources
§ Spring Integration http://www.springsource.org/spring-integration https://github.com/SpringSource/spring-integration
§ Samples
https://github.com/SpringSource/cloudfoundry-samples https://github.com/markfisher/springone-wgrus
44 44
THANK YOU!
Email: [email protected] Twitter: https://twitter.com/ghillert Blog: http://blog.hillert.com
Sign up for a free account at: http://www.cloudfoundry.com/