Monolithic architectures aren't an option anymore and microservices is the way to go.
Recently many organizations are moving towards microservices based applications rather than having large, monolithic applications.
In the microservices approach, applications can be developed using a series of building blocks containing the code and operating environment that is needed to deliver a specific feature or functionality.
Each of these building blocks independently contribute towards the working of the overall application, allowing developers to update the code contained within each one without necessarily affecting the wider workings of the application itself.
Unlike virtual machines (VM), containers have no need for embedded operating systems (OS); calls are made for OS resources via an application programming interface (API). Containerisation is, in effect, OS-level virtualization (as opposed to VMs, which run on hypervisors, each with a full embedded OS). Containers are easily packaged, lightweight and designed to run anywhere.
Multiple containers can be deployed in a single VM. A microservice is an application with a single function, such as routing network traffic, making an online payment or analysing a medical result.
Containers and microservices are not the same thing. A microservice may run in a container, but it could also run as a fully provisioned VM. A container need not be used for a microservice. However, containers are a good way to develop and deploy microservices, and the tools and platforms for running containers are a good way to manage microservice based applications.