Microservices is a software architecture where applications are broken down into small autonomous services that communicate over a network via agreed APIs. This approach has gained popularity due to its ability to provide modularity, scalability, high availability, and facilitate organizational alignment. The emergence of technologies such as containers and orchestration frameworks like Kubernetes and Mesos have mitigated many of the problems associated with microservices, enabling faster development, scalability, and resiliency. Microservices offer benefits including faster time-to-market, flexibility and scalability, resiliency, alignment with organization, and reduction in cost. With microservices, a small change to a service can be committed, tested, and deployed immediately, resulting in a more iterative release cadence. Additionally, microservices enable better alignment of the architecture to the organization, reducing technical debt and costs associated with refactoring code for a large application.