More Related Content


Modularity in the Cloud

  1. Modularity in the cloud A case study
  2. Jan Willem Janssen Luminis Technologies @j_w_janssen Sander Mak Luminis Technologies @sander_mak
  3. The case: PulseOn Educational system focussed on personalized learning Used in high schools in the Netherlands Expand to other countries in the near future
  4. Requirements Easy software updates Cross device iPad/android/ desktop... Different set of components per school Scalability (both up and down)
  5. Personal dashboard
  6. Learning content
  7. Adaptive recommended Learning
  8. How to build software when nobody can tell you exactly what to build?
  9. Divide and conquer, prevent the ripple effect Modularity
  10. Modularity in practice Program to interfaces, not implementations Rate of change of modules
  11. Modules
  12. Ok, but how to create an instance of a hidden class? MyInterface myI = new MyImplementation(); YOU DON’T!
  13. Service Lookups
  14. Cross device HTML 5 + JS RESTful web services OSGi services Mongo Apache Felix A m d a t u S3
  15. course.gadget content.mongo Mongo S3 UI REST API Java API
  16. course.gadget contentsequencer.engine profiling.mongo content.mongo AJAX AJAX Java Java Java Java
  17. Some numbers 190 bundles in a deployment 120 PulseOn bundles
  18. Amdatu: OSGi Cloud components JAX-RS Mongo DB BlobStores Scheduling Multi-tenancy Search OpenSocial ... Apache Licensed open source project
  19. Amdatu MongoDB Most data is exposed using REST The profiler generates a LOT of data The recommender needs powerful queries
  20. Amdatu OpenSocial How to separate UI elements in modules? Each functional part is an OpenSocial gadget Modularity in the UI
  21. School B Load Deployment Load Balancer PulseOn node PulseOn node PulseOn node Load Balancer PulseOn node PulseOn node PulseOn node School A Mongo Mongo Mongo Mongo Mongo Mongo
  22. Auto scaling Considerable higher loads during school hours Enough capacity Without paying for idle servers at night...
  23. Load Balancer small node Cluster per school Always use a load balancer because we don’t want downtime during scaling
  24. Load Balancer small node Early morning...
  25. Load Balancer small node large node large node Early morning...
  26. End of the day... Load Balancer small node large node large node
  27. End of the day... Load Balancer small node
  28. But how do we install our software on a node?
  29. Provisioning servers
  30. ace screenshot
  31. Node AWS Auto Scaling 1. Start Load Balancer Apache ACE 4. register 2. register 3. provision deployment package Provisioning servers
  32. Tooling and frameworks are now mature enough How does this fit other applications? The architecture fits most modern web applications Works in the cloud (but not a requirement)
  34. Cloud provisioning Cloud OSGi services Eclipse OSGi plugin @Sander_Mak There is more...