I am inspired by architectures of amazing building structures. Many years back, I visited Rameshwaram and I could see the towering temple gopuram from miles away. In Rome and Vatican, I and marvelled at beautiful churches, especially St. Peter’s Basilica. The White House, Taj Mahal, Petronaus Towers, … the list goes on and on. These building structures follow different architecture styles such as Dravidian style, Mughal style, and Neoclassical style.
Interestingly, the architecture of software systems also follow certain styles and patterns. The classic POSA book “Pattern Oriented Software Architecture: A System of Patterns” (published in 1996) documents some of the most important styles & patterns on software architecture. Architectural patterns covered in this book include:
- Pipes and Filters
- Model-View-Controller (MVC)
Design patterns are different from architectural patterns. Architectural patterns are of higher-level in that they help address system level concerns, whereas design patterns are relatively lower-level and help address sub-system level concerns. [Difference between the terms “styles” and “patterns” is often an academic discussion – we use the terms “architecture styles” and “architecture patterns” interchangeably in this article]
I consider the architectural patterns covered in the POSA book as classic patterns. With growing attention to topics such as big data, cloud computing, containerization, and with ever pervasive internet and mobile devices, there are numerous patterns that have emerged in the last two decades including:
- SOA (Service Oriented Architecture)
- REST (Representational State Transfer)
- CQRS (Command-Query Responsibility Segregation)
- Software Container
Unfortunately, I don’t know any books that cover modern architecture styles and patterns. Though patterns such as Software Container and styles such as REST are well-documented, and there are dedicated books available on SOA and Microservices styles, there is no dedicated book that covers modern architecture styles as a catalog (just like excellent POSA or GoF books for classic patterns). [In fact, book are yet to be written on many other important architecture topics, for example, a book on architecture smells and refactoring would be really helpful – but that is a topic for another article in future!]
Classic patterns or modern patterns, any architect should learn about these patterns. Why? Because styles/patterns are important tools in an architect’s toolkit. Architects should know the context and forces, the problems that the pattern solves; they should know the structure, variations and dynamics of the pattern; also, most important, they should know the consequences of using a pattern. When an architect knows these aspects, given her problem context, forces, and desired qualities, she can choose a relevant pattern that helps effectively resolve the problem (instead of reinventing the wheel).
If you are an architect or aspire to become an architect and live in Bangalore, please check out our latest software architecture bootcamp that covers these patterns in detail through case studies and examples.