Une infrastructure souveraine (UE / RGPD), maîtrisée en coût et prête à scaler : Hetzner auto-géré via Terraform aujourd'hui, cloud managé européen le jour où la charge le justifie. Décrite en code, déployée en GitOps.
Principes directeurs
Les cinq règles qui guident tous nos choix d'infrastructure.
La stack d'infrastructure
Chaque outil, son rôle et pourquoi on l'a choisi.
| Techno | Rôle | Pourquoi |
|---|---|---|
| Terraform | Provisionnement | Décrit et crée toute l'infra Hetzner (nœuds, réseau, volumes, firewall) de façon reproductible. Permet de détruire puis recréer un environnement à la demande. |
| Kubernetes | Orchestration | Fait tourner et auto-répare la vingtaine de conteneurs (services Rust, Care Engine, Kafka, bases, observabilité) : redémarrage automatique, placement, montée en charge horizontale. |
| Helm | Packaging | Empaquette chaque service en chart versionné et paramétrable (dev / prod), pour des déploiements répétables. |
| Argo CD | Déploiement GitOps | Déploie automatiquement depuis Git : l'état réel du cluster suit toujours le dépôt, rollback par simple revert de commit. |
| SOPS + age | Secrets | Chiffre les secrets (clés, mots de passe) directement dans Git : rien en clair, déchiffrement uniquement dans le cluster. |
| step-ca | PKI interne | Autorité de certification interne : chaque collier et chaque service s'authentifie en mTLS par certificat. |
| OpenTelemetry + Prometheus / Loki / Tempo / Grafana | Observabilité | Métriques, logs et traces unifiés : on voit l'état du système et on remonte une requête à travers tous les services. |
| KrakenD + Traefik / cert-manager | Gateway & Ingress | KrakenD agrège les API ; Traefik et cert-manager gèrent l'entrée HTTP et les certificats TLS automatiques. |
Le choix d'hébergement
Bare Metal, VPS auto-géré ou cloud managé : ce qu'on retient et pourquoi.
| Critère | Bare Metal | VPS auto-géré (Hetzner) | Cloud managé (Scaleway / hyperscaler) |
|---|---|---|---|
| Coût à capacité égale | Le plus bas, mais engagement | Très bas (ARM), facturé à l'heure | Plus élevé (compute premium) |
| Scalabilité | Manuelle, lente | Horizontale via K8s (ajout de nœuds) | Automatique (autoscaling managé) |
| Ops à notre charge | Tout, matériel inclus | Le cluster K8s, automatisé par Terraform | Minimale (control-plane + DB managés) |
| RGPD / UE | Selon hébergeur | Oui (Hetzner, UE) | Oui en région UE (Scaleway / OVH, FR) |
| Mise en place | Plusieurs jours | Quelques minutes (Terraform) | Quelques minutes |
| Adapté à | Pas pour nous | Maintenant (dev → keynote → early prod) | Au scale (traction réelle) |
Décision : VPS Cloud Hetzner auto-géré, lignes ARM (CAX), provisionné par Terraform. Depuis la hausse des prix Hetzner du 15 juin 2026 (jusqu'à +176 % sur les lignes AMD CPX/CCX, +30 % seulement sur l'ARM CAX), la ligne ARM devient la plus rentable et reste largement suffisante pour notre charge. Le bare metal est écarté (trop d'ops matérielle pour une équipe étudiante) ; le cloud managé est gardé pour le passage à l'échelle.
Stratégie en deux temps
Commencer simple et souverain, scaler uniquement quand le besoin réel apparaît.
- Cluster Kubernetes provisionné par Terraform : control-plane CAX21 + 2 workers CAX31, environ 52 €/mois (~630 €/an) pour ~20 vCPU et 40 Go provisionnés, dimensionnés pour un besoin de ≈ 16 vCPU / 32 Go.
- Lignes ARM (CAX) : le meilleur rapport prix / puissance chez Hetzner depuis juin 2026.
- Déploiement GitOps via Argo CD, secrets chiffrés (SOPS + age), PKI interne (step-ca).
- Souveraineté UE (Allemagne / Finlande), 20 To de trafic inclus par serveur.
- Control-plane Kubernetes managé et gratuit : on n'opère plus le control-plane soi-même.
- PostgreSQL managé, Object Storage S3, Load Balancer et GPU à la demande.
- Reste en France / UE (RGPD), sans lock-in ni surcoût hyperscaler.
- Alternative équivalente : OVHcloud Managed K8s (egress UE gratuit). Azure AKS gardé pour un besoin multi-région ou un SLA entreprise.
Maîtrise des coûts en développement
Éteindre ne suffit pas : on détruit et on recrée à la demande.
Le réflexe « j'éteins les serveurs hors usage » ne fonctionne pas chez Hetzner : un serveur arrêté reste facturé tant qu'il n'est pas supprimé. Le bon mécanisme s'appuie sur l'Infrastructure as Code.
- Facturation horaire avec un plafond mensuel : un serveur qui n'existe que quelques heures par jour est facturé au prorata.
- Environnements de dev éphémères : « terraform destroy » le soir et le week-end, « terraform apply » le matin.
- Un cluster de dev actif ~40 h/semaine au lieu de 168 h coûte environ 25 % du plafond, soit près de 70 % d'économie sur le compute de dev.
- Les données sont préservées sur des volumes persistants (~0,057 €/Go/mois) ou des snapshots ; seul le compute est détruit puis recréé.
Coût annuel hors école
Ce que coûterait le projet sur un an selon le modèle d'hébergement.
| Scénario | Ce qu'il comprend | Coût annuel |
|---|---|---|
| Bare metal (serveur dédié) | Compute brut le moins cher, mais toute l'ops matérielle à notre charge : réservé à des tests, jamais à la production | ~1 000 à 1 500 €/an |
| Hetzner Cloud auto-géré (retenu) | 1× CAX21 + 2× CAX31 (ARM) + backups + volumes + Load Balancer + domaine + IA | ≈ 1 750 €/an (dont ~150 € de dev) |
| Cloud managé EU | Scaleway / OVH : 3 nœuds + PostgreSQL managé + Object Storage + LB + IA | ~3 000 à 3 700 €/an |
| Hyperscaler (référence) | Azure AKS équivalent (multi-région, SLA entreprise) | ~6 000 à 10 000 €/an |
Ordres de grandeur, hors école. En phase projet (démo, faible trafic), l'IA coûte environ 15 €/mois ; au stade premiers utilisateurs, l'usage IA (Azure OpenAI cascade + Cohere) monte vers 30 à 50 €/mois. Le coût réel est piloté par le trafic et le volume de requêtes IA. Le chiffrage détaillé figure dans la page Budget.
Pourquoi pas un hyperscaler tout de suite
Pourquoi pas un hyperscaler tout de suite ? Coût 4 à 6 fois supérieur, souveraineté seulement partielle (le Cloud Act américain peut s'appliquer même en région UE), lock-in fournisseur et complexité inutile tant qu'on n'a ni multi-région ni SLA entreprise à tenir. On reste sur de l'auto-géré souverain et peu cher, et on bascule vers du managé le jour où la charge et l'équipe le justifient. Construire pour une échelle qu'on n'a pas encore, ce serait du sur-engineering.