To have a better understanding of the difference between microservices and monolithic architectures, we will compare them in the aspects of complexity, reliability, latency, and scalability.
We already mentioned that a monolithic architecture is known for its low complexity. As for microservices, the more complex application you aim to develop, the more source codes, frameworks, and technologies you will involve in the process. The services can be located on various servers and communicate with each other via APIs.
This type of architecture implies the usage of development methodology that is completely different and does require an advanced level of coordination, skillset, and understanding of the overall architecture.
A monolith is a single unit where all the calls and processes take place in one server. That implies if a network failure happens, it will take down the entire application. On the contrary, microservices have 99.9% of reliability for the network calls. Error isolation, being among microservices features, allows you to maintain an application when any of the services fails.
Latency refers to a time break between the stimulation of a certain physical change in the system and the response to it. That mostly refers to microservices. When a microservice sends or receives data from another service, bytes are sent over a network. They turn into electrical signals and then back to bytes.
On the contrary, monoliths have no network latency as all the services are located in the same workflow. Hence, microservices are slower than monoliths in this aspect.
Scalability does not only refer to microservices. In fact, you can also scale a monolith. However, the nuance is that you will be able to scale a monolithic application only in one dimension and by running its multiple copies. You will fail to scale it up with an increasing data volume. Thus, scaling a microservices application demands fewer resources, and this is an absolute microservices advantage.