Le dimensionnement horizontal consiste à ajouter de nouvelles instances de l'application (par exemple, de nouveaux serveurs ou conteneurs) pour répartir la charge entre elles. Le dimensionnement vertical consiste à augmenter les ressources sur un seul serveur (ajout de CPU, RAM, disques).
Lors du choix de l'approche, les critères suivants sont pris en compte :
Exemple de dimensionnement horizontal via Kubernetes :
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 5 # nombre de pods - dimensionnement horizontal selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: myimage:v1
Caractéristiques clés :
Le dimensionnement horizontal est-il toujours meilleur que le vertical ?
Non. Pour certaines tâches (par exemple, pour des services monolithiques ou avec état), le dimensionnement vertical peut être plus simple et plus efficace.
Pour le dimensionnement horizontal, l'application ne nécessite-t-elle aucun ajustement ?
Non. L'application doit être sans état, supporter le partage de session (par exemple, grâce à un cache externe) et réagir correctement au dimensionnement.
Le dimensionnement de la base de données se fait-il toujours horizontalement ?
Non. Toutes les SGBD ne se dimensionnent pas facilement horizontalement. Les bases de données relationnelles classiques sont souvent dimensionnées verticalement (scale-up), ou utilisent le sharding/la réplication.