L'article propose une approche simplifiée du CQRS (Command Query Responsibility Segregation) en séparant clairement les opérations d'écriture (modification de données) et de lecture (récupération de données) au sein d'un service Node.js, sans recourir à des architectures complexes comme l'event sourcing ou des bases de données distinctes. L'idée centrale est de scinder un service monolithique en deux parties distinctes : une dédiée aux commandes (écritures) et une autre aux requêtes (lectures), afin d'éviter les conflits de responsabilités et d'améliorer la maintenabilité.
L'auteur illustre ce concept avec un exemple concret, comme un OrderService qui mélange des méthodes de gestion des commandes (validation, règles métier) et des méthodes de récupération de données (requêtes, transformations pour l'interface utilisateur). Cette séparation permet de faire évoluer indépendamment les deux parties en fonction des besoins changeants de l'application, réduisant ainsi la complexité et les risques d'erreurs. L'approche reste légère et applicable rapidement dans un projet existant.
L'auteur partage une réflexion sur l’importance d’expliquer un concept avant de le nommer, surtout dans un contexte technique ou d’équipe. Selon lui, partir d’un problème concret, explorer les solutions possibles et leurs implications permet à l’équipe de comprendre et d’adhérer à une approche avant même de lui attribuer un nom — souvent un « buzzword » qui peut générer des biais ou des préjugés. Il illustre cela avec l’exemple de l’architecture hexagonale, adoptée naturellement par son équipe une fois le besoin et la logique compris, alors que le terme seul aurait pu être rejeté d’emblée. L’enjeu est d’éviter que les mots ne deviennent des arguments d’autorité et de privilégier la compréhension profonde pour évaluer la pertinence d’une solution. Une pratique qui favorise la réflexion critique et l’adhésion collective.
L'article explore les concepts fondamentaux de la conception de systèmes, essentiels pour les développeurs et les ingénieurs logiciels. Il aborde des sujets variés tels que l'architecture client-serveur, les adresses IP, le DNS, les proxys, la latence, les protocoles HTTP/HTTPS, les APIs, les bases de données SQL et NoSQL, ainsi que des techniques de mise à l'échelle comme le scaling vertical et horizontal, l'équilibrage de charge, l'indexation des bases de données, la réplication et le sharding. L'article vise à simplifier ces concepts pour les rendre accessibles, que ce soit pour des entretiens techniques ou pour la conception de systèmes scalables dans un environnement professionnel.