Architecture systèmeIngénieur DevOps

Expliquez comment organiser une architecture évolutive en utilisant la conteneurisation et des orchestrateurs, et quels problèmes potentiels peuvent survenir lors de l'évolutivité ?

Réussissez les entretiens avec l'assistant IA Hintsage

Réponse.

Une architecture évolutive est souvent réalisée grâce à la conteneurisation (par exemple, Docker) et des orchestrateurs (comme Kubernetes). Cette approche permet d'isoler différents composants de l'application, facilitant leur déploiement et leur évolutivité.

Subtilités :

  • Chaque service est emballé dans un conteneur distinct, contenant tout le nécessaire pour son fonctionnement.
  • L'orchestrateur prend en charge l'évolutivité automatique, le redémarrage des services en cas de pannes, l'équilibrage de charge et la gestion du réseau entre les conteneurs.
  • Des problèmes peuvent survenir avec le stockage de l'état (services Stateful), la connectivité réseau entre les services ou en cas de dépassement des limites des ressources.

Exemple de code (manifeste yaml pour Kubernetes ReplicaSet) :

apiVersion: apps/v1 kind: Deployment metadata: name: my-service spec: replicas: 5 selector: matchLabels: app: my-service template: metadata: labels: app: my-service spec: containers: - name: my-service-container image: my-service:latest resources: requests: cpu: "500m" memory: "512Mi" limits: cpu: "1" memory: "1Gi"

Caractéristiques clés :

  • Évolutivité facile grâce à l'isolation des services.
  • Récupération rapide après des pannes.
  • Gestion des dépendances et des ressources au niveau de la plateforme.

Questions piégeuses.

Un conteneur peut-il partager le système de fichiers avec un autre conteneur ?

Oui, les conteneurs peuvent partager des volumes. Dans Kubernetes, cela se fait via des PersistentVolume ou EmptyDir partagés.

Exemple de code :

volumes: - name: shared-data emptyDir: {}

Que se passe-t-il si je scale seulement les pods dans Kubernetes sans scaler la base de données ?

Les services peuvent commencer à ramer, la base étant un goulot d'étranglement. Il est important d'assurer l'évolutivité horizontale ou verticale de tous les "goulots d'étranglement".

Un conteneur peut-il rester opérationnel en cas de défaillance du cluster d'orchestration ?

Le conteneur peut rester en cours d'exécution, mais la gestion, le redémarrage et l'auto-scaling seront impossibles sans le composant de gestion (contrôleur de cluster).