my recent read is all about building web applications with technologies moving away from monolithic architecture to micro-service based reactive & scalable applications.
With too many 'Jargons-Overload' and to bring some sanity to my thinking, I am trying to think out aloud by documenting my understandings and raising questions (however trivial/stupid it could be).
Please do share your thoughts/feedback/comments/amswers around these. Feel free to correct any of my incorrect understanding.
Spring MVC - to build RESTfull services (which will contain different business functionality implemented as multiple services API Gateway - to validate calls to these RESTfull services (aka API calls) and to Orchestrate across multiple services/APIs Servlet 3 (Async) - to build Asynchronous Server side (especially Servlets) code RxJava - to build Asynchronous Server side code (can be tied with Spring MVC to provide Async feature) Futures , Observables - No clarity yet. I am still reading Play , Akka & Scala - A web framework, message driven run-time and programming language to develop reactive applications (meaning high performance, scalable & event driven) WebSockets - to send messages to a server and receive event-driven responses without having to keep continuously polling the server for a reply Node.js/Backbone.js - a) to utilize the RESTfull services built as Microservices b) Redirect updated Model/Data to multiple views for multiple user channels c) API gateway could also be built using this server side javascript
Question # 1 Could somebody help in putting together complete architecture picture of where, how all these technologies fit and/or compliment each other ? I will give a shot and update a picture later.
Question # 2 Is the combination of Play, Akka & Scala equivalent and replacement to the combination of Spring MVC + Servlet 3 Async + RxJava ?
Question # 3 If i use Node.js/Backbone.js , do they support the WebSockets functionality, or do i have to use a another library that could support it ? If so, for what purpose will i use WebSockets for ?
Question # 4 How do I use Servlet 3 (Async) to build my micro-services ? Instead of writing plain Servlets in Servlet3.0 spec, should I use RxJava along with SpringMVC for this asynchronous feature ?
Question # 5 If I can bring concurrency in Controler layer (Servlet/SpringMVC), how can I bring it in rest of the layers after it ? Else, would it truly give me the due advantage ?
Question #6 What are
Java Futures, Observables ? Are they components or Libraries used to implement the Message/Event driven architecture in my other layers ?
Question #7 Where would Client-Side-MVC fit in this whole picture ? and what advantage it could offer in such a scenario ?