Objectifs
Les systèmes logiciels modernes, qu'ils soient ou non en micro-services, nécessitent toujours plus d'attention à leur architecture logicielle. Au-delà d'assurer un bon fonctionnement avec les performances et le coût attendu, l'architecture vise de plus en plus à répondre aux enjeux de modularité, d'autonomie des équipes, de modernisation d'existant, de cohérence à l'échelle. Face à ces enjeux, la somme des compétences nécessaires semble considérable, mais nous avons réussi à en proposer une synthèse compacte et structurée, quelque soit les technologies envisagées pour la mise en œuvre.
La formation Architecture Modulaire et Pragmatique couvre ainsi à la fois la théorie et les applications de l'architecture de systèmes qui peuvent être complexes, et ce dans une présentation unifiée. Le contenu est issu de notre expertise théorique ainsi que de nos nombreuses expériences d’accompagnement de nos clients sur des sujets spécifiquement d'architecture, en incluant les modes d’échec classiques que nous avons observés.
Cette formation présente la démarche et les raisonnements, introduit les concepts essentiels, dont certains empruntés à DDD, couvre les techniques et patterns clés d’architecture ainsi que les principales technologies nécessaires pour les mettre en œuvre. Et puisque cette mise en œuvre commence le plus souvent sur des systèmes existants, cette formation décrit aussi des trajectoires de migration et de cohabitation avec le legacy, ainsi que les enjeux humains associés.
Au cours de cette formation vous allez
- Apprendre à définir une architecture pragmatique, la documenter et la présenter
- Acquérir une vision structurée d’un système logiciel dans ses différentes perspectives et ses différentes échelles • Anticiper les principales problématiques d’une architecture en évolution et en production
- Identifier les couplages et les critères de modularité, pour la scalabilité et la disponibilité
- Connaître les principaux patterns et styles architecturaux de l’état de l’art
- Savoir concevoir un système à base de (micro)-services ou en monolithe modulaire
- Définir une trajectoire de migration d’un existant vers une approche plus modulaire
Agenda
Introduction à l’Architecture
- Les multiples définitions de l’architecture technique : une question de stabilité, grande échelle, savoir partagé, décisions irréversibles ◦ Architecture comme moyen d’alignement entre les objectifs de l'entreprise et ses systèmes d’information
- Les perspectives d'Architecture
- Architecture vs. Architecte
- Architecture Émergente
Principes d'architectures modulaire
- Aperçu des Bounded Contexts et du Context Mapping
- Comment modulariser pour favoriser l'autonomie locale
- Microservices vs. Modular Monolith
- L'importance des contrats rétrocompatibles entre modules
- Federated vs. Centralized Data
- Réaliser les conséquences en terme de duplication (DRY vs Coupling) et de cohérence à terme (Eventual Consistency)
Overview de styles d’architecture
- Event-Driven Architecture
- Choregraphie vs. Orchestration, forces et faiblesses respectives
- Microservices Architecture, Smart Endpoints & Dumb Pipes
- Architecture Hexagonale
- Entreprise Integration Patterns (EIP, Gregor Hohpe), Integration styles, PoEAA (Fowler) ◦ Notions de design d'API
- Architecture globale vs. locale, Umbrella diagrams
Technical Architecture
- Asynchronous messaging, queues vs topics, Events vs. Commands
- Data consistency: Golden Source, replication, autonomy vs. authority
- Fault-tolerance, Load balancing
- Stateless vs. statefull, consequences, stickiness & affinité, managing sessions ◦ Configuration, Discovery
- Logging & tracing guidelines, Monitoring: guidelines, tools
- Integration in practice: reconciliation, data migration
- Notions de Test-Driven Architecture, métriques, static analysis
- L’importance de la communication en architecture, techniques et astuces
- Notions de Living Documentation appliquée à l’architecture
Legacy migration patterns
- Principes de Legacy Cohabitation et non de Big Bang
- Strangler Application Pattern
- Legacy Read Model, Macroservice, Change Data Capture patterns appliqués au legacy ◦ Principes de raisonnement de ROI sur les décisions de modernisation
- Autres patterns de Legacy
Pré-requis
- Knowledge of different programming languages with good object design skills.
- Previous experience in software development.
- Participants must have a workstation with a development environment.
Public
Cette formation s’adresse aux développeurs expérimentés, team leads, responsables d’architectes, mais aussi aux architectes confirmés ou en devenir.
What participants say about this workshop
"This workshop had a good technical level, both from content and instructor. A great overview of modern architecture practices. This workshop helped me to validate my knowledge and strenghthen my opinion about techniques."
"I liked the excellent communication and the amount of practical tasks we received. These sessions have improved my mindset on architecture and on DDD in particular."
"I enjoyed the very complete view of modern architecture practices. I will reflect on my work more before implementing it, and I might choose another role in my next assignments."