Esc
 Naviguer  Ouvrir Esc Fermer
Aller au contenu

14.3 — Hébergement

🎯 Objectif : choisir un hébergement adapté à ton projet — pas le plus cool, ni le moins cher, ni celui qui revient le plus dans les podcasts. Le bon est celui qui correspond à ta charge, ton équipe et ton budget.

À l'issue de cet axe, tu sauras :

  • Distinguer Serverless / PaaS / IaaS / VPS et leurs trade-offs
  • Connaître les acteurs majeurs 2026 et leur niche
  • Calculer le coût total (TCO) au-delà du prix de surface
  • Configurer un VPS solide (Caddy + systemd + UFW)
  • Anticiper le vendor lock-in et les chemins de sortie

Confirmé 11 min prérequis : axes 4 et 8 lus

flowchart TB
    Edge[Edge / Serverless<br/>Vercel, Cloudflare Workers]
    PaaS[PaaS<br/>Render, Fly.io, Railway, Heroku]
    Container[Container Orchestrator<br/>ECS, Cloud Run, K8s managé]
    IaaS[IaaS — VM<br/>EC2, Hetzner CCX, OVH]
    Bare[Bare-metal / colo]
    Edge --> PaaS --> Container --> IaaS --> Bare
Plus on monte, moins on gère, plus on paye au prix unitaire
NiveauCe que tu gèresCe qui est géré pour toi
Edge / ServerlessCodeTout (runtime, scale, OS, réseau)
PaaSCode + config minimaleOS, runtime, scale, TLS
ContainerImage + manifestsOS, runtime
IaaSOS + tout au-dessusHardware, réseau de base
VPSIdem IaaS — souvent plus simple à provisionner
Bare-metalTout, vraiment toutLe câble

Règle pratique : commence aussi haut que possible. Tu redescends d’un cran quand le coût unitaire ou les contraintes l’imposent.


Serverless / Edge — pour démarrer petit ou scaler partout

Section intitulée « Serverless / Edge — pour démarrer petit ou scaler partout »
Acteur 2026Force
VercelNext.js zero-config, ISR, preview PR, edge functions
Cloudflare Workers + PagesEdge mondial, R2 / D1 / Durable Objects, prix imbattable
NetlifyFrontend statique + serverless functions
Deno DeployTS / Deno natif, ergonomie excellente
AWS Lambda + API Gateway / CloudFront FunctionsBrique de base AWS, intégration native

Quand l’utiliser :

  • Site statique / marketing → Cloudflare Pages, Vercel, Netlify.
  • API frontend Next.js / Nuxt → Vercel ou Cloudflare Pages.
  • Job ponctuel (webhook, cron léger) → Lambda, Workers.
  • Charge en pics ultra-variables (5 req/h ou 5000 req/s) → Workers.

Limites :

  • Cold start : 50-300 ms ajoutés sur la 1ʳᵉ requête après inactivité (sauf Cloudflare Workers, isolat V8 < 1 ms).
  • Limites d’exécution : Vercel ~60 s par fonction (configurable), Lambda 15 min.
  • Pas de connexions persistantes simples (WebSockets, long polling) → Durable Objects ou plate-forme dédiée.
  • Coût explose au-delà d’un certain volume — calcule le seuil.

PaaS = tu déploies une image Docker ou un repo Git, la plateforme s’occupe du reste (TLS, scaling, restart).

Acteur 2026ForceFaiblesse
RenderUX excellente, Postgres / Redis managéRégions limitées
Fly.ioMulti-région native, anycast IP, machines à la demandePlus de friction au début
RailwaySetup en 30 s, DB managéesTarification à l’usage parfois imprévisible
HerokuLe pionnier, encore solideCher, écosystème vieillissant
CoolifySelf-hosted PaaS open sourceTu héberges la PaaS toi-même
DokployAlternative OSS récente à CoolifyCommunauté plus petite

Quand l’utiliser :

  • API + DB pour un SaaS B2B small/mid.
  • Side-project qui décolle, tu veux pas gérer K8s.
  • Migration d’une app monolithique simple depuis Heroku.

Quand basculer ailleurs :

  • Tu veux du multi-cloud ou multi-région profond.
  • Tu paies plus de 1500 €/mois et tu as une équipe ops → IaaS.
  • Tu as un compliance fort (HDS santé, DGSI) → IaaS souverain.

ActeurRégionForce
AWSMondialCatalogue le plus large, écosystème massif
GCPMondialBigQuery, ML, K8s natif (GKE)
AzureMondialIntégration Microsoft, AD
OVHEuropeSouverain FR/UE, prix corrects
ScalewayEuropeSouverain FR, simple
HetznerEurope (DE/FI)Imbattable côté prix : CCX23 (4 vCPU, 16 GB) ~30 €/mois
CloudflareMondial edgeR2 (S3 sans egress), Workers, D1
DigitalOceanMondialUX simple, droplets éprouvés

Quand l’utiliser :

  • Charge stable et significative (le coût unitaire bat la PaaS).
  • Compliance fort (RGPD strict, données santé).
  • Tu as une équipe DevOps qui veut le contrôle.
  • Tu fais beaucoup d’egress (Cloudflare R2 ou Hetzner battent AWS S3 d’un facteur 5).

Un VPS Hetzner CCX23 (4 vCPU dédiés, 16 GB) à ~30 €/mois fait tourner :

  • 1 backend Node/Hono à 500 req/s.
  • Postgres 17.
  • Redis.
  • Caddy reverse proxy avec TLS auto.
  • 4-5 conteneurs Docker.

Un même setup en serverless coûte 200-500 €/mois pour la même charge.

Internet
┌──────────────┐
│ UFW │ Firewall — seuls 22, 80, 443 ouverts
└──────┬───────┘
┌──────────────┐
│ Caddy │ Reverse proxy + TLS auto via Let's Encrypt
└──────┬───────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ app (systemd │ │ postgres │ │ redis │
│ ou docker) │ │ │ │ │
└──────────────┘ └──────────────┘ └──────────────┘
/etc/caddy/Caddyfile
api.example.com {
reverse_proxy localhost:3000
encode zstd gzip
log {
output file /var/log/caddy/access.log
}
}

Caddy provisionne et renouvelle automatiquement le certificat Let’s Encrypt. Aucune config TLS à la main, aucun cron à monter.

/etc/systemd/system/myapp.service
[Unit]
Description=MyApp
After=network.target
[Service]
Type=simple
User=myapp
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node --enable-source-maps server.js
EnvironmentFile=/opt/myapp/.env
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
NoNewPrivileges=true
ProtectSystem=strict
ReadWritePaths=/var/log/myapp
[Install]
WantedBy=multi-user.target
Fenêtre de terminal
sudo systemctl daemon-reload
sudo systemctl enable --now myapp
sudo systemctl status myapp
journalctl -u myapp -f

Workflow zero-downtime simple : pm2, systemctl restart après build, ou un déploiement bleu/vert avec deux services qui alternent. Encore plus simple : Coolify ou Dokploy sur ton VPS = PaaS-like sans frais récurrents externes.


Cas d’usage : utilisateurs partout dans le monde. La latence Paris ↔ Tokyo est ~250 ms. Inacceptable pour une API critique japonaise.

StratégieOutil 2026
CDN edge pour assets statiquesCloudflare, Fastly, CloudFront, Bunny
Edge functions pour logique légèreCloudflare Workers, Vercel Edge, Netlify Edge
Multi-région appFly.io regions, AWS multi-AZ + multi-region
Read replica par régionPostgres + logical replication, Cloudflare D1, PlanetScale

Attention au coût d’écriture multi-région : un write Tokyo qui doit synchroniser Paris ajoute toujours la latence. Souvent on garde un single-writer Europe + reads partout.


Le prix affiché ne dit pas tout. Liste à cocher avant de signer :

PosteÀ ajouter
Compute (CPU, RAM)Affiché
Egress (sortie réseau)Souvent caché, ~0,09 $/GB sur AWS
Stockage (volumes, S3)Affiché
Base de données managée2-3× le prix d’une auto-hébergée
BackupsStockage redondant
Logs / observabilitéDatadog, Sentry, etc. — peut doubler la facture
Support payant$100-15 000 / mois
Temps humain1 jour de dev = ~600 €. 1 incident = ~3 000 €.
Risque de lock-inMigration coûte 1-3 mois de dev

Le coût humain bat presque toujours le coût cloud sur les projets early-stage. Choisis l’option qui te coûte 0 jour de gestion.


Plate-formeNiveau de lockÉchappatoire
Docker image + PaaS🟢 FaibleToute autre PaaS prend la même image
Serverless avec API spécifique (Lambda, Workers)🟡 MoyenRefactorer pour Hono / Hono adapter
BaaS (Firebase, Supabase)🟠 FortSchéma de DB exportable, mais Auth / Functions à refaire
AWS-only (DynamoDB, SQS, EventBridge…)🔴 Très fortRéécriture quasi complète

Stratégie défensive : encapsuler les services tiers derrière une interface (un module storage, email, auth). Le jour du switch, tu changes l’implémentation.


Fenêtre de terminal
# Firewall — n'autoriser que SSH + HTTP/HTTPS
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
# SSH par clé uniquement
sudo nano /etc/ssh/sshd_config
# PasswordAuthentication no
# PermitRootLogin no
sudo systemctl reload ssh
# fail2ban — bloque les IPs qui tentent du brute SSH
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
# Mises à jour automatiques de sécurité
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Tâches récurrentes :

  • apt upgrade mensuel (ou unattended-upgrades).
  • Backup DB chiffré ailleurs (S3 + cron + restic / borg).
  • Surveillance basique (Uptime Kuma sur un autre VPS, ou Better Stack gratuit).
  • Rotation des clés SSH 1×/an.

Projet perso / side-project / MVP
→ Vercel / Cloudflare Pages / Render free tier (€0–10/mois)
API + DB pour un SaaS débutant (< 10 k utilisateurs)
→ Render / Fly.io / Railway (€20–80/mois)
API stable, équipe sans ops, ~€100–500/mois
→ PaaS (Render, Fly) ou Cloud Run / ECS Fargate
→ Garder Postgres managé (Neon, Supabase, RDS)
Charge significative, équipe avec sens DevOps
→ VPS Hetzner ou Scaleway (€30–200/mois, 1-3 machines)
→ Caddy + systemd + Postgres self-hosted
Compliance fort (santé, banque, gov)
→ IaaS souverain (OVH, Scaleway, Outscale, OVH HDS)
→ Probablement K8s ou ECS
Géant cible — > 10 M utilisateurs / multi-région
→ AWS / GCP, K8s ou serverless poussé

Tu as un side-project Next.js qui sert ~3000 visites/mois. Quelle option a le meilleur rapport simplicité/coût ?
Ton API tourne sur Vercel à 1200 €/mois (compute + bandwidth). Charge stable. Comment réduire le coût intelligemment ?
Tu héberges les données de santé pour une clinique française. Lequel est non négociable ?
Tu déploies sur Fly.io et utilises tellement leurs APIs custom (anycast, machines à la demande, edge regions) que migrer prendrait 2 mois. Quelle est la stratégie défensive ?


Suite : 14.4 — Conteneurs en production pour l’industrialisation Docker / Kubernetes.