ALOM
🥙 Clean Archi et Archi Hexagonale
Salade, Tomates, Architecture Oignons
UBER
Problématiques :
Comment organiser le code ?
Comment ĂŞtre capable de changer de type de BDD ?
Minimiser le Blast-Radius đź’Łđź’Ą d'un changement
Séparer les responsabilités
L'architecture logicielle
-
Donner forme à la construction d'un système
- Division en composants
- Arrangement des composants
- Communication des composants
-
Le but :
- Faciliter le développement
- Faciliter le déploiement
- Faciliter les opérations
- Faciliter la maintenance
Les concepts des architectures logicielles
-
Separation of concerns
- La BDD ne doit pas dépendre des IHM
- Les règles métier ne doivent pas dépendre de la BDD
- Les règles métier ne doivent pas dépendre des IHM
đź‘® S.O.L.I.D principles
- S : Single Responsability
Une classe doit avoir une seule responsabilité
- O : Open/Closed
Ouvert à l'extension, mais fermé à la modification
- L : Liskov Substitution
Pouvoir utiliser un sous-type
- I : Interface Segregation
Présenter plusieurs interfaces spécifiques
- D : Dependency Inversion
Dépendre d'abstractions, et non d'implémentations
Domain-Driven Design (DDD)
Les archis modernes prennent souvent racine dans les concepts de DDD.
- Domaine Métier : Le cœur de l'application est la logique métier.
- Ubiquitous Language : Un langage commun entre les développeurs et les experts métier.
- Entities et Value Objects : Des objets qui représentent les concepts fondamentaux du métier.
L'architecture n-tier (années 90)
Séparation physique entre les programmes et les BDD, entre les clients et les serveurs
L'architecture n-tier avec Spring
La vision "classique"
Conceptualisé par Alistair Cockburn en 2005
Conceptualisé par Jeffrey Palermo en 2008
Conceptualisé par Robert C. Martin en 2012
Les éléments communs (et importants)
- Séparer la logique métier des détails techniques
- Indépendance d'un framework
- Testabilité
- Indépendance de la partie UI
- Indépendance de la partie BDD