This distributed system design focuses on improving operational efficiency, cost advantage, and performance of individual workloads by leveraging microservices communication and implementing top-down planning and design patterns. The primary advantages include increased scalability, flexibility, continuous availability, and better operational efficiency. However, there are challenges such as complexity, partial/cascading failures, issues with consistency and concurrency, and the need to properly handle timeouts and retries. A proven approach is to start with a monolith, prove the concept, and then gradually break it down into microservices. The workflow design pattern focuses on the user journey, running tasks serially as steps in the workflow, ensuring reliability and consistency while maintaining the ability to scale services and groups individually. This approach solves data consistency issues by combining transactionality and rollbacks, providing a reliable and consistent system that prioritizes user expectations.