The document discusses microservices and monolithic applications. It defines microservices as independent services that work together and are modeled around business domains. It also defines monolithic applications as single-tiered programs combining user interfaces and data access. The document discusses when microservices may be preferable to monoliths, such as for modularity, scalability and agility. It also covers best practices for microservices including loose coupling, encapsulation and using services like Amazon SQS and SNS for messaging between services.