Bonnes pratiques d'architecture
Concecoir une bonne architecture c'est d'abord avoir une vision d'ensemble: comprendre les besoins métiers et les contraintes techniques, fédérer les parties prenantes au projet autour de critères de qualité, recenser les solutions disponibles, tenir compte du savoir-faire des équipes. C'est aussi accepter que chaque choix technique, et donc à fortiori une architecture, est un un compromis. Au delà de l'expertise technique, c'est cette vista et cette capacité à faire collaborer les parties prenantes au projet qui conditionne la qualité d'une architecture.
C'est donc en adoptant une telle approche que ce séminaire présentera une application complète (backend, frontend, données, messages, sécurité, livraison et déploiement continus) et les bonnes pratiques associées.
(14 heures)
Développeurs et développeuses, architectes
Accessible aux personnes en situation de handicap
DélaiLe cours peut être organisé dans un délai d'un mois.
Objectifs
A l'issue du cours vous saurez:- définir les critères de qualité d'une architecture;
- favoriser les échanges entre parties prenantes d'un projet informatique;
- proposer une architecture adaptée aux contraintes métiers et à l'organisation des équipes;
- implémenter l'architecture choisie en appliquant les design patterns appropriés;
- choisir les technologies qui composent une application full stack.
Prérequis
Ce cours demande une connaissance générale de la programmation d'applications backend.
Méthodes pédagogiques
Le cours alterne théorique et pratique: la mise en pratique prend la forme d'une application "démo" enrichie par le formateur tout au long du séminaire et dont les participants peuvent disposer à la fin du séminaire. Cette application "démo" peut être réalisée en Java ou .NET (à préciser lors de l'inscription)
Une forte interaction avec les participants permettra à chacun de rapprocher les sujets du cours de son travail quotidien.
Programme détaillé
Introduction
- Définition des objectifs: maintenabilité, testabilité, résiliance, performances, sécurité, sobriété.
- Le principe du langage commun (ubiquitous language).
- 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.
Le découpage en couches
- La séparation des responsabilités.
- Les design patterns essentiels.
- La préférence pour les applications stateless.
- L'apport des frameworks et librairies.
- Les tests.
Application monolithique ou microservices
- La délimitation des contextes métiers (bounded context).
- L'application monolitique: avantages et inconvénients.
- L'architecture microservices: avantage et inconvénients.
Les données
- Différents types de bases de données (Sql, NoSql, NewSql) 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
- 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.
Les endpoints
- SOAP ou gRpc pour exposer des opérations (RPC).
- REST pour exposer des ressources.
- GraphQL comme alternative à REST.
- Publish / suscribe avec WebSocket et STOMP.
Les interfaces utilisateurs
- 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.
Livraison et déploiement
- Les mode de compilation : JIT ou AOT.
- La méthodologie "12 factors".
- La containerization: création d'image OCI, livraison sur Kubernetes.
- Le serverless et le déploiement de fonctions.
Prix et financements
2 12
Réduction de 50% pour les associations reconnues d'utilité publique.
Sources de financements pour les organisations françaises:
- prise en charge tout ou partie du coût de la formation par votre opérateur de compétence (OPCO);
- Le dispositif FNE formation si votre organisation est éligible.
- Le plan de développement des compétences de votre entreprise (renseignez-vous auprès de votre service RH).