Aller au contenu principal

Prérequis Matériels et Guide de Dimensionnement

STOA Gateway fonctionne avec aussi peu que 1 vCPU / 128 Mo de RAM en mode standalone. Un déploiement complet de la plateforme (gateway + control plane + auth + UI) nécessite 4 vCPU / 4 Go de RAM. La HA en production démarre à 3 nœuds / 8 Go chacun.

Ce guide couvre quatre profils de déploiement, du poste de développeur au cluster Kubernetes multi-tenant.

Profils de Déploiement

ProfilCibleCPURAMDisqueAPIsCible RPS
Docker ComposeDev / local4 vCPU8 Go20 Go10-501 000
VPS UniquePetite prod2 vCPU4 Go20 Go SSD50-2005 000
K8s Managé (3 nœuds)Production HA3x 4 vCPU3x 8 Go+3x 80 Go500+20 000+
K3s bare metal (3-5 nœuds)Staging / edge3-5x 2 vCPU3-5x 4 Go3-5x 40 Go200-50010 000

Docker Compose (Développeur)

Recommandé pour le développement local et l'évaluation. Exécute la pile complète sur une seule machine.

Minimum : 4 vCPU, 8 Go RAM, 20 Go disque
Inclus : Gateway, Control Plane API, Console, Portal, Keycloak, PostgreSQL
Optionnel : OpenSearch, Prometheus, Grafana, Loki (+2 Go RAM)

VPS Unique (Petite Production)

Un seul VPS peut exécuter le Gateway en standalone pour les petits catalogues API.

Minimum : 2 vCPU, 4 Go RAM, 20 Go SSD
Exécute : Gateway uniquement (ou Gateway + PostgreSQL + Keycloak pour la pile complète)
Idéal pour : Développeurs solo, petites équipes, < 200 APIs

Kubernetes Managé (Production HA)

Déploiement HA de niveau production avec n'importe quel fournisseur Kubernetes managé.

Recommandé : 3 nœuds, 4 vCPU / 8 Go+ RAM chacun
Total : 12 vCPU, 24+ Go RAM
Inclus : Tous les composants (2 replicas chacun) + pile d'observabilité
Base de données : PostgreSQL managé recommandé (service séparé)

K3s Bare Metal (Staging / Edge)

Kubernetes léger pour le staging, l'edge ou les environnements air-gapped.

Recommandé : 3-5 nœuds, 2 vCPU / 4 Go RAM chacun
Disposition : 1 control plane + 2-4 workers
Inclus : Tous les composants + ingress Traefik + cert-manager

Dimensionnement des Composants

STOA Gateway (Rust)

ParamètreDemandeLimiteNotes
CPU100m500mÉvolue linéairement avec le RPS
Mémoire64 Mi256 MiCache route/politique en mémoire
Replicas2--HA : min 2 en production
DisqueAucun--Stateless ; CP API est la source de vérité

Le Gateway est le composant le plus léger. Une seule instance traite des milliers de requêtes par seconde sur 100m CPU. Augmentez les limites CPU pour les charges à fort débit ; la mémoire reste faible quelle que soit la charge.

Control Plane API (Python / FastAPI)

ParamètreDemandeLimiteNotes
CPU200m1000mÉvolue avec les opérations de gestion API
Mémoire256 Mi512 MiPool de connexions SQLAlchemy
Replicas2--HA : min 2 en production
DisqueAucun--État dans PostgreSQL

Keycloak (Java)

ParamètreDemandeLimiteNotes
CPU500m2000mLe démarrage JVM est intensif en CPU
Mémoire512 Mi1536 MiHeap JVM : régler à 50-75% de la limite mémoire
Replicas1--Instance unique suffisante pour la plupart des déploiements
DisqueAucun--État dans PostgreSQL

Keycloak est le composant le plus lourd. Pour les déploiements avec moins de 1 000 utilisateurs simultanés, une seule instance est suffisante. Passez à l'échelle horizontalement avec le cache Infinispan pour les déploiements plus importants.

Console UI (React / nginx)

ParamètreDemandeLimiteNotes
CPU50m200mServeur de fichiers statiques
Mémoire64 Mi128 MiProcessus worker nginx
Replicas1-2--CDN recommandé en production

Developer Portal (React / nginx)

ParamètreDemandeLimiteNotes
CPU50m200mServeur de fichiers statiques
Mémoire64 Mi128 MiProcessus worker nginx
Replicas1-2--CDN recommandé en production

PostgreSQL

ChargeCPUMémoireDisque
Petite (< 100 APIs)500m512 Mi5 Gi
Moyenne (100-1 000 APIs)2000m4 Gi20 Gi
Grande (1 000+ APIs)4000m+8 Gi+50 Gi+

Un service PostgreSQL managé est recommandé en production. Une seule instance sert à la fois la Control Plane API et Keycloak.

Tailles des Images de Conteneurs

ComposantImage de baseTaille compressée
stoa-gatewaydebian:bookworm-slim~30 Mo
control-plane-apipython:3.11-slim~180 Mo
consolenginx:alpine~40 Mo
portalnginx:alpine~40 Mo
keycloakquay.io/keycloak/keycloak:23.0~400 Mo

Toutes les images sont publiées sur ghcr.io/stoa-platform/ et supportent linux/amd64.

Dépendances Externes

PostgreSQL 15+

Requis pour la Control Plane API et Keycloak.

Utilisateurs SimultanésRecommandéDisque
< 5001 vCPU, 1 Go5 Gi
500-5 0002 vCPU, 4 Go20 Gi
5 000+4 vCPU, 8 Go50 Gi+

Keycloak 23+

Authentification et RBAC. Le heap JVM doit être à 50-75% de la limite mémoire du conteneur.

Utilisateurs SimultanésHeapCPU
< 500512 Mo500m
500-5 0001 Go1000m
5 000+2 Go2000m

OpenSearch 2.x (optionnel)

Analytiques API et agrégation de logs. Non requis pour les fonctionnalités de base.

Volume de LogsHeapDisque
< 1 Go/jour512 Mo10 Gi
1-10 Go/jour2 Go50 Gi
10+ Go/jour4 Go200 Gi+

Prometheus + Grafana (optionnel)

Métriques et tableaux de bord. Surcharge minimale pour la plupart des déploiements.

ComposantCPUMémoire
Prometheus100m256 Mi
Grafana100m128 Mi

Conseils de Mise à l'Échelle

Quand Passer à l'Échelle Horizontalement

SignalAction
CPU Gateway > 70% soutenuAjouter des replicas Gateway
Temps de réponse API P99 > 100 ms (surcharge gateway)Ajouter des replicas Gateway
Temps de réponse CP API > 500 msAjouter des replicas CP API

Quand Passer à l'Échelle Verticalement

SignalAction
Mémoire Gateway > 200 MiAugmenter la limite (grandes tables de routes)
Démarrage Keycloak > 120sAugmenter la limite CPU
Requêtes lentes PostgreSQLAugmenter shared_buffers et la RAM
Erreurs OOM dans n'importe quel podAugmenter la limite mémoire de 50%

Prérequis Réseau

Ports

PortComposantProtocoleNotes
8080GatewayHTTPProxy runtime + API admin
8000CP APIHTTPAPI REST du control plane
8443KeycloakHTTPSAuthentification (OIDC)
80/443Console/PortalHTTP/SInterfaces web (via ingress)
5432PostgreSQLTCPBase de données
9200OpenSearchHTTPAnalytiques (optionnel)
9090PrometheusHTTPMétriques (optionnel)

Bande Passante

  • Surcharge gateway par requête proxifiée : ~1 Ko (en-têtes, logs)
  • Scraping de métriques : négligeable

TLS

Les déploiements en production doivent terminer TLS au niveau du contrôleur ingress. STOA supporte :

  • cert-manager avec Let's Encrypt (recommandé pour Kubernetes)
  • Provisionnement manuel de certificats
  • mTLS entre le Gateway et les APIs upstream (ADR-039)

FAQ

De combien de RAM STOA Gateway a-t-il besoin ?

Le Gateway fonctionne avec aussi peu que 64 Mo de RAM. La demande Kubernetes par défaut est de 64 Mi avec une limite de 256 Mi. L'utilisation de la mémoire augmente avec le nombre d'APIs enregistrées et de politiques en cache. Pour 1 000 APIs, attendez-vous à ~100 Mo.

STOA peut-il fonctionner sur un Raspberry Pi ?

STOA Gateway se compile pour linux/arm64 et fonctionne sur les appareils ARM. Un Raspberry Pi 4 (4 Go) peut exécuter le Gateway en standalone. La plateforme complète (avec Keycloak et PostgreSQL) nécessite au moins 4 Go de RAM, donc un Pi 4 avec 8 Go est recommandé pour la pile complète.

Quel est le déploiement de production minimal ?

Un VPS unique avec 2 vCPU et 4 Go de RAM peut exécuter le Gateway en standalone et traiter des milliers de requêtes par seconde. Pour la HA avec la plateforme complète, commencez avec 3 nœuds Kubernetes (4 vCPU, 8 Go chacun).

Comment se compare STOA en termes d'utilisation des ressources ?

Le runtime Rust de STOA Gateway utilise significativement moins de mémoire que les gateways basés sur la JVM. Une seule instance STOA Gateway (64 Mi par défaut) traite un débit comparable aux gateways qui nécessitent typiquement 256 Mi-1 Gi. Consultez Performance Benchmarks pour des mesures détaillées.