Architecture systèmeIngénieur DevOps

Comment réaliser le dimensionnement horizontal et vertical des applications et quels critères influencent le choix de l'approche ?

Réussissez les entretiens avec l'assistant IA Hintsage

Réponse.

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 :

  • Les capacités de l'application (les applications sans état sont faciles à dimensionner horizontalement);
  • Les limitations de l'infrastructure (y a-t-il la possibilité d'ajouter rapidement des serveurs);
  • Les considérations économiques (le dimensionnement horizontal est plus coûteux avec un grand nombre de nœuds, le dimensionnement vertical atteint les limites du matériel).

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 assure la tolérance aux pannes et la flexibilité
  • Le dimensionnement vertical est plus facile à réaliser, mais il est limité par les capacités du matériel
  • Il est courant de réaliser un hybride : les composants critiques sont dimensionnés horizontalement, ceux qui nécessitent un état - verticalement.

Questions piégées.

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.