Une architecture logicielle efficace ne se résume pas à des choix technologiques : elle nécessite une vision globale intégrant contraintes métiers, expertise technique et collaboration inter-équipes. Pourtant, beaucoup de projets échouent par manque de critères clairs, une mauvaise évaluation des compromis (CAP, ACID), ou une méconnaissance des patterns adaptés (monolithe vs microservices).
Cette formation offre une approche pratique de la conception d’architectures full stack (backend, frontend, données) :
- Cadrer les objectifs qualité (maintenabilité, scalabilité).
- Choisir les solutions techniques (frameworks, bases de données, APIs) en fonction des cas d’usage.
- Industrialiser le déploiement (CI/CD, conteneurs).
Le tout illustré par une application démo en Java/.NET, reprenant les défis réels des participant·es.
Objectif
Évaluer et comparer différentes approches d’architecture logicielle afin d’éclairer les décisions techniques selon les objectifs métiers et les contraintes projet.
Est-ce pour vous ?
Développeurs et développeuses senior·es, architectes logiciels, tech leads, chef·fes de projets techniques impliqué·es dans la refonte d’application existantes (legacy app), le passage à une architecture microservices ou l’optimisation de performance ou de coûts d’infrastructure.
Préalables
Ce cours demande une connaissance générale du développement d'applications backend.
Vos gains
Contenu
Cette formation propose une démarche pour concevoir des applications maintenables, résilientes et performantes. Elle aborde les principes d’architecture applicative sous un angle opérationnel, en mettant en relation les choix techniques, les objectifs métiers et l’organisation des équipes. Chaque module s’appuie sur des cas d’usage complets, avec une application démo développée au fil des étapes, en environnement Java ou .NET.
Introduction : une architecture orientée qualité
Une architecture logicielle efficace repose sur des critères de qualité clairement définis, tels que la maintenabilité, la testabilité, la résilience ou la performance. Ce module pose les fondations de l’architecture orientée qualité, en introduisant les paradigmes de développement, le rôle des objectifs partagés entre parties prenantes, et l’importance d’un vocabulaire commun (ubiquitous language) pour structurer les échanges.
- Définition des objectifs: maintenabilité, testabilité, résiliance, performances....
- Le principe du langage commun (ubiquitous language) pour éviter les malentendus.
- Les paradigmes: objet, fonctionnel, déclaratif.
- Différents types d'applications : I/O bounded, CPU bounded.
- Le paysage IT : les écosystèmes les plus répandus.
Voir plus +/-
Structurer le code : des patterns pour réduire la dette technique
- La séparation des responsabilités.
- Les design patterns essentiels.
- La préférence pour les applications stateless.
- L'apport des frameworks (cadriciels) et librairies.
- Les tests pour garanti
Application Monolithe vs Microservices : choisir en toute connaissance de cause
- La délimitation des contextes métiers (bounded context).
- Les avantages et inconvénients respectifs des applications monolithiques et des architectures microservices.
- La cartographie des contextes (Context Mapping) pour identifier les dépendances et guider le choix des paterns d’intégration.
Gérer les données : SQL, NoSQL et au-delà
- Différents types de bases de données (Sql, NoSql) pour différents besoins.
- Le théorème CAP.
- L'apport d'un pool de connexions.
- L'accès aux données : bloquant ou non bloquant.
- Les transactions et les principes ACID.
- La couche de persistance.
Les messages : intégrer des services de manière asynchrone
- Principes et cas d'usages.
- Les mécanismes de réception des messages: push ou pull.
- Définition des besoins.
- Présentation de RabbitMQ et de Kafka.
Concevoir des APIs résilientes
- SOAP ou gRpc pour exposer des opérations (RPC) et des communications inter-services ultra-rapides
- REST pour exposer des ressources.
- GraphQL comme alternative à REST, permettre des requêtes sur-mesure et éviter la limitation de charge (overfetching)
- Publish / suscribe avec WebSocket et STOMP.
Sécurité : protéger sans complexifier
- Quelques bonnes pratiques ergonomiques.
- Quelques bonnes pratiques d’éco-conception.
- Les formulaires.
- Server side rendering ou client side rendering.
- Réalisation d’IHM côté serveur.
- Les single page applications pour le développement côté client.
- La sécurité : par session, par cookie ou par jeton JWT.
Standardiser la livraison avec le déploiement continu
- Les modes de compilation : JIT ou AOT.
- La méthodologie "15 factors".
- La conteneurisation: création d'image OCI, livraison sur Kubernetes.
- Le serverless (sans serveur) et le déploiement de fonctions.
💡 Informations utiles
Nos formations sont offertes à Montréal ou Québec en présentiel ou en format virtuel. Les dates et lieux sont précisés lors de votre choix de session ci-dessous. Si vous avez des questions concernant l'inscription, les horaires, la langue d’enseignement ou les modalités d’annulation, consultez notre FAQ .
Intervenants
Formation en entreprise
Vous avez plusieurs employés intéressés par une même formation? Que ce soit en présentiel dans vos bureaux ou à distance en mode virtuel, nous offrons des formations privées adaptées aux besoins de votre équipe. Des tarifs de groupes sont disponibles. Contactez-nous pour plus de détails ou demandez une soumission en ligne.
Demander une soumission