Le Backend For Frontend (BFF) est un pattern architectural qui agit comme une couche intermédiaire entre les applications frontend (web, mobile, etc.) et les API ou microservices. Son objectif est de simplifier la récupération et la transformation des données en centralisant la logique d’agrégation et d’adaptation des données côté serveur, plutôt que de la laisser aux clients. Cela évite de surcharger les applications frontend avec des tâches complexes et permet d’offrir une réponse sur mesure, optimisée pour chaque type de client (mobile, web, etc.). Contrairement à une API Gateway, le BFF est dédié à un type spécifique de client, ce qui permet de mieux répondre à ses besoins en termes de format de données, gestion d’erreurs ou authentification. Ce pattern est particulièrement utile dans un contexte MACH (Micro Services, API-first, Cloud Native, Headless) ou lorsque les besoins des utilisateurs varient selon le type d’application, mais il ajoute une couche supplémentaire à maintenir et nécessite des compétences fullstack. Son adoption se justifie surtout si l’expérience utilisateur doit être différente selon les plateformes.
Alexandre Touret partage son retour d’expérience sur un atelier d’Architecture Kata organisé lors de la Riviera Dev, où plus de soixante participants ont planché sur la conception d’une plateforme numérique dédiée au tourisme solidaire et durable. L’objectif était de proposer une solution intégrant profils utilisateurs éco-responsables, tableau de bord d’empreinte carbone, gamification et gestion d’activités locales, avec des contraintes techniques et métiers variées. L’article présente trois approches distinctes : deux propositions d’équipes (dont une très détaillée avec des diagrammes Structurizr) et la sienne, soulignant l’importance de clarifier les besoins métiers, de prioriser les flux principaux et d’externaliser les fonctions critiques (comme les paiements). L’exercice illustre la diversité des solutions possibles selon l’expérience des participants et rappelle que la pratique régulière des katas permet d’améliorer la prise de décision, la communication et l’adaptabilité en architecture logicielle. Une ressource utile pour quiconque s’intéresse à l’amélioration des compétences en design système.
L'article détaille la stack technique de Shopify, révélant comment la plateforme gère une échelle massive avec une architecture qui semble simple en surface, mais qui est en réalité le résultat de décisions architecturales astucieuses et de nombreuses années de refactoring. Shopify utilise principalement Ruby on Rails pour son backend, avec des investissements significatifs dans des outils comme YJIT et Sorbet pour améliorer les performances et la sécurité du typage. Le frontend est principalement construit avec React et TypeScript, tandis que React Native est utilisé pour le développement mobile. Shopify s'appuie sur MySQL pour sa base de données principale, avec des stratégies de sharding et de pods pour assurer l'isolation et la scalabilité. Kafka est utilisé pour la messagerie et la distribution d'événements, tandis que des outils comme Memcached et Redis sont utilisés pour le caching et la gestion des files d'attente. L'infrastructure ML de Shopify utilise des embeddings pour la recherche en temps réel et des pipelines de données basés sur Apache Beam. La plateforme est déployée sur Kubernetes, avec des processus CI/CD robustes et des outils d'observabilité pour assurer la fiabilité et la sécurité. Shopify traite des milliards de requêtes par jour, démontrant l'efficacité de sa pile technologique à grande échelle.
Les tests d'architecture sont essentiels pour maintenir la cohérence et la maintenabilité d'un projet sur le long terme. Ils permettent de vérifier que le code respecte les règles architecturales définies, assurant ainsi une structure correcte et empêchant les dérives lors de l'ajout de nouvelles fonctionnalités ou de l'intégration de nouveaux développeurs. Ces tests servent également de documentation explicite des règles, facilitant l'intégration des nouveaux membres de l'équipe. Plusieurs outils, comme Deptrac, PHPArkitect, PHPat, et Pest, peuvent être utilisés pour mettre en place ces tests dans l'écosystème PHP, chacun ayant ses propres méthodes de configuration et d'utilisation.
L'auteur a nommé son article en référence à l'excuse improbable du "chien qui a mangé mon travail" :) L'architecture en micro-services n'est pas responsable de problèmes, mais les mauvaises décisions si ! L'auteur donne quelques pistes pour repérer les problèmes, et surtout comment s'en prémunir.
L'article explique ce qu'est un monolithe modulaire et quand il doit être préféré à une architecture de microservices.
L'article met en lumière les erreurs fréquentes commises lors de la création de diagrammes d'architecture technique. Parmi celles-ci, on trouve la réalisation de diagrammes théoriques plutôt que concrets, le mélange de niveaux d'abstraction, la surcharge d'informations, l'utilisation de flèches non étiquetées, des compositions trompeuses, l'absence de contexte, et le manque de texte explicatif accompagnant les diagrammes. Pour éviter ces écueils, il est recommandé de se concentrer sur des représentations spécifiques et claires, de séparer les niveaux d'abstraction, de réduire le nombre de préoccupations simultanées, d'étiqueter les relations, de fournir un contexte adéquat, et d'accompagner les diagrammes de descriptions détaillées.
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Une proposition d'architecture intéressante
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Une excellente présentation / comparaison de 3 styles architecturaux : architecture hexagonale, clean architecture, et onion architecture.
Tout est dans le titre