Resume executif
Place API est une API REST construite en .NET 10 selon une architecture Modular Monolith. Le projet est issu de la migration d'une architecture microservices (4 services independants avec RabbitMQ, MongoDB, EventStoreDB, gRPC et YARP) vers un monolithe modulaire simplifie.
L'architecture cible est deliberement minimaliste : PostgreSQL comme seule base de donnees, MediatR pour la communication inter-modules (in-process), et schema-per-module pour l'isolation des donnees.
| Module | Statut | Description |
|---|
| Identity | Complet | Authentification, sessions, 2FA, social login, admin |
| Audit | Complet | Journal d'audit, SignalR temps reel, API admin |
| Messaging | Complet | Email (SMTP), SMS (AWS SNS), Push (stub) |
| Booking | Contracts seul | Projet Contracts cree, module non implemente |
| Flight | Non cree | Prevu dans le plan de migration |
| Passenger | Non cree | Prevu dans le plan de migration |
| Composant | Technologie | Etat |
|---|
| Base de donnees | PostgreSQL 17 | Production |
| ORM | EF Core 10 | Production |
| Auth | ASP.NET Identity + JWT RS256 | Production |
| Background jobs | Hangfire | Production |
| Observabilite | OpenTelemetry + Serilog | Production |
| API Documentation | Swagger + Scalar | Production |
| Orchestration dev | .NET Aspire | Production |
| Email dev | Mailpit | Production |
| CI/CD | GitHub Actions + semantic-release | Production |
| Deploy | Dokploy (docker-compose) | Production |
| Cache | EasyCaching (in-memory) | A migrer |
| Push notifications | Stub | A implementer |
| Metrique | Valeur |
|---|
| Modules actifs | 3 |
| Modules prevus | 6 |
| Entites Identity | 15 |
| Entites Audit | 1 |
| Entites Messaging | 1 |
| Total entites | 17 |
| Migrations Identity | 10 |
| Migrations Audit | 1 |
| Migrations Messaging | 1 |
| Categorie | Nombre |
|---|
| Identity -- Auth | 8 |
| Identity -- Password Recovery | 4 |
| Identity -- 2FA | 5 |
| Identity -- Sessions | 3 |
| Identity -- Push Tokens | 2 |
| Identity -- Linked Accounts | 3 |
| Identity -- Security | 2 |
| Identity -- Admin Users | 2 |
| Identity -- Admin Sessions | 3 |
| Identity -- JWKS | 1 |
| Audit -- Admin | 7 |
| SignalR Hubs | 1 |
| Total endpoints HTTP | 40 |
| Categorie | Fichiers de test |
|---|
| Tests unitaires Identity | ~30 |
| Tests d'integration Identity | ~17 |
| Tests unitaires Audit | 2 |
| Tests unitaires Messaging | 1 |
| Tests d'integration Messaging | 2 |
| Total fichiers de test | ~52 |
| Analyseur | Actif |
|---|
| StyleCop.Analyzers | Oui |
| Roslynator.Analyzers | Oui |
| Meziantou.Analyzer | Oui |
| CSharpGuidelinesAnalyzer | Oui |
| MS Threading Analyzers | Oui |
| AsyncAwaitBestPractices | Oui |
| Warnings as errors | Oui |
| # | Action | Justification |
|---|
| 1 | Ajouter des tests d'architecture | Enforcer l'isolation des modules au build, prevenir la regression architecturale. Faible effort, forte valeur. |
| 2 | Automatiser le build Docker en CI | Actuellement absent de la pipeline. Necessaire pour un deploiement fiable et reproductible. |
| 3 | Implementer les push notifications | Le stub PushServiceStub est en place, l'entite PushToken existe. Il manque l'integration FCM/APNs. |
| # | Action | Justification |
|---|
| 4 | Migrer le cache vers Redis | Le cache in-memory ne supporte pas le scaling horizontal. Redis est deja prevu dans le plan de migration. |
| 5 | Deployer le stack d'observabilite | OpenTelemetry est configure mais les exporters ne sont pas connectes a un backend (Grafana/Prometheus). |
| 6 | Ajouter la couverture de code en CI | Permet de suivre la qualite des tests et d'identifier les zones non testees. |
| 7 | Securiser le dashboard Hangfire | Actuellement accessible sans restriction d'acces en production. Ajouter une politique d'autorisation. |
| # | Action | Justification |
|---|
| 8 | Migrer le module Flight | Premier module metier a migrer depuis l'ancienne architecture microservices. |
| 9 | Migrer les modules Passenger et Booking | Complete la migration vers le modular monolith avec tous les domaines metier. |
| 10 | Implementer le multi-tenancy | L'infrastructure est preparee (champ TenantId dans Audit). Finbuckle.MultiTenant est identifie comme solution. |
- Architecture claire : Modular monolith avec separation stricte via Contracts.
- Securite solide : JWT RS256, token rotation, detection de replay, anti-enumeration, rate limiting, 2FA TOTP.
- Qualite de code : 6 analyseurs statiques avec warnings-as-errors.
- Testabilite : Testcontainers, Respawn, couverture fonctionnelle complete du module Identity.
- Audit complet : Pipeline d'audit automatise avec persistance, temps reel (SignalR), et API de consultation.
- CI/CD automatise : Build, test, semantic versioning, et releases automatiques.
- Documentation API : Swagger et Scalar avec descriptions detaillees pour chaque endpoint.
| Risque | Severite | Mitigation |
|---|
| Cache in-memory empeche le scaling horizontal | Moyen | Migration Redis planifiee |
| Pas de tests d'architecture | Moyen | Implementation recommandee en priorite |
| Push notifications non implementees | Faible | Stub en place, infrastructure prete |
| 3 modules metier non migres | Moyen | Plan de migration detaille disponible |
| Dashboard Hangfire non securise | Eleve | Ajouter une politique d'autorisation |
| Rate limiting in-memory | Moyen | Migrera avec Redis |