Category

Software Architecture

Clean Architecture, DDD, microservices, monoliths, design patterns, event-driven systems, CQRS, scalable software design

35 posts

Maîtriser l'E/S non bloquante : Construire des systèmes évolutifs avec Project Reactor et WebFlux

Dans les environnements modernes à haut débit, l'E/S bloquante traditionnelle peut devenir un goulot d'étranglement, immobilisant les ressources de threads en attendant la fin des opérations réseau ou disque. La programmation réactive, en particulier la spécification Reactive Streams en Java, offre une solution en permettant un traitement de données asynchrone et non bloquant...

Imposer les limites de modules : Utiliser ArchUnit et les vérifications au moment de la compilation pour prévenir le déclin du monolithe modulaire

Dans le domaine du développement d'entreprise Java, le « monolithe modulaire » a connu un regain d'intérêt comme alternative pragmatique à la décomposition prématurée en microservices. Cependant, sans garde-fous architecturaux stricts, ces systèmes souffrent souvent d'une « entropie architecturale », où les modules finissent par se mélanger...

Rétroaction (Backpressure) et Élasticité dans les Microservices Réactifs

Construire des systèmes à haut débit ne consiste pas seulement à gérer plus de trafic, mais à survivre aux pics de trafic sans se briser. Dans les microservices réactifs, deux concepts sont incontournables pour la stabilité : la rétroaction (backpressure) et l'élasticité. Bien que souvent mentionnés ensemble, ils servent des objectifs distincts. La rétroaction est le mécanisme pour ralentir la source lorsque le consommateur est submergé, tandis que l'élasticité est la capacité du système à mettre à l'échelle les ressources dynamiquement pour correspondre à la demande. Ce guide explore comment implémenter les deux de manière pratique dans des services modernes basés sur Java en utilisant Project Reactor.

Maîtriser les événements de domaine : Nommage, charges utiles et découplage en DDD

Le Domain-Driven Design (DDD) est souvent salué pour sa clarté stratégique, mais il peut échouer si l'implémentation tactique est négligée. L'un des composants les plus critiques, mais souvent mal gérés, est l'événement de domaine. Bien implémentés, les événements de domaine permettent à différents contextes délimités de réagir aux changements sans couplage fort. Mal faits, ils créent des dépendances cachées et des systèmes fragiles.

Maîtriser l'architecture événementielle : des concepts à l'implémentation

Les systèmes logiciels modernes sont de plus en plus complexes, distribués et doivent être hautement réactifs. Les modèles synchrones de type requête-réponse peinent souvent à répondre à ces exigences, entraînant des services fortement couplés et des goulots d'étranglement. Voici l'architecture événementielle (EDA). En découplant producteurs et consommateurs via des événements, l'EDA permet aux systèmes d'être plus évolutifs, résilients et adaptables. Dans cet article, nous explorerons les composants clés d'un écosystème événementiel robuste, notamment les courtiers de messages, l'event sourcing et la ségrégation des responsabilités de commande et de requête (CQRS).

Architecture Zero Trust : Mise en œuvre d’une sécurité centrée sur l’identité dans les microservices

Le modèle de sécurité traditionnel basé sur la périmètre, souvent visualisé comme une architecture de château-fort, est obsolète. Dans les environnements cloud-natifs modernes, les charges de travail sont éphémères, les limites du réseau sont floues et les menaces proviennent de l’extérieur comme de l’intérieur du réseau. Ce changement nécessite une transition vers...