The document discusses some of the challenges of using microservices for applications. It found that communication between microservices is difficult due to issues like latency, eventual consistency, and large data requests. It recommends designing microservices with these communication challenges in mind from the beginning, including thinking about APIs, data duplication, filtering, versioning, and deployment processes. Automating deployments, service discovery, security, and monitoring are also important aspects to consider when using microservices.