Loading...
Cas d’usage · SaaS & API

Mets ton API en prodsans payer à la requête.

D’un MVP à 1 service à un cluster Kubernetes complet — déploiement sur PaaS par un webhook que ta CI appelle, self-host sur VPS derrière un Load Balancer, ou Kubernetes managé avec autoscaling. Factures mensuelles prévisibles, pas de frais à la requête, pas de trafic facturé au Go, données en UE.

§ 01·Le stack · concept

Anatomie d’une API moderne

Pour toi si…

Tu shippes du code, pas des factures surprises.

Tu fais tourner un SaaS, une API interne, un routeur de webhooks, une plateforme de jobs — tout ce qui traite des requêtes et stocke de l’état. Tu veux un stack qui ne pénalise pas le succès avec des frais à la requête, de l’egress opaque et des factures surprise.

Les 5 couches
Edge · Load Balancer
Terminaison TLS, health checks, répartition round-robin ou least-conn selon le plan.
Service API · conteneurs
Node, Go, Python, Rust — même Dockerfile, sur PaaS ou sur VPS via Compose.
Cache · Redis
Rate limit token bucket, sessions, lectures chaudes — add-on Redis managé selon l’offre PaaS, ou le tien sur VPS.
Base · Postgres/MySQL
Source de vérité — add-on PostgreSQL managé selon l’offre PaaS, ou ta propre base PostgreSQL / MySQL sur VPS.
Workers + queue
BullMQ, Sidekiq, Celery — jobs async, on sort tout ce qui > 100 ms du chemin de requête.
Hygiène prod
Facture prévisible
Tier mensuel flat — un launch viral ne multiplie pas ta facture par 10.
Pas de piège egress
Trafic inclus ; au-delà, usage raisonnable (avertissement puis bridage), jamais facturé au Go — pas de cauchemar à 0,09 $/Go comme AWS.
Secrets · écriture seule
Saisis dans la console, jamais réaffichés une fois enregistrés ; chaque modification est journalisée.
EU residency
App, base et logs dans des centres de données OVHcloud en Europe ; DPA ; export sur demande depuis l’espace client.
Flux requête API · chemin cache hit
une requête, cinq étapes
01LB · TLS02api · container03auth · JWT verify04Redis · cache hit05Postgres · query

Les cache hits s’arrêtent à Redis ; les misses descendent jusqu’à Postgres. Garder un bon taux de hit Redis, c’est ce qui tient la latence p95 — celle que la console mesure par environnement.

§ 02·Déploiement · concept

Ta CI construit, le webhook déploie

Pour toi si…

Ton CI est ton runbook.

Deux chemins depuis le même repo Git. Chemin PaaS : ta CI construit l’image, la pousse sur ton registre et appelle le webhook de déploiement ; la plateforme la déploie sur l’environnement qui suit la branche, derrière ton health check. Chemin VPS : docker compose up sur ta machine derrière un Load Balancer — même Dockerfile, plus de contrôle, pas de magie de scaling cachée. Tu choisis l’arbitrage, on supporte les deux.

4 étapes rollout
1 · Ta CI construit
GitHub Actions, GitLab CI ou autre : elle construit l’image à partir de ton Dockerfile et la pousse sur ton registre.
2 · Webhook de déploiement
Un appel HTTPS avec le jeton de l’application (Bearer) et un corps JSON qui nomme l’image — branche et commit en option.
3 · Rollout avec health check
L’image part sur l’environnement qui suit la branche ; ton health check (chemin, port, intervalle) décide.
4 · Rollback depuis la console
Chaque déploiement reste dans l’historique — remets une image précédente en service depuis la console.
Garde-fous de deploy
Endpoint health
/health teste DB + Redis — remonter les vraies pannes, pas juste la vitalité du process.
Migrations · idempotentes
Lancées au start du conteneur, gated par un lock — les replicas ne se piétinent pas.
Taux d’erreur post-deploy
Surveille le taux de 5xx après chaque rollout — la console lève une alerte au-delà du seuil ; rollback s’il grimpe.
Audit log
Chaque deploy journalisé avec son auteur (console ou webhook CI), l’image, le commit et la branche.
Chaîne de deploy · image poussée par ta CI
PaaS · branche suivie
ton repo
ta CI
Bearer + JSON
VMCloud
step 1
git push
step 2
build + push image
step 3
deploy webhook
step 4
rollout + health check
§ 02·Déploiement · power user

Même Dockerfile · PaaS ou VPS

Dockerfile · marche tel quel sur PaaS ou VPS
dockerfile
# Dockerfile · built by your CI · the same image runs on PaaS and on a VPS
FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:22-alpine
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app/dist ./dist
COPY --from=build /app/node_modules ./node_modules
EXPOSE 3000
HEALTHCHECK --interval=10s --timeout=2s --retries=3 \
CMD wget -q -O- http://127.0.0.1:3000/health || exit 1
CMD ["node", "dist/server.js"]
Secrets · fonctionnement
PaaS
  • ✓Variables et secrets par environnement, saisis dans la console
  • ✓Secrets en écriture seule : jamais réaffichés une fois enregistrés
  • ✓Chaque modification journalisée (clé et auteur, jamais la valeur)
  • ✓Colle un bloc .env : import tout-ou-rien
  • ✓Exposés au conteneur en variables d’environnement
  • ✓Les add-ons managés publient DATABASE_URL / REDIS_URL en secret
§ 03·Échelle · concept

Scaler horizontalement sans facture surprise

Pour toi si…

Un pic ne doit pas te réveiller à 3 h.

Les services API stateless scalent en ajoutant des replicas. Le difficile, c’est aux frontières stateful : pool de connexions DB, saturation de la queue, rate limits downstream. On gère le facile pour toi (les replicas suivent ta cible CPU, dans les limites du plan) et on documente le difficile pour que ton runbook soit honnête.

Leviers de scaling
Horizontal · replicas
Min/max replicas + cible CPU — l’autoscaler ajoute des replicas quand le CPU dépasse la cible, dans les limites du plan.
Offload queue
Tout ce qui dépasse 100 ms part en worker — la requête renvoie 202 + job id, polling ou SSE pour le résultat.
Sizing pool DB
Plafonner replicas × taille du pool sous max_connections de la DB — sinon scaler aggrave la situation.
Cacher le banal
GET /me, /pricing, /catalog — les cacher dans Redis fait chuter la latence p95.
Patterns de deploy
Rolling update
Les replicas remplacées une par une derrière ton health check — le mode par défaut.
Promotion
Valider une image en staging, puis la promouvoir en production — même image, sans rebuild.
Rollback
Remettre une image précédente en service depuis l’historique des déploiements.
Une branche par environnement
Chaque environnement suit sa branche ; le webhook de déploiement route le push vers le bon.
Profil 24 h · req/s et replicas
autoscaler · cible CPU
00h06h12h18h23hreq/sreplicas (--)

Les replicas suivent la demande dans les bornes que tu fixes — ici min 2 (redondance) et max 6 (plafond coût), dans les limites du plan.

§ 03·Échelle · dimensionnement

Dimensionnement par configuration

Dimensionnement · du MVP au scale
tarif public · catalogue
config€/molecture
PAAS-CONTAINER…MVP / staging
PAAS-BUSINESS…petite prod
2× VPS-BUSINESS + LB-BUSINESS…self-hosted HA
PAAS-KUBERNETES + LB-ENTERPRISE…scale

Le débit dépend de ton code et de ton ratio de cache : dimensionne à partir de tes propres tests de charge. Le ratio pertinent est req/s par euro — un cluster VPS self-hosted gagne souvent sur le prix, mais tu perds du temps d’ops. Le PaaS gagne quand le temps d’équipe coûte plus cher que l’infra.

§ 04·Fiabilité · concept

Des SLO alignés avec ton contrat

Pour toi si…

Ton SLA est signé, pas hand-waved.

Les clients B2B demandent un SLA avant de signer. Notre engagement infra, c’est 99 % de disponibilité mensuelle (CGV), mesurée à partir des alertes de supervision et des incidents déclarés. Toute promesse plus stricte à tes propres clients repose sur ton architecture — replicas, health checks, rollback testé — et sur un budget d’erreur que tu suis vraiment. L’écart entre les deux contrats, c’est ton boulot.

Notre SLA, ton SLO
SLA · 99 % mensuel
L’engagement contractuel de la plateforme (CGV) : environ 7 h d’indisponibilité tolérées par mois.
Ton SLO
Ce que tu promets à tes propres clients. Au-delà de 99 %, il se gagne par ton architecture : plusieurs replicas, health checks, rollback testé.
Budget d’erreur
100 % moins ton SLO, sur le mois : tant qu’il reste du budget, tu livres ; une fois brûlé, gel des deploys risqués.
Mesuré, pas estimé
Latence p95, taux de 5xx et alertes par environnement dans la console — les entrées de ton propre SLO.
Observabilité
Logs · par environnement
Logs d’exécution de chaque environnement dans la console, filtrables par niveau et par flux.
Métriques · intégrées
CPU, mémoire, req/s, latence p50/p95 et taux de 5xx, mesurés par VMCloud, avec courbes sur 24 h.
Alertes
Seuils CPU, mémoire, taux d’erreur et latence : alertes listées en cours, puis une fois résolues.
Journal d’audit
Déploiements, rollbacks et changements de configuration journalisés avec leur auteur.
Burn-down du budget d’erreur · ton SLO, exemple
64 % consommé en fin de mois
50 %0 %100 %d1d8d15d22d30

Chaque point est un incident qui consomme le budget du mois. Tant que la ligne reste sous le pointillé 50 % à mi-mois, tu peux continuer à livrer. Au-dessus, on freeze les deploys risqués.

§ 05·Coût · concept

Factures prévisibles, pas de surprise à la requête

Trois profils de cycle de vie

PaaS pour la vitesse, VPS pour le rapport coût.

MVP : l’offre PaaS d’entrée, une image déployée par webhook depuis ta CI, zéro temps d’ops. Petite prod : PaaS avec auto-scaling ou cluster VPS self-hosted — les deux marchent, le second est moins cher. Scale : Kubernetes managé dès quelques dizaines de services. La même image passe d’une offre à l’autre : monter en gamme n’est pas un re-platform.

Formule TCO

TCO = bundle + ops time + egress

La plupart des surprises en hébergement SaaS viennent de l’egress : AWS facture 0,09 $/Go sortant, ce qui produit des factures à 4 chiffres sur une API active. Nos VPS incluent du trafic ; au-delà, usage raisonnable (avertissement puis bridage) — jamais facturé au Go. Le temps d’ops est réel mais borné — même Dockerfile, mêmes env vars, même CI du PaaS au K8s.

Ce que les PaaS cachent
Frais egress
AWS, GCP, Azure : 0,09 $/Go. Heroku passe le coût. Vercel facture les invocations.
Add-ons DB
Heroku Postgres Standard 0 démarre à 50 $/mois. Render facture à part. À additionner avant de signer.
Minutes de build
Vercel facture le temps de build au-dessus du quota inclus — les gros Next.js explosent vite.
Prix par siège
Vercel et d’autres facturent au membre. Une équipe eng de 12 = +240 $/mois, sans capacité en plus.
Bundles VMCloud · chemin PaaS ou VPS
tarif public · UE
profilcomposition€ HT/mois
MVP · déploiement par webhookPAAS-CONTAINER€ 60.48
Production · PaaSPAAS-BUSINESS€ 241.93
Self-hosted · cluster VPS2× VPS-BUSINESS · LB-BUSINESS€ 399.18
Scale · Kubernetes managéPAAS-KUBERNETES · LB-ENTERPRISE€ 1508.05
PaaS / serverless · tarifs publics
$ / mo · Apr 2026
Heroku · Standard-2Xpar dyno1 Go RAM$ 50
Render · Standardpar service2 Go RAM$ 25
Fly.io · shared 4× / 4 GBpar machinerégion UE$ 33
Vercel · Propar siège+ frais à l’usage$ 20
AWS · ECS Fargate (1 vCPU)par tâchehors egress$ 36

Prix unitaires pour un service en config "petite prod". La comparaison pertinente se fait sur la facture entière : dyno + DB + redis + addons + egress.

Bundle VMCloud vs PaaS · par étape du cycle
mensuel, comparable
profilVMCloud€/moPaaS le plus proche$/molecture
MVP · 1 service · 1 workerMVP · déploiement par webhook€60,48Heroku · 2 dynos · 1 web + 1 worker$50équivalent
Petite prod · 3 services · 2 workersProduction · PaaS€241,93Render · 5 services · tier business$125SaaS gagne
Prod intermédiaire · API haute disponibilitéSelf-hosted · cluster VPS€399,18Fly.io · 6 machines + DB · 2 régions$320équivalent
Scale · 50 services · K8sScale · Kubernetes managé€1 508,05AWS · ECS / EKS · + egress + ELB$2 400VMCloud gagne

Lecture : le PaaS a du sens pour un MVP — moins d’ops, coût comparable. L’équation bascule dès plusieurs services ou besoins DB / Redis non triviaux. Les plateformes AWS-class coûtent une fortune dès qu’on additionne egress, ELB, NAT et instances DB.

§ 06·Questions

De vraies questions de vraies équipes

Des leads techniques qui hésitent entre PaaS, VPS et Kubernetes.

Compose, PaaS ou Kubernetes — lequel ?›

Compose sur VPS pour des stacks simples (1 à 5 services, un seul hôte). Le PaaS pour une image que ta CI pousse et que le webhook de déploiement met en service, avec scaling automatique sur les offres qui l’incluent. L’offre PaaS Kubernetes quand il faut un cluster complet — namespaces, Helm, service mesh Istio — typiquement au-delà de 20 services.

Comment gérer la CI/CD ?›

Bring your own — GitHub Actions, GitLab CI, CircleCI : ton pipeline construit l’image, la pousse sur ton registre, puis appelle le webhook de déploiement de l’application (jeton Bearer + corps JSON qui nomme l’image). Pas de pipeline de build propriétaire, pas de lock-in : la console te donne l’étape à ajouter à ta CI.

Et les secrets / variables d’env ?›

Définis par environnement dans la console, ou collés en bloc .env. Les secrets sont en écriture seule : une fois enregistrés, ils ne sont plus jamais réaffichés, et chaque modification est journalisée (clé et auteur, jamais la valeur). Les add-ons managés publient leur URL de connexion en secret.

Multi-région — supporté ?›

Pas en PaaS aujourd’hui : une application est hébergée dans nos centres de données OVHcloud en Europe (Paris, Amsterdam), Frankfurt servant de site de reprise et de sauvegarde, et la commande ne choisit pas de région. Si un contrat impose plusieurs sites, parles-en à notre équipe avant de commander.

Puis-je faire tourner ma propre DB / Redis sur le même VPS ?›

Oui en début de vie. Dès 1 Go de working set ou besoin de point-in-time recovery, les déplacer sur un VPS dédié ou sur un add-on managé du PaaS — PostgreSQL ou Redis selon l’offre. Co-localiser DB et app est un piège dès que les deux grossissent.

RGPD et conformité ?›

Hébergé dans des centres de données OVHcloud certifiés, en Europe. Le DPA couvre les obligations RGPD du sous-traitant. Le journal d’audit (déploiements, changements de configuration et de secrets) est consultable dans ton espace client pour nourrir tes propres preuves de conformité.

Prêt à shipper ?

D’un MVP à 1 service à un cluster Kubernetes complet — même Dockerfile, mêmes variables et secrets, factures prévisibles, pas de frais à la requête, données en UE.