Resume executif

Synthese du projet Place API, etat actuel, metriques cles et actions prioritaires recommandees.

Resume executif

Synthese du projet

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.


Etat actuel

Modules implementes

ModuleStatutDescription
IdentityCompletAuthentification, sessions, 2FA, social login, admin
AuditCompletJournal d'audit, SignalR temps reel, API admin
MessagingCompletEmail (SMTP), SMS (AWS SNS), Push (stub)
BookingContracts seulProjet Contracts cree, module non implemente
FlightNon creePrevu dans le plan de migration
PassengerNon creePrevu dans le plan de migration

Infrastructure

ComposantTechnologieEtat
Base de donneesPostgreSQL 17Production
ORMEF Core 10Production
AuthASP.NET Identity + JWT RS256Production
Background jobsHangfireProduction
ObservabiliteOpenTelemetry + SerilogProduction
API DocumentationSwagger + ScalarProduction
Orchestration dev.NET AspireProduction
Email devMailpitProduction
CI/CDGitHub Actions + semantic-releaseProduction
DeployDokploy (docker-compose)Production
CacheEasyCaching (in-memory)A migrer
Push notificationsStubA implementer

Metriques cles

Code source

MetriqueValeur
Modules actifs3
Modules prevus6
Entites Identity15
Entites Audit1
Entites Messaging1
Total entites17
Migrations Identity10
Migrations Audit1
Migrations Messaging1

Endpoints API

CategorieNombre
Identity -- Auth8
Identity -- Password Recovery4
Identity -- 2FA5
Identity -- Sessions3
Identity -- Push Tokens2
Identity -- Linked Accounts3
Identity -- Security2
Identity -- Admin Users2
Identity -- Admin Sessions3
Identity -- JWKS1
Audit -- Admin7
SignalR Hubs1
Total endpoints HTTP40

Tests

CategorieFichiers de test
Tests unitaires Identity~30
Tests d'integration Identity~17
Tests unitaires Audit2
Tests unitaires Messaging1
Tests d'integration Messaging2
Total fichiers de test~52

Analyseurs statiques

AnalyseurActif
StyleCop.AnalyzersOui
Roslynator.AnalyzersOui
Meziantou.AnalyzerOui
CSharpGuidelinesAnalyzerOui
MS Threading AnalyzersOui
AsyncAwaitBestPracticesOui
Warnings as errorsOui

10 actions prioritaires recommandees

Court terme (1-2 semaines)

#ActionJustification
1Ajouter des tests d'architectureEnforcer l'isolation des modules au build, prevenir la regression architecturale. Faible effort, forte valeur.
2Automatiser le build Docker en CIActuellement absent de la pipeline. Necessaire pour un deploiement fiable et reproductible.
3Implementer les push notificationsLe stub PushServiceStub est en place, l'entite PushToken existe. Il manque l'integration FCM/APNs.

Moyen terme (2-6 semaines)

#ActionJustification
4Migrer le cache vers RedisLe cache in-memory ne supporte pas le scaling horizontal. Redis est deja prevu dans le plan de migration.
5Deployer le stack d'observabiliteOpenTelemetry est configure mais les exporters ne sont pas connectes a un backend (Grafana/Prometheus).
6Ajouter la couverture de code en CIPermet de suivre la qualite des tests et d'identifier les zones non testees.
7Securiser le dashboard HangfireActuellement accessible sans restriction d'acces en production. Ajouter une politique d'autorisation.

Long terme (1-3 mois)

#ActionJustification
8Migrer le module FlightPremier module metier a migrer depuis l'ancienne architecture microservices.
9Migrer les modules Passenger et BookingComplete la migration vers le modular monolith avec tous les domaines metier.
10Implementer le multi-tenancyL'infrastructure est preparee (champ TenantId dans Audit). Finbuckle.MultiTenant est identifie comme solution.

Forces du projet

  • 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.

Risques identifies

RisqueSeveriteMitigation
Cache in-memory empeche le scaling horizontalMoyenMigration Redis planifiee
Pas de tests d'architectureMoyenImplementation recommandee en priorite
Push notifications non implementeesFaibleStub en place, infrastructure prete
3 modules metier non migresMoyenPlan de migration detaille disponible
Dashboard Hangfire non securiseEleveAjouter une politique d'autorisation
Rate limiting in-memoryMoyenMigrera avec Redis