Enterprise vs System vs Application Architecture
Infrastructure architecture, security architecture, IT architecture, hardware architecture, software architecture, technical architecture, database architecture, process architecture, business architecture, system architecture... With so many different architectures, how do we make sense of them all? In context of software development it makes sense to think of architecture as important design decision that are costly to change once they are made and we can distinguish three levels of abstraction: application, system and enterprise:
- Application architecture - this is the lowest level of abstraction that deals with software elements, their externally visible properties and the relationships among them.
- A great place to start learning software architecture is Software Engineering Institute. It offers some of the most comprehensive and fundamental coverage of the software architecture topics. Take a look at their Software Architecture in Practice and Documenting Software Architecture to get more info.
- Beyond the fundamentals, application architecture would be solution-specific, depending on the specific technical stack that you are working in. For example, in the Java space we we usually speak about Java EE and Spring. In .Net space Microsoft publishes detailed technical guides on how to build solutions https://dotnet.microsoft.com/learn/dotnet/architecture-guides.
- System Architecture - System architecture is one step up from the solution architecture. It can be thought of in terms providing the environment for the software and applications to run in. It is all about how individual applications or building blocks work together as a single unit, how they are integrated. In other words how the system functions as a whole.
- Designing Data-Intensive Applications is a great book to continue expanding on the topic
- Enterprise Architecture - Enterprise Architecture would be the top level. It deals with the complete unified picture including people, business, IT and how it all fits together. So it is often more about people and process than information technology. In this space, there are several well-known frameworks:
- TOGAF - The Open Group Architecture Framework - https://www.opengroup.org/togaf - This is the most commonly used framework today across many industries. It provides a method, structure and best practices, including
vocabulary and methods for building enterprise architecture.
- Zachman - https://www.zachman.com/about-the-zachman-framework - this is not truly a framework, but is a taxonomy, a tool to organize architectural documents by purpose and auditory
- Gartner / FEA / DoDAF - more of a niche enterprise architecture frameworks - purpose specific.