This repository has been archived by the owner on Feb 6, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
System design
Piotr Gankiewicz edited this page Dec 9, 2016
·
11 revisions
The design of Coolector system is heavily based on the microservices and CQRS patterns. What does it mean in practice? Let's see:
- Each service is an independent project (as well as the repository), therefore it can be developed with its own lifecycle without interfering the other parts of the system.
- Services focus on a single domain and responsibilities that are related to the entities. For example handling user authentication is a totally different task than filtering the remarks.
- Services can easily scale independently from each other. All you need to do is to spawn a new instance of the particular service - the horizontal scaling has a much bigger advantage over the vertical one.
- Services have no idea about the other parts of the system - they're just "unit of work" that processes the commands and publishes events. Loose coupling is the key while designing microservices.
- CQRS allows separating reads from writes, which eventually turns into much easier scaling as you can easily distinguish between the commands and the queries.
- Data is being held in a very efficient, read-only storage that contains already "flattened" objects ready to be returned to the end-user directly.