Modèles d'architecture pour structurer ses applications personnelles (self-hosted ou cloud).
Monolith vs Microservices : Un monolithe est une application unique, les microservices sont des services indépendants découplés. Pour une app perso, le monolithe est souvent plus simple.
Client-Server : Architecture fondamentale où un client (front) consomme des services fournis par un serveur (back).
MVC (Model-View-Controller) : Pattern séparant les données (Model), l'interface (View) et la logique de contrôle.
Event-Driven : Architecture où les composants communiquent via des événements (pub/sub). Idéal pour des systèmes asynchrones.
CQRS (Command Query Responsibility Segregation) : Séparation des opérations d'écriture (Command) et de lecture (Query) pour optimiser les deux.
Hexagonal (Ports & Adapters) : Isole le cœur métier de la technique. Facilite les tests et le changement de base de données.
Repository Pattern : Abstraction de l'accès aux données. Le métier ne sait pas si les données viennent d'une DB, d'une API ou d'un fichier.
Service Layer : Couche intermédiaire qui orchestre les cas d'usage en combinant plusieurs repositories.
Backend for Frontend (BFF) : Backend spécifique à un type de client (Web, Mobile) qui agrège les microservices sous-jacents.
12-Factor App : Méthodologie de conception d'applications cloud-native (config via env, stateless, logs en stdout, etc.).
Stateless : Le serveur ne conserve aucun état entre deux requêtes (toute l'info est dans la requête). Facilite le scaling.
Stateful : Le serveur conserve l'état (sessions, fichiers). Plus simple pour de petits projets.
Reverse Proxy Pattern : Utiliser un proxy (ex: traefik) devant plusieurs services pour gérer le routage et le SSL.
API Gateway : Point d'entrée unique pour toutes les APIs d'un système, gérant auth, rate limiting et routage.
Cache-Aside : Pattern où l'application lit d'abord le cache, et en cas de miss, lit la source et remplit le cache.
Sidecar Pattern : Un conteneur auxiliaire déployé à côté du conteneur principal pour fournir des fonctionnalités transverses (logs, proxy, config).
Choreography vs Orchestration : En microservices, la chorégraphie laisse les services réagir aux événements ; l'orchestration utilise un coordinateur central.