knowledge-base

Architecture Styles

Architecture styles can be use for the architecture of a whole system, but these styles can be also combined. One does not exclude the use of others.

As per usual, you need to select the style(s) based on your needs. Remember, as an architect, you must understand your needs for the system.

Monolithic vs Distributed Architectures

Neither is better than the other, each answers a specific set of needs. The fundamental decision rests on how many quanta the architect discovers during the design process. If the system can manage with a single quantum (in other words, one set or architecture characteristics), then a monolithic architecture offers many advantages. On the other hand, differing architecture characteristics for components requires distributed architecture to accommodate the differing architecture characteristics.

The ability to determine a fundamental design characteristic of architecture (monolith vs distributed) early in the design process highlights one of the advantages of using the architecture quantum as a way of analyzing architecture characteristics scope and coupling.

Read about components that can assist in the thought process in identifying your components and what architectural style might be more suitable. You can’t understand architectural styles without understanding Architecture Characteristics and components.

Distributed Architecture Considerations

Wiki Page

The 8 Fallacies:

  1. The Network Is Reliable (Illustration)
  2. Latency Is Zero (Illustration)
  3. Bandwidth Is Infinite (Illustration)
  4. The Network Is Secure (Illustration)
  5. The Topology Never Changes (Illustration)
  6. There Is Only One Administrator (Illustration)
  7. Transport Cost Is Zero (Illustration)
  8. The Network Is Homogenous (Illustration)

Other considerations:

Physical units vs Logical Components

A logical component is a grouping of responsibilities (namespace), the physical units refers to units of deployability (e.g. JARs or DLLs). Physical units can still co-exist on the same host. They don’t need to be distributed over different hosts.

Styles Comparison

Characteristic/Name Ball Of Mud Layered Pipeline Microkernel Service-Based Event-Driven Space-Based Orchestration-Driven Service-Oriented Microservices
Monolithic/Distributed Monolithic Monolithic Monolithic Monolithic Distributed Distributed Distributed Distributed Distributed
Partitioning Type None Technical Domain & Technical Domain Technical Domain & Technical Technical Domain Domain
Number of quanta 1 1 1 1 1 to many 1 to many 1 1 One to many
Deployability ⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐
Elasticity ⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐
Evolutionary ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐
Fault Tolerance ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐
Modularity ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐
Overall cost ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐
Performance ⭐⭐ ⭐⭐ ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐
Reliability ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐
Scalability ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
Simplicity ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
Testability ⭐⭐ ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐

Shifting fashion in architecture

Preferred styles shift over time, driven by following factors:

Decide on a style

As we might have expected IT DEPENDS which one we choose an various factors like characteristics and which trade-off we are prepared to make. This section is some general advise.

1. Factors to be comfortable with

2. Determinations to be made