I am new to this forum . I want to create microservice using akka (not using lagom framework) . What is the best way to do ? Should I use just akka http and run this in k8s or do you suggest to use akka cluster having multiple akka actor over there ?
If this is a duplicate topic then sorry and then can you re-direct me to the original one .
I would say that your question is quite general and it’s hard to give a valuable answer without knowing any detail of what kind of service is the app giving…
First of all, how many micro-services do you plan to deploy, what are the requirement on the architecture (replication, fault-tolerance, load, …), and what kind of interface you plan to use for contacting the services (e.g. rest/json)?
These are but a few of the first things that comes to my mind
Thanks for quick response . Requirement is as below
I want my channel layer to consume the API (REST using Json) . And these API will call some legacy system to fetch the data . There can be multiple layer of API like as “Digital experience microservice” will be calling “process microservice” . “Digital experience microservice” will be responsible for providing channel specific data . This process microservice will be able to do some orchestration/choreography for fulling the process by calling “Domain Microservice”. These Domain microservice Should be able to fetch the data from Read/cache DB .
In case of write service this read Db need to be populated by event streaming. So there will be multiple microservice , and they can communicate between themselves (domain service) using json/protobuf -grpc . Definitely it needs to be fault tolerant, As well I want to deploy in kubernetes and will use kubernetes out box support for service discovery & registry,load balancing ,autoscaling features .
Hope I am able to give you some picture . Would appreciate if you can suggest whether AKKA http or AKKA Cluster or AKKA HTTP+Cluster is the better option in the given scenario ?
I’m not an expert here, but I guess that using the Akka Cluster should work well with the idea of deploying your services on K8s.
Also Akka-Http could be a possible solution for the rest-api, though it’s pretty “down to the barebone” if you try to follow my meaning: if you need to handle advanced but commonly found scenarios (e.g. db-access, CORS, jwt auth, …) you could also look at Playframework which is a rounded-out solution, and more similar to existing frameworks.
Personally I consider akka-http more of a toolbox to build complex streaming-io apps over http.
That said, all of those build on akka as a foundation (the new playframework uses akka-streams under-the-hood, so it’s all the same in the end) which means that clustering should work well.
This is a pretty general answer, but I guess that’s because finding the more appropriate stack will depend on a more detailed analysis over the details of the problem you’re trying to solve.