Title: Practical Guide for Developing Enterprise Application on the Cloud
1Practical Guide for Developing Enterprise
Application on the Cloud
- Nati Shalom
- CTO
- GigaSpaces Technologies
2About GigaSpaces eXtreme Application Platform
(XAP)
A middleware platform enabling applications to
run a distributed cluster as if it was a single
machine
2,000 Deployments
Among Top 50 Cloud Vendors
100 Direct Customers
GigaSpaces has allowed us to greatly improve the
scalability and performance of our trading
platform
GigaSpaces exceeded our performance requirements
and enabled us to build a flexible,
cost-effective infrastructure
GigaSpaces has saved us significant time and
cost
Geoff Buhn, Options Trading Technology Manager,
SIG
Phil Ruhlman, CIO, Gallup
Julian Browne, Virgin Mobile
2
2
3Business motivation
- IT CANT KEEP UP WITH THE DEMANDS OF THE BUSINESS
- Capacity planning is too difficult
- Time to market
- The business wants a quick and dirty way to
prototype - Cost saving
Source Forrester March 09
4The ideal world
5The challenge with existing applications
Business tier
Web Tier
Load Balancer
Back-up
Back-up
Back-up
Back-up
Data Tier
Messaging
6Challenges summary
- Adding additional resources dynamically
- No out-of-the-box infrastructure for J2EE
- Dealing with a lack of persistence
- Dealing with distributed programming models
- Having to think about the whole stack. Not just
the code. - Using Memory Data Grids and Caching
considerations - Messaging
- Understanding configuration management tools
- Pricing and licensing
Source Cloud Mailing List
7How users deal with the current challenges
- Deploy multiple Web servers
- Deploy multiple load balancers
- Deploy several database servers.
- Another way of dealing with databases is to not
use them - Source Grig Gheorghiu blog
- Experiences deploying a large-scale
infrastructure in Amazon EC2
- Requires a lot of effort in setting up the
environment. - Doesnt cover all the challenges
8Meeting the challenges
- Adding additional resources dynamically
- Through virtualization of the middleware stack
- Dealing with a lack of persistence
- Using IMDG as a front end to the database
- Dealing with distributed programming models
- Use Remoting abstraction to simplify the
distributed programming model - Having to think about the whole stack. Not just
the code. - Use one common runtim and clustering across the
entire stack - Using Memory Data Grids and Caching
considerations - Make IMDG pluggable and simple to integrate with
- Messaging
- Use messaging over IMDG to enable seamless
distribution of the messaging - Understanding configuration management tools
- Add built-in monitoring and management with the
deployment - Automate deployment, scaling, fail-over to avoid
minimal processes - No out-of-the-box infrastructure for J2EE
- Support JEE as a first class citizen
- Pricing and licensing
- Elastic pricing (The Amazon model) - pay-per use,
reserved instances (subscription, perpetual)
9Expected result
Web Processing Units
BusinessProcessing Units
Load Balancer
Users
DB
Virtualize the Entire Application Stack
10Solution Guidelines
- Avoid radical change, enabling a gradual process
- Choose an architecture supporting linear
scalability - Minimize vendor lock-in
- Enable application portability and freedom of
choice of - cloud provider, web container, programming
language, database - Minimize API lock in
- Use of standards
- API Abstractions when standards are not
available - Future proof your application
- Dont make decision today, but be ready to make
one without major effort - Avoid long-term commitment choose the right
licensing model
11Practical Steps
IMDG as System of Record
Messaging over IMDG
Value
Remoting over IMDG
Web Tier
Effort
Architecture On-demand provisioning vs. static, peak-based Parallel Processing vs. client-server Partitioned virtualized servers vs. central server Partitioned virtualized servers vs. central server
Savings Examples 7 machines (10 peak 3 avg) 90 machines (100 peak, 10 avg) 6x machines 6x machines
Additional Benefits Self-healing Basic caching Auto deployment Automatic failover Map/Reduce Async invocation Location transparency Commodity HW Low latency (in-memory) Fast Consistent response time. Commodity db vs. high-end
12Step 1 Add Self Healing and Dynamic Scaling
- Dynamic scaling is the ability to
- Increase (or decrease) your applications
capacity at will, on the fly, and with no
down-time - Without code changes, use a standard JEE web app
- Self healing is the ability to
- Automatically recover from failure conditions
(AKA failover) and restore the system to its
previous state
13Step 1 Add Self Healing and Dynamic Scaling
- Deploy the web application on to the GigaSpaces
SLA driven environment - Integrate with a load balancer to enable dynamic
update of cluster state
14Step 2 Add Auto Scaling Support
- Auto-scaling is the ability to
- Automatically apply dynamic scaling based on SLA
rules (CPU/Memory utilization, requests/sec, etc)
- Use the GigaSpaces SLA driven environment to
monitor the application - Web requests, CPU, memory, any other relevant
stats
15Step 2 Add Auto Scaling Support
- Use simple Java/Groovy code to trigger
auto-scaling - Deploy code as a reliable service in the
GigaSpaces SLA driven environment - When the SLA is breached (e.g. average number of
requests per container crosses 100/Sec) - Instruct the environment to increase the number
of instances
16Step 2 Add Auto Scaling Support
- Calculating average request rate (Groovy)
17Step 2 Add Auto Scaling Support
18Deploying on the cloud using CCF4 XAP
MT Application Provisioning
2)Deploy
Application Deployment Configuration
3)Manage
1)Install
Provision
IaaS Provider (EC2, GoGrid, VMWhere, Citrix,..)
Application Repository
App A
App B
19Application Deployment Configuration
- ltcloud-configgt
- ltcloud-namegtmy-applt/cloud-namegt
- ltgsc-numof-machinesgt10lt/gsc-numof-machinesgt
- ltgsc-per-machinegt1lt/gsc-per-machinegt
- ltalternate-s3-source-dirgtmyapplicationfileslt/..gt
- ltgigaspaces-version-idgt662ga3100ct233lt/gt
- ltprocessing-unitsgt
- ltprocessing-unitgt
- ltnamegtCPD/myApp.warlt/namegt
- ltdeploy-options/gt
- lt/processing-unitgt
- lt/processing-unitsgt
- lt/cloud-configgt
Amount of machines to start initially
Application Repository
Application To deploy
20GigaSpaces Cloud Customers
- Large UK Telco Company
- Deploying discrete stand alone services in the
Cloud - More cost effective easier to outsource enabled
by secure service interface - Large Global Telco Company
- Deploying carrier grade VOIP service to the Cloud
- New SaaS business model New revenue stream
- Global Media Company
- Using the Cloud to process events for innovative
new TV programme - Cloud makes concept cost effective
- Financial Services Start-up
- Using the Cloud for a trading exchange
- Cloud lowers barrier to entry and makes
proposition possible - Online Gaming Company
- Using the Cloud for testing and scaling
- Able to test large scale user support early /
easy on cloud, hard otherwise
21Key Takeaways
- Enterprise applications can run on the cloud
today - No need to re-write your application
- Preventing lock-in to specific cloud provider
- Enabling seamless portability between your local
environment to cloud environment - Choose simple applications first
- Avoid dealing with complex security issues
- Application with Clear path to ROI (Fluctuating
load, large scale testing, DR,..)
22GigaSpaces XAP 7.0 (EA)http//www.gigaspaces.com
/wiki/display/RN/GigaSpaces7.0.0EarlyAcces
GigaSpaces XAP Product Overview http//www.giga
spaces.com/wiki/display/XAP7/Concepts
GigaSpaces XAP for Web Applications
http//www.gigaspaces.com/wiki/display/XAP66/Scal
ingYourWebApplication Try It Today on the
Cloud http//www.gigaspaces.com/mycloud
http//www.gigaspaces.com/mycloud-stg