ONG médicale · Belgique
Plateforme éditoriale de MedMission
En développementSoftware Engineering · DevSecOps · GitOps & Cloud · Data
Contexte
MedMission AISBL, une ONG médicale belge, doit présenter ses missions au public et permettre à son équipe de publier et de mettre à jour ce contenu sans dépendre d'un prestataire à chaque modification.
Problème et contraintes
- Un site public et un back-office éditorial dans un même produit, maintenable par une petite équipe.
- Des médias (photos, vidéos) à traiter sans ralentir le site.
- Des données de missions à gouverner : qui publie quoi, et ce qui peut être agrégé publiquement.
Décisions d'architecture et compromis
Dix décisions d'architecture sont documentées dans le dépôt. Les principales :
- Monolithe modulaire plutôt que microservices : une seule unité de déploiement pour une petite équipe, avec des frontières de modules explicites pour pouvoir extraire un module plus tard.
- Architecture hexagonale rendue exécutable : les règles de dépendance entre couches sont vérifiées par des tests ArchUnit à chaque build, pas seulement décrites.
- Back-office sur mesure plutôt qu'un CMS générique : le modèle éditorial des missions est spécifique, et un CMS aurait imposé son propre modèle.
- PostgreSQL comme source de vérité des missions, avec un worker séparé pour le traitement asynchrone des médias.
Sécurité et livraison
- Pipeline Jenkins : contrôles préalables, version SemVer, compilation et tests, puis scan de secrets, analyse des dépendances (SCA), analyse statique (SAST) et génération d'un SBOM.
- Images de conteneur scannées avant publication, puis promotion vers un dépôt GitOps : le déploiement passe par Argo CD, jamais par une commande manuelle.
- Chaque exécution collecte ses preuves (rapports, artefacts) : la livraison est auditable après coup.
- Couverture (JaCoCo) et tests de mutation (PIT) outillés dans le build Maven.
Données
Une décision d'architecture dédiée cadre la gouvernance des données. Le schéma évolue par migrations versionnées (dix à ce jour), et le bilan public des missions est calculé de façon agrégée.
Résultats et état actuel
- En développement actif, déjà déployé ; dernière version taguée v0.5.0.
- 10 décisions d'architecture et 52 fichiers de tests dans le dépôt.