Reading and reflections on microservices
Pros
Message driven architecture to achieve communication between components.
Memory leaks are isolated.
Startup is parallelized.
Refactoring is easier.
Easier to scale various services.
Cons
Scaling more efficient, requires more advance features - DNS routing, service discovery …
Communication between components require messsaging system.
Business transactions need to update multiple databases -> rollback is complex and error-prone.
Entire application is more complex in terms of infra
Requires docker, orchestration (kube), JVM, app containers etc…
E2e tests are difficult to perform.
Technical stack for microservices is more complex and most of the time is
Monitoring is difficult
Initial development time + refactoring
Cost $$$$$
Documentation -> schemas
Automated testing difficult
Need to be familiar with networking
When not to use??
Small scopes (CRUD app for internal use case)
Time to market is critical *
Small team *
Infra budget limited *