This document discusses microservices architecture as a modern approach to application development. It begins by outlining some of the challenges with monolithic architectures and how microservices address needs for scalability, agility, availability and efficiency. Key characteristics of microservices are that they are independently deployable, use lightweight protocols for communication, and are organized around business capabilities rather than technical boundaries. The document provides examples of how to decompose a monolithic application into microservices and discusses considerations for designing services, service communication, and hosting microservices using containers and orchestration platforms.