Hi all, First of all my apologies if I mess up some idea, I am not new to software architecture, but I am sort of new to Akka, specially the cluster part. Or if the questions are a bit chaotic. Since I am trying to sort out ideas
I have to re design a current system composed of many rest json apis that interact between each other and with a database (at this point mysql). The system itself is deployed on a PaaS cloud platform with a different application for each "API", with many nodes for each one. Thing is I want to migrate all of this into a better architecture using Akka (and spray until akka-http is released). Based on that I have a few questions that I would appreciate if you can give some pointers or suggestions 1) Put everything on 1 single app (spray front end + backend) and deploy many nodes or split into 2 separate apps? Even if separated I would like to have multiple frontends hit by our load balancer for resilience. And having 1 single app would be easier to maintain / deploy. 2) Assuming that I will have multiple nodes running the same application. I plan to use a cluster aware router. In this scenario, would it be better to use group or pool? The number of application nodes can go down or up any time (manually or automatically) 3) Crude basic design would be to have to spray router on front -> cluster aware router A -> worker logic -> ? -> Database actors 3a) Should that cluster aware router A be a singleton? Or can I run it on all the nodes? 3b) If it is a singleton and the node goes down, what will happen? 3c) For the database access part, Should I also put a cluster aware router on front and a fixed number of actors? or just per request would be ok? Advanced stage questions 4) The migration process will be gradual, so old API applications will need to communicate to updated versions running on akka. Of course I can interconnect them using the http endpoint of spray (like they do now), but the whole point of this is to avoid those internal http calls. Therefore, is it possible to create an small actor that on those old apps that connects to the cluster to make calls? 5) At some points this apps will be deployed in nodes on opposite sides of the globe as well. What options are available to route based on some key or just node latency? 6) We have the option to elastically increase/decrease the number of nodes via some commands, would be possible to fire those commands based on the sigar metrics routing? The first 3 questions are the ones that are puzzling me at this point for the initial design. So any insight or pointers are most welcomed. Thank you very much and sorry for the many architecture questions -- >>>>>>>>>> Read the docs: http://akka.io/docs/ >>>>>>>>>> Check the FAQ: >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user --- You received this message because you are subscribed to the Google Groups "Akka User List" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/akka-user. For more options, visit https://groups.google.com/d/optout.
