| Be aware of marketing blog posts like this (looking at you Confluent, Databricks and Camunda!). Another "forget this style, only use our new framework".
What he forgets to mention, and what is probably not in the scope of "our new framework that does everything better", is that it is totally valid to use orchestration and choreography.
Same as Confluent pushes the case to use choreography, this post pushes to just use orchestration. That's wrong. From my point of view: 1. use choreography for small to medium services (for example one domain)
2. optionally orchestrate them on a higher level (for example between domains)
Don't orchestrate all your business logic for all services down to the smallest event/command!Also: You don't *need* to store all your events forever. This pattern, often pushed, comes with downsides as well. Maybe you have a good case to do so, but don't fall into the trap to just use this pattern because you've read that in some blog post! Alternatively, you can also just go the route of those vendor blog posts and pay later for the lock in. |
But putting this sentiment to the extreme, you could also say: For very "small" use cases, that is systems where scalability might not be an issue (right now and in the future), you might want to dispense with any kind of distributed system altogether and just program a monolith. Because if you have tightly-coupled parts of a more complex system that cannot really function if at least one is down, you might as well put them in the same program.
Again, the main drawback will be horizontal scalability. But in a small enough company your "process engine" can probably be run a small VM anyway.