2. A little bit about me
Working at the "infrastructure" side
Cloud computing and distributed systems
Interests in concurrent and distributed programming.
Functional programming advocate!
Scala, OSGI and AspectJ enthusiast. Erlang aficionado
Email: miguel.pastor at liferay dot com
Twitter handler: miguelinlas3
3. Agenda
The status of cloud
Do I really need cloud?
Liferay deployment architecture
Going devops. Help ourselves with great tools
4. The status of clouds
Have I already said Open Source?
5. Cloud portal, value add
Abstraction API
Orchestration Service
Hypervisor
Networking Compute Storage
11. 4
4 Load
Balancer
3
3
Web Web
Server Server
1
1 App App
Server Server
App Tier
2
2
AZ-1
AZ-2
12. 1
1 The application tier
Amazon Compute Service (EC2)
Important!
compute units != CPU != core
Cluster Compute Quadruple Extra
About 33.5 EC Compute Units
EBS optimized could be a good ally
Take account of virtualization overhead in your provisioning
planning
13. 1
1 The application tier
Use AMI to easier and quicker scaling.
EBS backed are preferred (personal opinion).
Tune connection pools, Java heap, garbage collector, …
Same than physical deployments
14. 1
1 The application tier
Use JDBC_PING for Jgroups
Discovery mechanism
Clusterlink, cache replication
S3_PING
Alternative
“Documents and Media” application
S3 storage
15. 2
2 The database tier
Two approaches
RDS service versus own managed database server
Depends on your needs and requirements
RDS is extremely easy: completely managed
Easy to scale
Reliable
Absence of low level control: tunning, optimizing
Limited set of databases: Oracle, MySQL and SQL Server
16. 3
3 Load balancing
Alternative to HAProxy/Apache
Scales based on incoming requests
EC2 instances health detection
Support for sticky session
Support IPv4 an IPv6
17. 3
3 Load balancing
Create a new load balancer
Select the protocol: HTTP(s), TCP, SSL or Custom
Configure health checks
Select the instances behind the load balancer
18. 4
4 Monitoring our system
Using the Cloud Watch service
No additional software required
Real time monitoring
Set alarms, view graphs and statistics
Custom metrics
Combine it with the auto scaling service
20. Which is our goal?
Create any kind of environment
Development, testing, production, …
Do it very quickly!
Dynamically and customizable
Do it on a cloud infrastructure
Don´t get tight to AWS
21. Additional challenges
Be able to scale dynamically
Manage “non-software” components
Network configs
App level configs
System configs
23. Multi cloud library written in Java + Clojure
Abstraction layer over resource management
Coding our infrastructure management
Port between different providers
24. Pallet
Provision nodes with software and configuration
Verifies nodes and services are working fine
Operates the services in nodes
Uses JClouds under the hood
Creating and managing nodes
25. Why Pallet??
Integrates perfectly with the infrastructure management
Scalable programming model (thanks to Clojure)
No central server
No required agents on nodes
All node configuration is done via ssh + scripts (generated)
DSL for generating scripts
Testing
26. Clojure
Pallet is built on top of Clojure
Clojure is a JVM based Lisp dialect
Integration with Java and awesome concurrency
Higher level of abstraction
Becoming extremely popular (many books have been written
recently)
28. Cloud infra-structure
I want a bunch
C ELB ELB
How is itstuff
Apply going?
of nodes
l
JClouds
s
o Liferay
JCloud
Pallet u Liferay Liferay
Pallet d Liferay
Liferay
Liferay
Pallet
A
P
I Database
Database
Database
Database
Database Database