Aller au contenu

Architecture d'application

MVVM, MVC, Clean Architecture, Hexagonal Architecture, Onion Architecture, CQRS, Event Sourcing, Microservices, SOA, etc.

Clean architecture

La Clean Architecture est proposée en 2012 par Robert C. Martin (Uncle Bob) dans son article The Clean Architecture et développée dans son livre Clean Architecture: A Craftsman's Guide to Software Structure and Design

C'est un modèle d'architecture logicielle qui vise à créer des applications maintenables, testables et indépendantes des frameworks externes. Elle organise le code en couches concentriques, où les dépendances pointent vers l'intérieur, favorisant la séparation des préoccupations.

Principes

  • Séparation des préoccupations : Chaque couche a une responsabilité claire.
  • Dépendances vers l'intérieur : Les couches externes dépendent des couches internes, jamais l'inverse.
  • Testabilité : Les règles métier sont isolées et faciles à tester.
  • Indépendance des frameworks : Le code métier ne dépend pas des bibliothèques externes.

Les Couches de la Clean Architecture sont généralement organisées comme suit :

L'architecture est organisée en cercles concentriques :

  1. Entities (Business Domain) (Entités) - Noyau métier
  2. Use Cases (Cas d'usage) - Logique applicative
  3. Interface Adapters (Adaptateurs d'interface) - Conversion des données
  4. Frameworks & Drivers (Infrastructure) (Frameworks et Pilotes) - Détails d'implémentation

Source: https://semihtekin.medium.com/what-is-the-clean-architecture-c80c2a2ff69a

Flot

Source: https://blog.bytebytego.com/p/clean-architecture-101-building-software

Liens utiles

Autres représentatios graphiques

Source: https://blog.purplegiraffe.fr/clean-architecture-et-clean-code-pour-devenir-developpeur-expert/ Source: https://codersopinion.com/blog/clean-architecture-building-software-that-lasts/ Source: https://dev.to/rubemfsv/clean-architecture-the-concept-behind-the-code-52do Source: https://blog.bytebytego.com/p/clean-architecture-101-building-software https://www.mytaskpanel.com/the-5-advantages-of-using-a-clean-architecture-all-you-need-to-know/

Architecture hexagonale

Proposée en 2005 par Alistair Cockburn. Elle porte aussi le nom d'architecture en "Ports and Adapters". Elle se compose de plusieurs couches organisées autour du domaine métier.

  • Le domaine métier (core) au centre, qui contient la logique métier et les règles de l'application.
  • Les ports, qui définissent les interfaces pour interagir avec le domaine métier.
  • Les adaptateurs, qui implémentent les ports pour interagir avec des systèmes externes (bases de données, interfaces utilisateur, services externes, etc.).

Source: https://reflectoring.io/spring-hexagonal/ Source: https://www.numendo.com/blog/back/architecture-hexagonale-principes-avantages-et-implementation-pratique/

Liens utiles