Monolith VS Microservice
Monolith
Single App, everything inside, UI, backend, database, etc.
Advantages:
Simplified architecture.
Less time worrying the complexity of distributed systems.
Less time worrying about deployment of the system.
Disadvantages:
Scalability, hard to scale.
Sometimes hard to debug. For example memory leak happened in Netflix early days.
If one part of the program is down, then everything is down.
Microservice
Approach to develop single application as a suite of small services. Each running its own process and communicating with lightweight mechanism.
Advantages:
Separation of concerns.
Modularity and encapsulation.
Scalability, easy to do horizontal scaling and workload partition.
Virtualization: It is recommended to use virtual environment for less complex deployment (on demand resource & auto scaling).
Disadvantage:
Much more complex to build.
Prone to network partition, see [[cap_theorem]] for more detail.
Last updated