1 / 40

Building Modular Enterprise Applications in the Cloud Age

Building Modular Enterprise Applications in the Cloud Age. Bert Ertman Fellow at Luminis in the NetherlandsJUG Leader for NLJUG and a Java Champion. @BertErtman. Paul Bakker Architect at Luminis Technologies. @pbakker. Trend Applications tend to grow bigger and more complex

tana-moss
Download Presentation

Building Modular Enterprise Applications in the Cloud Age

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Building Modular Enterprise Applications in the Cloud Age

  2. Bert ErtmanFellow at Luminis in the NetherlandsJUG Leader for NLJUG and a Java Champion • @BertErtman Paul BakkerArchitect at Luminis Technologies @pbakker

  3. Trend • Applications tend to grow bigger and more complex • Agile development and refactoring have become more common

  4. This leads to a number of challenges : Dependency Management Versioning Maintenance (long term) Deployment

  5. Apps are moving to the cloud • Cloud challenges require non-trivial non-functional requirements • Zero-downtime deploymentsModular deployments • Customer specific extensions (SaaS)

  6. Modularity is the answer

  7. But... what exactly is modularity?

  8. What we learned about OO design in university : Promote cohesion Prevent (tight) coupling cohesion coupling

  9. interfaces How to prevent coupling in a code base?

  10. imp lemen tation hi di ng But how to make sure nobody accidentally uses implementation classes?

  11. Modules

  12. Ok, but how to create an instance of a hidden class? MyInterface myI = new MyImplementation();

  13. Service Lookups

  14. Design time modularity • Divide and conquer • Forces separation of concerns • Prevents spaghetti

  15. The jar file is the unit of runtime modularity on the Java platform What about classpath hell?

  16. How to deal with • Runtime dynamics • Module versioning • Updating single modules • Intra-module dependency management

  17. Runtime dynamic module framework design consequences Architectural focus on modularity What do we need? let’s not reinvent the wheel High-level enterprise APIs Right now, OSGi is the only option

  18. Modularity does not come for free with a framework remember! Modularity is an architectural principle OSGi != modularity OSGi is the de-facto standard module system for Java What about Jigsaw?

  19. Demo

  20. Back to the cloud...

  21. Re: Cloud Applications • Some characteristics: • Application as a service over the internet • Impact on some non-trivial non-functionals • Availability • Scalability • Extensibility

  22. HTML 5 + JavaScript RESTful services OSGi services Apache Felix Typical architecture • Requirements: • Modern web app • UI mostly offloaded to clients or devices • Document driven interaction • Integration via REST API • Web scale data store • Multi-tenant • Elasticity

  23. PaaS Offerings out there: • Not good: • Proprietary platform • Vendor lock-in • White list / black list • No support for modular runtime

  24. 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 ???

  25. Components • Auth • Blob stores • MongoDB • Multi-tenancy • OpenSocial • Search • Remote Services • REST • Template • Web • ...

  26. HTML 5 + JavaScript RESTful services OSGi services Apache Felix A m d a t u Typical architecture • Let’s Add AMDATU to our stack • Architectural focus on modularity • Runtime dynamic services • High level API

  27. Demo

  28. Apache Ace - demo - What about deployment?

  29. Apache ACE

  30. Auto scaling Enough capacity Without paying for idle servers at night...

  31. node node node node node node Mongo Mongo Mongo Mongo Mongo Mongo Load Balancer Availability Zone 2 Availability Zone 1

  32. Node AWS Auto Scaling Load Balancer Apache ACE Auto scaling 1. Start 2. register 3. register 4. provision deployment package

  33. Wrap up

  34. What have we learned? • Why modularity is important (in the cloud) • Practical solution for doing modularity now • using an Open Source development stack • using ready to use Cloud Components • We are using this for high-profile production applications!

  35. Recommended reading

  36. VERY Recommended reading ;) • Available NOW! • Book signing Tue 14.30 @ O’Reilly Booth • (JavaOne Pavillion) • Free books for the early birds...

  37. Cloud provisioning http://ace.apache.org/ Cloud OSGi services http://www.amdatu.org/ Bert Ertman bert.ertman@luminis.eu @BertErtman Amdatu That’s us http://luminis.eu/ Eclipse OSGi plugin http://bndtools.org/ Paul Bakker paul.bakker@luminis.eu @pbakker

  38. Raffle time!

  39. Merci Mahalo Danke Dank U Grazie Takk Obrigado Thank you Gracias

More Related