Quels sont les avantages et les inconvénients des serveurs SnowFlakes, des serveurs Phoenix et des serveurs immuables?

15

Je suis curieux d'une matrice comme la comparaison sur la sécurité / facilité de gestion / capacité médico-légale pour chaque type de serveur. J'oublierai peut-être aussi quelques fonctionnalités clés de chaque type.

J'ai une idée générale sur les types mais une matrice de référence serait utile pour choisir entre eux dans certains cas (lorsque l'automatisation devient complexe pour l'application par exemple).

Pour éviter de craindre qu'il soit trop large, je pense que le diviser en plusieurs questions disperserait les informations et qu'une question sur la comparaison de la sécurité devrait également comparer chaque type.

Tensibai
la source

Réponses:

16

Le terme Phoenix Server a été inventé par un membre de Martin Fowler, et les trois termes sont décrits dans de courts articles sur le bliki de Martin.

Les avantages et les inconvénients de chacun de ces serveurs sont décrits dans les articles. La principale différence réside dans la façon dont le serveur est géré.

Les serveurs existent pour remplir le rôle de conteneur pour certaines applications. Étant donné que les applications changent souvent, il est souvent nécessaire de modifier certains attributs du conteneur - tels que les packages, la configuration, etc. Il est également parfois nécessaire de modifier les attributs du conteneur lui-même pour des raisons externes, telles que des vulnérabilités de sécurité qui nécessitent des correctifs pour être installé.

Il existe plusieurs façons de modifier un serveur existant:

  1. Créez manuellement le serveur initialement, puis continuez à modifier son contenu (en mutant) chaque fois qu'un changement est requis.
  2. "Bake" une image pour un serveur basé sur une recette, généralement de manière automatisée (pas manuellement). Créez ensuite des serveurs à partir de cette image. Et répétez ce processus à chaque changement.

Le premier est appelé Snowflake, tandis que le second est une pratique qui autorise les types de serveurs Phoenix et Immutable. Où Immutable indique qu'aucune modification n'est apportée à un serveur existant une fois qu'il a été créé, et Phoenix signifie qu'un serveur est complètement détruit et qu'un nouveau est utilisé pour le remplacer pendant le processus de modification.

Evgeny
la source
9

Comme je pensais davantage à une liste d'avantages et d'inconvénients de chaque type, voici mon point de vue (non exhaustif, ce sont les plus importants opérationnels à mon avis):

  1. Serveurs de flocons de neige

    • Ce qu'ils sont : des systèmes avec leur configuration spécifique, aucun autre serveur du centre de données n'a exactement les mêmes paramètres. Ils sont généralement administrés manuellement.

    • Avantages :

      • Adapté aux besoins de ce qui fonctionne sur eux.
      • Les mises à jour de longue durée sont généralement des courts métrages.
      • Adapté aux cas particuliers où les réglages sont bien documentés par le produit hébergé.
    • Inconvénients :

      • Parfois, les mises à jour laissent des fichiers inutilisés, le nettoyage peut être complexe.
      • Lorsque les modifications doivent être apportées à plusieurs machines, cela prend du temps.
      • Rien n'empêche un changement non documenté.
      • En cas de corruption, vous devez reconstruire un système d'exploitation de base et restaurer, certains ajustements du système d'exploitation ne peuvent pas être restaurés et doivent être réappliqués, il est facile de glisser sur une ligne et d'oublier un ajustement important.
      • Généralement long à approvisionner en raison de la configuration manuelle.
  2. Serveurs Phoenix

    • Ce qu'ils sont : configurés automatiquement par un code.
    • Avantages :

      • Défini par code, version-capable.
      • Répliqué facilement à un moment donné.
      • Mises à jour courtes et de longue durée également.
      • Les modifications apportées aux fichiers contrôlés sont documentées et ne peuvent pas être oubliées.
    • Inconvénients :

    • Parfois, les mises à jour laissent des fichiers inutilisés, le nettoyage peut être complexe.
    • Tout n'est pas sous gestion de code, certains ajustements par un humain peuvent être manqués s'ils ne sont pas inclus dans l'automatisation.
  3. Serveurs immuables

    • Ce qu'ils sont :
      • Provisionnement unique automatisé à partir d'une image principale avec généralement aucun accès.
    • Avantages :

      • Défini par code, version-capable.
      • Répliqué facilement à un moment donné.
      • Surface d'attaque réduite en raison de la suppression habituelle de l'accès à distance.
      • Configuration fixe, aucun changement ne peut casser quelque chose
      • Facilement évolutif «à la demande» à partir de l'image principale.
    • Inconvénients :

      • Ils sont immuables, vous devez vous assurer que vous pouvez effectuer une mise à jour rapidement en cas de défaut de 0 jour vous impactant.
      • Toutes les applications ne s'intègrent pas bien dans ce modèle (bases de données, par exemple, un remplacement complet sur les mêmes données n'est pas toujours possible, il y a une migration à gérer).
      • Apporte de nouveaux défis pour l'analyse judiciaire de la gestion des plantages et des journaux.

Aucun de ces modèles n'est exclusif, vous devez choisir le meilleur en fonction de vos besoins réels. Les flocons de neige apportent beaucoup de préoccupations en cas de récupération après une catastrophe, le choix est généralement plus entre Phoenix et Immutable.

Tensibai
la source
2

Les trois sont des sortes de modèles, ce n'est pas un cas de choisir et de choisir lequel utiliser dans une circonstance spécifique, mais un cas de savoir quand reconnaître les modèles qui peuvent vous aider ou vous blesser.

Serveur de flocon de neige

Un serveur Snowflake est vraiment un anti-modèle représentant le cas où un serveur évolue de manière incontrôlée au point où il ne peut pas être facilement reproduit.

J'ai eu de nombreux run-ins avec ce type de serveur en production, ils sont assez faciles à repérer car il y a généralement un grand nombre de changements et de commentaires qui ont échoué tels que "cela [le changement] a fonctionné dans Développement / Test / UAT / Staging" ".

Phoenix Servier

Un Phoenix Server est plus un principe qu'un modèle comme le dit Martin Fowler:

Un serveur devrait être comme un phénix, renaissant régulièrement de ses cendres. [une]

Si vous deviez appliquer le langage de gestion des services informatiques (ITSM) ou ITIL à la même situation, vous l'appelleriez probablement un plan de continuité des services informatiques ou un plan de récupération:

Un plan distinct pour chaque service doit fournir des procédures détaillées et des directives étape par étape pour chaque étape d'un incident afin que les équipes de récupération soient en mesure de restaurer les services et ainsi de respecter le processus convenu et les RTO des composants.

Serveur immuable

Un serveur immuable ou une infrastructure immuable est le processus par lequel nous traitons toute l'infrastructure, la configuration et le code déployés comme totalement immuables, c'est-à-dire immuables. Lorsque nous déployons quelque chose de nouveau, nous faisons tourner une nouvelle infrastructure et déployons le code à cela. Fait intéressant, cela satisfait principalement les besoins traditionnellement remplis par Evergreening .


Remarques

  • R : Le collègue de Martin, Kornelis Sietsma, a proposé le terme "Phoenix Server" sur une liste de discussion interne.
Richard Slater
la source