One program or separate services

For an online service, a monolith combines features such as accounts, payments, and notifications into one program. This can make building, testing, and sharing data simpler, especially for a small team.

One program does not mean one server: teams can run several copies of it on different servers to handle more users. Each microservice can have several running copies too.

Microservices separate those features into services that communicate over a network. Teams can update or add capacity to each one independently, but must manage network failures and more moving parts.

Choosing the right structure

Microservices can help large teams manage distinct features, but they add the work of running a distributed system. A well-organised monolith is often simpler until a team has a clear need to split it.