As software grows more complex, you need to manage this complexity by using various architectural patterns, practices, and principles. In this course, Clean Architecture: Patterns, Practices, and Principles, you will learn how software experts keep their architecture clean using a modern approach to software architecture called Clean Architecture. First, you'll learn about domain-centric architecture, application layers, CQRS (Command-Query Responsibility Separation), event sourcing, functional cohesion, bounded contexts, microservices, testable architecture, and more. In addition, you'll use these practices to replace the out-dated three-layer database-centric architecture that has been used for decades. Most important though, you'll see how these practices, when combined, create an architecture that is simple, understandable, flexible, testable, and maintainable. By the end of this course, you'll have the skills necessary to understand and implement these clean architecture practices on your own software projects.