You are on page 1of 57

PaaSing a JavaEE 6 Application

Kshitiz Saxena

LOGO

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracles products remains at the sole discretion of Oracle.

Program Agenda
Cloud Computing PaaS and Java EE PaaS implications on application deployment Design Model IMS Service Orchestration Auto-Scaling Resources

Cloud Computing
Whats new?
Illusion of infinite computing resources available on demand Elimination of an up-front commitment by cloud users Ability to pay for use of computing resources on a shortterm basis

(+) Above the Clouds, Armbrust et al, UC Berkeley, 2009

Cloud Computing
Essential Characteristics
On-demand Self-Service Broad network access Resource Pooling Rapid Elasticity Measured Service

(*) NIST Definition of Cloud Computing 800-145

Cloud Computing
Deployment Models
Private Cloud
Operated solely for an organization On-premise or off-premise

Community Cloud Public Cloud


Access to general public

Hybrid Cloud
2 or more clouds, Cloud Bursting
(*) NIST Definition of Cloud Computing 800-145

Cloud Computing
Service Models
Software as a Service (SaaS) Platform as a Service (PaaS)
Deploy customer-created applications Using languages and tools supported by PaaS Provider No control of underlying cloud infrastructure Control over deployed applications, hosting env. Configurations

Infrastructure as a Service (IaaS)


(*) NIST Definition of Cloud Computing 800-145

Program Agenda
Cloud Computing PaaS and Java EE PaaS implications on application deployment Design Model IMS Service Orchestration Auto-Scaling Resources

PaaS and Java EE


Java EE design principles and capabilities
Common programming model for enterprise developers Runtime handles applications infrastructure concerns Declarative resource references Scalable (scale-out) component models

PaaS and Java EE


Java EE 7: Making Java EE ready for the cloud
Enhancements
New Roles for PaaS Services as first class citizens Multitenancy

Evolution, not a revolution!

New PaaS Roles in Java EE 7


PaaS Product Vendor PaaS Provider PaaS Account Manager PaaS Customer Application Submitter Application Administrator End-User

Java EE 7 Roles in a PaaS scenario

Program Agenda
Cloud Computing PaaS and Java EE PaaS implications on application deployment Design Model IMS Service Orchestration Auto-Scaling Resources

PaaS Implications on Deployment


Simplified PaaS Application Deployment
Single-click, self-service, push to cloud

PaaS Implications on Deployment


Services Management
Automatic Service Provisioning and Management
Service Orchestration
Automatic Service Dependency discovery Service Provisioning and Association

Handle operational infrastructure concerns automatically


Network configuration, HA, Clustering, Load Balancing

Application and Service deployment versioning

PaaS Implications on Deployment


Virtualized runtimes
Scalable virtualized on-demand environment
Support multiple cloud deployment models
Public, Private, Hybrid

PaaS Provider decoupled from IaaS infrastructure Multi-tenancy

PaaS Implications on Deployment


Scaling and Operations
Automatic Scaling of Services
Scale to applications needs User-defined alerts and actions

Control over application hosting environment


Flexibility in choice of application services, framework Rich service configuration Shared services Extensible runtime to allow new Services

A sample application stack

Traditional Java EE Application Deployment

Java EE PaaS Application Deployment

Program Agenda
Cloud Computing PaaS and Java EE PaaS implications on application deployment Design Model IMS Service Orchestration Auto-Scaling Resources

Terminology
Service ServiceType
Java EE, RDBMS, HTTP Load Balancer etc.

Services scope and lifecycle


Provisioned Services
Application scoped Shared

External (a priori ) services

Specification of Service Metadata


Optional!
When not specified (vanilla EE app archives)
Orchestration Engine automatically handles discovery of service deps Automatic wiring to default Service Templates

Metadata may be specified when:


Finer grain control of application environment desired Application-specific Service configuration

Design Model

Specification of Service Metadata


Service Definition
Metadata used to provision and configure a Service
What : Service characteristics (functional and non-functional) Template matching How : Explicit Template specification Template wiring

Service Reference
An application components dependency on a Service
Explicit : User-specified through deployment descriptors Implicit and Discovered: Information contained within the archive

Service Dependency Specification

Sample Service Definition

Sample Service Reference

GlassFish PaaS Runtime Architecture

Service Orchestration Flow

Demo
PaaSing a Java EE Application in the Cloud

Conference Planning in the Cloud

<glassfish-services> <service-description init-type="LB" name="ConferencePlanner-lb"> <template id="LBNative"/> <configurations> <configuration name="https-port" value="50443"/> <configuration name="ssl-enabled" value="false"/> <configuration name="http-port" value="50080"/> </configurations></service-description> <service-description init-type="JavaEE" name="ConferencePlanner"> <characteristics> <characteristic name="service-type" value="JavaEE"/> </characteristics> <configurations> <configuration name="max.clustersize" value="4"/> <configuration name="min.clustersize" value="2"/> </configurations> </service-description> ... </glassfish-services>

PaaS Deployment for Demo

Program Agenda
Cloud Computing PaaS and Java EE PaaS implications on application deployment Design Model IMS Service Orchestration Auto-Scaling Resources

GlassFish PaaS Runtime Architecture

IMS
One-liner
Provide common management interface across different virtualization technologies

IMS

IMS functionalities
Support virtualization definitions Isolates from low level Virtual Machine allocation/interface
Integrates with native solutions through Plug-in/SPI mechanism.

Template management ServerPool / Hardware management (depending on the virtualization technology).

Templates
A virtual-machine disk
can be duplicated used to instantiate a virtual-machine.

Virtualization Specific Provides 1 to many service types (usually one). Template are customized during the first startup
DAS location Template parameters like instance name Customization mechanism is virtualization specific

Program Agenda
Cloud Computing PaaS and Java EE PaaS implications on application deployment Design Model IMS Service Orchestration Auto-Scaling Resources

GlassFish PaaS Runtime Architecture

Service Orchestration
One-liner
Enable single-click deployment of a PaaS application through automatic service dependency discovery, service provisioning and service association

Service Dependency Discovery

Service Provisioning

Service Association

Program Agenda
Cloud Computing PaaS and Java EE PaaS implications on application deployment Design Model IMS Service Orchestration Auto-Scaling Resources

GlassFish PaaS Runtime Architecture

Auto-Scaling
One-liner
The ability of a system to automatically adapt to volume of traffic without impacting throughput and availability

What we need
To determine the health of Services in the System
Number of metrics can be used An arbitrary / complex condition need to be evaluated Arbitrary actions can be taken

A framework that allows


Ability to define new Metric sources easily (Extensible) Ability to express complex queries easily Ability to create new Actions easily`

Determining State of Services


Monitor System Resources
CPU
Used and idle CPU times

Memory
Process memory: Allocated, Resident etc. JVM memory: Used, Committed and Max memory

Disk
Reads, Writes per seconds Bytes read, written etc.

Determining State of Services (Contd.)


Monitor Application Related Objects
HTTP Sessions created / destroyed per second Number of HTTP requests that arrived Connection Pools: Number of connections acquired / released etc. Database Queries executed Transaction status: Number of commits / rollbacks Response time of a specific URL

Many, many, many other metrics

We have metrics. Now what?


Use relevant metrics to determine health of the services
Such as Java EE Clustered Instances, Clustered DB

Use Trends
Average memory usage above 60% for last 10 min Avg Response times of 90% of requests in last 10 min below 5ms

Use Combinations
Are both CPU and Memory usages high ? Is CPU usage of Java EE Cluster and number of queries executed on Database within certain limits ?

What Actions can you take?


Possible Actions
Send email to admin Log some info Scale up / Scale down to meet the load Send a (JMX) notification And many, many, many more

Program Agenda
Cloud Computing PaaS and Java EE PaaS implications on application deployment Design Model Service Orchestration Auto-Scaling IMS Resources

Resources
For more information
GlassFish 4.0 http://download.java.net/glassfish/4.0/promoted/ Spec http://bit.ly/sAZtEL Java EE 7 keynote demo http://bit.ly/q9T7Z2 Java EE 7 http://jcp.org//en/jsr/detail?id=342 PaaS Model http://bit.ly/o3XZIP Above the Clouds: A Berkeley View of Cloud Computing http://bit.ly/15MEL0 The NIST Definition of Cloud Computing -- Special Publication 800145 http://1.usa.gov/ohXnlM

Q&A

PaaSing a JavaEE 6 Application


Kshitiz Saxena

Conference Session - 25360

LOGO

You might also like