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.

Reply via email to