This document discusses Shakespeare's approach to microservices. It defines microservices as a software architecture where an application is composed of loosely coupled services. It outlines advantages such as independent testing, deployment and scaling of services. It provides guidelines on when to use microservices such as for applications with different development speeds or lifecycles, when developed by multiple teams, or to isolate external dependencies. Requirements for microservices include automated testing, containerization for deployment, infrastructure as code, and centralized logging and monitoring. The document recommends loose coupling between services and using asynchronous messaging or REST/gRPC for communication.