Évaluation finale
Évaluation intégratrice couvrant tous les thèmes du cours — concevez une architecture complète, des exigences jusqu'à l'exploitation.
Objectif
Cette évaluation finale intègre tous les concepts abordés dans les sections précédentes : fondamentaux, architecture, patterns, flux, sécurité, observabilité, déploiement et versionnage. Votre tâche consiste à concevoir une architecture complète pour un système réel.
Il n’existe pas de réponse unique correcte. Ce qui compte, c’est la qualité de votre raisonnement, la cohérence de vos décisions et votre capacité à justifier chaque choix.
Le projet : HealthTrack
Description
HealthTrack est une plateforme de télémédecine qui met en relation les patients avec des médecins pour des consultations virtuelles. La plateforme doit gérer :
- L’inscription et les profils des patients et des médecins
- L’agenda et les rendez-vous avec une disponibilité en temps réel
- Les appels vidéo pour les consultations virtuelles
- Le dossier clinique avec documents et ordonnances
- Les paiements par consultation avec plusieurs moyens de paiement
- Les notifications par email, push et SMS
- Les rapports destinés aux administrateurs et aux médecins
Exigences non fonctionnelles
| Exigence | Valeur |
|---|---|
| Utilisateurs inscrits | 500 000 |
| Consultations quotidiennes | 5 000 |
| Disponibilité | 99,95 % |
| Latence de l’API | p99 < 500ms |
| Données sensibles | Oui (données médicales — réglementation HIPAA/GDPR) |
| Équipe de développement | 20 personnes, 4 squads |
| Calendrier | MVP en 6 mois |
Partie 1 : Style architectural (Fondamentaux)
Questions
- Quel style architectural choisiriez-vous ? Monolithe, microservices ou hybride ?
- Comment diviseriez-vous le système en domaines/services ?
- Comment répartiriez-vous les squads entre les domaines ?
Critères d’évaluation
- Justification claire du style choisi
- Découpage des domaines cohérent avec le métier
- Prise en compte de la taille de l’équipe et du calendrier
Guide de référence
Avec 20 personnes et 4 squads, les microservices sont envisageables mais pas obligatoires. Une option pragmatique :
Domaines suggérés :
- Utilisateurs et Auth (Squad 1) : inscription, profils, authentification
- Rendez-vous et Agenda (Squad 2) : disponibilité, réservations, calendrier
- Consultations et Clinique (Squad 3) : appels vidéo, dossier, ordonnances
- Paiements et Notifications (Squad 4) : encaissements, emails, push, SMS
Chaque squad est propriétaire de son domaine et peut le déployer de manière indépendante.
Partie 2 : Architecture des composants (Architecture)
Questions
- Dessinez un diagramme de haut niveau avec les principaux composants
- Comment les services communiquent-ils entre eux ?
- Avez-vous besoin d’un API Gateway ? D’un BFF ?
- Où réside la logique des appels vidéo ?
Critères d’évaluation
- Diagramme clair avec composants et connexions
- Justification de la communication sync vs async
- Prise en compte des services externes (vidéo, paiements)
Guide de référence
[App Mobile/Web]
│
▼
[API Gateway + Auth]
│
├──► [Servicio de Usuarios] ──► [PostgreSQL]
├──► [Servicio de Citas] ──► [PostgreSQL + Redis]
├──► [Servicio de Consultas] ──► [PostgreSQL + S3]
├──► [Servicio de Pagos] ──► [PostgreSQL]
│
└──► [Event Bus (RabbitMQ/Kafka)]
│
├──► [Servicio de Notificaciones]
└──► [Servicio de Analytics]
[Servicio de Video: Twilio/Agora] ← integración externa
- Communication sync pour les opérations utilisateur (créer un rendez-vous, consulter le dossier)
- Communication async pour les effets de bord (notifications, analytics)
- Vidéo comme service externe — ne pas réinventer la roue
Partie 3 : Patterns appliqués (Patterns)
Questions
- Quels patterns de résilience appliqueriez-vous, et où ?
- Utiliseriez-vous une Saga pour le flux de réservation de rendez-vous + paiement ? Orchestrée ou chorégraphiée ?
- Où appliqueriez-vous le CQRS ? Est-ce nécessaire ?
- Comment garantissez-vous l’idempotence des paiements ?
Critères d’évaluation
- Patterns de résilience appliqués correctement
- Justification de la Saga orchestrée vs chorégraphiée
- Idempotence des opérations critiques
Guide de référence
Résilience :
- Circuit breaker sur les appels au fournisseur de vidéo et de paiements
- Retry avec backoff pour les notifications
- Timeout sur tous les appels entre services
- Bulkhead pour isoler le service de vidéo du reste
Saga pour réservation + paiement (orchestrée) :
- Réserver le créneau dans l’agenda → 2. Traiter le paiement → 3. Confirmer le rendez-vous
- Si le paiement échoue : compenser en libérant le créneau
- Orchestrée parce que le flux est linéaire et que vous avez besoin d’un contrôle centralisé
Idempotence des paiements :
- Idempotency key générée par le client (appointmentId + timestamp)
- Vérifier avant de traiter ; si elle existe, renvoyer le résultat précédent
Partie 4 : Sécurité (Sécurité)
Questions
- Comment gérez-vous l’authentification et l’autorisation ?
- Comment protégez-vous les données médicales sensibles ?
- Quelles mesures de sécurité appliquez-vous à chaque couche ?
- Comment gérez-vous le consentement du patient pour accéder à son dossier ?
Critères d’évaluation
- Authentification robuste (MFA pour les médecins)
- Chiffrement des données sensibles au repos et en transit
- Contrôle d’accès granulaire (RBAC ou ABAC)
- Conformité réglementaire prise en compte
Guide de référence
Authentification :
- JWT avec refresh tokens
- MFA obligatoire pour les médecins
- OAuth2 pour la connexion sociale des patients
Données sensibles :
- Chiffrement au repos (AES-256) pour le dossier clinique
- TLS 1.3 pour tout le trafic
- Données médicales dans une base de données séparée à accès restreint
- Journaux d’audit pour tout accès aux données des patients
Contrôle d’accès :
- RBAC : rôles patient, médecin, admin
- Un médecin ne peut voir que le dossier de ses patients
- Le patient peut révoquer l’accès à tout moment
- Consentement explicite enregistré avec un timestamp
Partie 5 : Observabilité (Observabilité)
Questions
- Quelles métriques métier et techniques collecteriez-vous ?
- Comment implémenteriez-vous le distributed tracing ?
- Quelles alertes sont critiques pour ce système ?
- De quel dashboard l’équipe d’astreinte a-t-elle besoin ?
Critères d’évaluation
- Métriques métier pertinentes (rendez-vous réalisés, taux d’annulation)
- Tracing end-to-end implémenté
- Alertes priorisées selon l’impact sur l’utilisateur
Guide de référence
Métriques métier :
- Rendez-vous réservés vs réalisés vs annulés par jour
- Délai moyen d’attente pour obtenir un rendez-vous
- Taux de succès des paiements
- NPS des patients après consultation
Métriques techniques :
- Latence par service et par endpoint (p50, p90, p99)
- Taux d’erreurs par service
- Disponibilité du service de vidéo
- Taille des files de messages
Alertes critiques :
- Service de vidéo indisponible (impact direct sur les consultations)
- Taux d’erreurs de paiement > 5 %
- Latence p99 > 1s dans le flux de réservation
- Base de données du dossier clinique inaccessible
Partie 6 : Déploiement et exploitation (Déploiement)
Questions
- Comment déploieriez-vous les services ? Kubernetes, serverless, PaaS ?
- Quelle est votre stratégie de CI/CD ?
- Comment gérez-vous la configuration et les secrets ?
- Quelle est votre stratégie de mise à l’échelle ?
Critères d’évaluation
- Stratégie de déploiement cohérente avec l’architecture
- CI/CD automatisé avec des gates de qualité
- Secrets gérés de manière sécurisée
- Mise à l’échelle définie pour les composants critiques
Partie 7 : Versionnage (Versionnage)
Questions
- Comment versionnez-vous les APIs entre les services ?
- Comment gérez-vous les breaking changes ?
- Quelle stratégie de versionnage utilisez-vous pour les événements ?
Critères d’évaluation
- Stratégie de versionnage claire (URL, header ou content negotiation)
- Plan pour les breaking changes sans downtime
- Versionnage des événements pris en compte
Livrable
Votre évaluation doit inclure :
- Document d’architecture (1-2 pages) : diagramme des composants, décisions clés et justifications
- Diagramme de flux pour le cas d’usage principal : réserver un rendez-vous → payer → réaliser la consultation
- Liste des trade-offs : ce que vous avez sacrifié et pourquoi
- Plan de migration : comment vous passeriez du MVP à l’architecture complète
Grille d’évaluation
| Critère | Poids |
|---|---|
| Cohérence entre les décisions | 25 % |
| Justification des trade-offs | 25 % |
| Prise en compte des exigences non fonctionnelles | 20 % |
| Exhaustivité (toutes les parties couvertes) | 15 % |
| Clarté de la communication | 15 % |
Réflexion finale
En complétant cette évaluation, vous aurez mis en pratique l’ensemble du processus de conception architecturale — des exigences jusqu’à l’exploitation. C’est le même processus que vous suivriez dans un projet réel.
Souvenez-vous : l’architecture n’est pas un document statique. C’est un ensemble de décisions qui évoluent avec le système, l’équipe et le métier. L’important n’est pas de tout réussir dès le départ, mais de disposer d’un processus solide pour prendre des décisions et vous adapter lorsque les choses changent.