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)

En présentiel ou en classe virtuelle
En français ou en anglais
Public

Développeurs et développeuses, architectes

Accessible aux personnes en situation de handicap

Délai

Le cours peut être organisé dans un délai d'un mois.

Objectifs

A l'issue du cours vous saurez:

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
S.O.L.I.D.
  • 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
Backend
  • 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
Data
  • 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
Pub/Sub
  • 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
HTTP
  • 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
Frontend
  • 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
DevOps
  • 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:

Contact

Questions, inscriptions, demande d'adaptation: