After the requirements are carefully reviewed, we can now start deciding which model we'll use: monoliths or microservices.
Typically, there will be three tiers in an application:
- UI (User Interface) - handles HTTP requests and responses
- Business logic - contains code that provides service to the users
- Data layer - implements access and storage of data objects
In a monolithic architecture, application tiers can be described as:
- part of the same unit
- managed in a single repository
- sharing existing resources (e.g. CPU and memory)
- developed in one programming language
- released using a single binary
In a microservice architecture, application tiers can be described as
- Tiers are managed independently
- Managed in a separate repository
- Own allocated resources (e.g. CPU and memory)
- Well-defined APIs for connecting to other units
- Implemented using the programming language of choice
- Released using its own binary
The main point of microservices is to break the software into smaller chunks, allowing developers to work on a piece of the code and release on their own cycle, which in turn speeds up development.
This kind of architecture also enables the software to scale independently.