Technology Architecture Types and related Architectural Styles
In this story, you will learn the relationship between the different types of technology architectures, architectural styles and design patterns
Technology Architecture Origins
Architecture, as many other terms in the computing industry, is derived from other domains, and in this case, it is a metaphor derived from the domain of building constructions and became associated with the technology (Technology Architecture) to describe the structure of any piece of technology.
Types of Technology Architectures
As Technology was evolving over time, new specialized types of architecture have emerged into Hardware Architecture and Software Architecture which have been specialized further into more fine-grained types.
For example, Software Architecture itself has been diversified into a number of specialized architectures (e.g., Application Architecture, Integration Architecture, Data Architecture, Information Security Architecture, etc.). To learn more about Software Architecture history, please read the following story "Software Architecture History"
With more specializations, it becomes common to see large enterprises employ different roles to handle different types of architectures, which generated the need to have a role within the enterprise itself to orchestrate and govern the relationship between all of these architects. This role is known as Enterprise Architect.
Related Architectural Styles
Each one of these Architectural types has different architectural styles addressing different types of problems. Each architectural style has its own guidelines, principles, standards, practices, and design patterns.
As any other inheritance relationship, the architectural type can extend or override the standards and principles of its parents. For example, the Don't Repeat Yourself (DRY) principle is a Software Architecture principle that applies to all of its Childs (.i.e., it can be applied to applications, integrations, data, etc.).
Related Design Patterns
As mentioned previously, each architectural style can have its own design patterns as shown below:
Enterprise Application Design Patterns
To learn more about enterprise application patterns, read the book "Patterns of Enterprise Application Architecture, by Martin Fowler"
SOA Design Patterns
To learn more about SOA Design Patterns, read the book "SOA Design Patterns, for Erl"
Microservices Design Patterns
To learn more about Microservices Design Patterns, read the book "Microservices patterns, for Richardson"
Enterprise Integration Patterns
To learn more about Enterprise Integration Patterns, read the book "Enterprise Integration Patterns, for Hohpe"
It is highly recommended to read the following article, to learn more about the above styles and patterns "Books for Great Software Architects".
Don’t forget to subscribe to get notifications for my new articles and stories
Definitions
In the following, we will give a brief definition of the most important architectural types:
Technology Architecture
The fundamental and foundational aspects of physical design of some piece of technology.
SOA Design Patterns by Erl
Software Architecture
Software Architecture describes the fundamental structure of software. Software Architecture can be either Application Architecture, Integration Architecture, or Data Architecture and it can mean all of them.
Application Architecture
Application Architecture is a description of the subsystems and components of software and the relationships between them. Subsystems and components are typically detailed in different views to show the relevant functional and non-functional properties of software. For more details about the difference between Subsystem and Component, please read "Main Concepts in Software Architecture"
Note: Sometimes people say Software Architecture and they mean Application Architecture.
Enterprise Application Architecture
Enterprise Applications is a sub-type of Application Architecture that requires involvement of persistent data and it must support concurrent access through many UI screens. Enterprise Applications are also known as Information Systems.
Patterns of Enterprise Application Architecture
Enterprise Applications can be structured or distributed. A distributed application is an application whose components are located on different machines communicating with each other synchronously. For example, Client/Server architecture.
Integration Architecture
The description of two or more connected applications including whatever technologies, resources, or extensions were added to enable their integration.
Enterprise Integration Patterns by Hophe
Note: Integration Architecture is different from Distributed Application Architecture. Distributed Architecture parts are communicating with each other in a tightly coupled manner (one-tier cannot work without the other); the communication between the parts must be synchronous. In contrast, Integrated Applications are independent applications that can each run by themselves but that coordinate with each other in a loosely coupled way.
Data Architecture
Data Architecture is composed of models, policies, rules or standards that govern which data is collected, and how it is stored, arranged, integrated, and put to use in data systems and in organizations.
TOGAF® 9.1 — Phase C: Information Systems Architectures — Data Architecture
Solution / System Architecture
Solution Architecture is a description for a role that should be able to describe the Software Architecture and the Infrastructure Architecture for an entire solution.
Enterprise Architecture
Enterprise Architecture applies architecture principles and practices to guide organizations through the business, information, process, and technology changes necessary to execute their strategies. These practices utilize the various aspects of an enterprise to identify, motivate, and achieve these changes.
Federation of EA Professional Organizations, Common Perspectives on Enterprise Architecture".
About the Creator
Haitham Raik
I have 20 years of experience in Software development and Software Architecture. In this page, I will share with you topics based on my expertise related to software development and architecture
Comments (1)
Kudos for the excellent article. Below is a good read about the design pattern for the database layer: https://medium.com/towards-polyglot-architecture/design-patterns-for-the-database-layer-7b741b126036