Abdelkrim
Abdelkrim

Reputation: 1220

What are Monolithic Software Architectures other than Clean Architecture

Are there any other Software Architectures worth knowing for monolith Softwares other than Clean Architecture (Hexagonal Architecture or Ports and Adapters)?

I couldn't find other architectures by simply Googling, and most of the articles in my research are turning around Clean Architecture.

Thanks.

Upvotes: 2

Views: 795

Answers (1)

ahoffer
ahoffer

Reputation: 6546

I was not familiar with Hexagonal Architecture. I took a quick look. It looks like Hexagonal Architecture is Alistair's recommendation for a layered architecture. The oldest layered architecture I know of (for object-oriented software) is model-view-controller. The view is one layer, the controller is another layer, and the model is a third layer. Choosing the layers is somewhat arbitrary. Here is a link to a very common four layer architecture.

The idea of layered architecture is simple. Divide the different kinds of functions into layers. Follow the rule that a layer is only allowed to communicate with the layer underneath it. Look at a diagram of a layered architecture, and you will see what I mean.

This practice establish boundaries between the layers. Hopefully those boundaries represent simple interfaces between layers. The idea is that the implementation of different layer can change independently, so long as each layer continues to support a well-defined API for the layer above it.

The trick to making this work is more organizational than technical. Assign a different team to create and maintain each layer. I recommend one scrum team == one layer. Each layer/team has its own source code repository. Make a rule that other teams can only use published artifacts/libraries.

A layer's API evolves when two teams meet and discuss their needs. Both teams need to agree on changes to a layer's API. If there are no API changes, each team is free test, refactoring, and improve their layer without consulting another team.

These practices help keep a layered architecture "clean" and loosely coupled.

Upvotes: 1

Related Questions