Scalability is an engineering skill. This means that you have many parameters and apply your experience to the specific values ββof these parameters in order to arrive at a solution. Therefore, the general advice, without any specific data about your problem, is complicated.
Having said this, from experience, is a general tip:
- Keep the application as simple and simple as possible. This allows you to keep your options open. In your case, start with the simple Play app. Focus on clean code so you can easily re-process what you have in a different architectural model (with clean code that is simpler than you think :-))
- Measure, do not guess where the bottlenecks are. It is simple enough to fill the server with requests. Use profiling, memory dumps, anything to pinpoint a bottleneck in scalability.
Only when the working application is in your hand (with which you can start from the earliest time) and data on where your bottlenecks are to scale, can you make decisions about what needs to be separated by (horizontally scaleable) services.
From the very beginning, services look nice and scalable, but they often help you in an early mess - the services must communicate with each other, so you start typing messages, etc. Keep it simple, measure, optimize.
source share