This document discusses monolithic architectures and microservices architectures. It begins with an overview of what monoliths and microservices are. It then discusses some common issues with monoliths like lack of scalability and difficulty of changes. It provides examples of when monoliths may still be preferable and signs of a well-designed monolith. It then discusses microservices in more detail and their pros and cons. Two case studies are presented for gradually migrating parts of a monolith to microservices through either a phased or "big bang" approach. Distributed systems challenges are also covered. The document concludes by recommending starting with monoliths and refactoring later as needs dictate.