Over the past couple of years we have been building large scale Java applications and deployed them in the cloud. While dealing with typical cloud issues such as auto scaling, failover, and incremental deployments we meanwhile had to refactor them for significant functional changes.
Being able to deal with change and dynamics are important reasons for companies to resort to the cloud for application development. Short time to market and rapidly changing requirements can lead to experimental software design however. Dealing with constant change in a codebase is non-trivial. In order to facilitate much change a modular codebase is of great importance.
In this talk we will show you what we have learned on how to create modular Java applications and how to deploy them in the cloud using an Open Source approach without locking into one of the PaaS providers. We will discuss OSGi, scalable web application architecture, and Apache ACE for deployment and provisioning.
1 of 48
Downloaded 59 times
More Related Content
Building Modular Cloud Applications in Java - Lessons Learned
2. Bert Ertman
Fellow at Luminis in the Netherlands
JUG Leader for NLJUG and a Java Champion
Paul Bakker
Architect at Luminis Technologies
@BertErtman
@pbakker a presentation for
4. Re: Cloud Applications
Some characteristics:
Application as a service over the internet
Impact on some non-trivial non-functionals
Availability
Scalability
Extensibility
6. The case for modularity
Modularity is the
ultimate agile tool!
Small, disposable, components
Prevents code rot on the
architectural level
Isolate problems, focus work
9. OSGi is the de-facto
standard module
system for Java
OSGi != modularity
What about Jigsaw?
10. OSGi is the de-facto
standard module
system for Java
OSGi != modularity
What about Jigsaw?
remember!
Modularity is
an architectural
principle
11. OSGi is the de-facto
standard module
system for Java
OSGi != modularity
What about Jigsaw?
remember!
Modularity is
an architectural
principle
Modularity
does not come
for free with a
framework
15. HTML 5 + JavaScript
RESTful services
OSGi services
Mongo
Apache Felix
S3
Typical architectureRequirements:
Modern web app
UI mostly offloaded to
clients or devices
Document driven
interaction
Integration via REST
API
Web scale data store
Multi-tenant
Elasticity
16. HTML 5 + JavaScript
RESTful services
OSGi services
Mongo
Apache Felix
A
m
d
a
t
u
S3
Typical architecture
Let¡¯s Add AMDATU
to our stack
Architectural focus
on modularity
Runtime dynamic
services
High level API
19. PaaS Offerings out there:
Not good:
Proprietary platform
Vendor lock-in
White list / black list
OS Limitations
No support for modular
runtime
20. Solution: roll our own PaaS
Modular PaaS:
IaaS image
OSGi runtime
Deployment/provisioning
PaaS Building blocks
Pro:
freedom
Con:
no vendor support
Amazon EC2
Apache Felix
Apache ACE
Amdatu
23. Horizontal scaling requires stateless nodes
HTML5 clients need less server side state
Any state should go to some kind of store
Horizontal scalability
39. Educational system focussed on
personalized learning
Used in high schools in the
Netherlands
Expand to other countries in the
near future
Development tool stack
IDE with fast turn arounds
Version Control
Continuous Integration Server
Issue tracker
WIKI
what do we need?
40. Continuous integration
All BndTools projects support
headless builds
Build on git push
Measure test coverage
(both unit and integration tests)
42. what have we learned?
Modularity is the ultimate agile tool
Modularity is no longer difficult
(BndTools / Amdatu)
Stateless architecture is the only
scalable way
Cloud deployments made easy with a
provisioning server
46. Want to try this yourself?
Tomorrow: 10 AM - 12.30
Hands-on Lab:
Building Modular Cloud Applications in Java
Venue: Hotel Wyspia¨½ski
ul.Westerplatte 15
31-033 Krak¨®w