¿Cuáles son las ventajas y desventajas de los servidores SnowFlakes, los servidores Phoenix y los servidores inmutables?

15

Tengo curiosidad por una matriz como la comparación de seguridad / facilidad de administración / capacidad forense para cada tipo de servidor. Puedo olvidar algunas características clave más de cada tipo también.

Tengo una idea general sobre los tipos, pero una matriz de referencia sería de ayuda al elegir entre ellos en algunos casos (cuando la automatización se vuelve compleja para la aplicación, por ejemplo).

Para evitar la preocupación de que sea demasiado amplia, creo que dividirla en preguntas múltiples dispersaría la información y que una pregunta sobre la comparación de seguridad también necesitaría comparar cada tipo.

Tensibai
fuente

Respuestas:

15

El término Phoenix Server fue acuñado por un compañero de Martin Fowler, y los tres términos se describen en breves artículos sobre el bliki de Martin.

Los pros y los contras de cada servidor se describen en los artículos. La principal diferencia radica en la forma en que se administra el servidor.

Los servidores existen para cumplir la función de un contenedor para algunas aplicaciones. Dado que las aplicaciones cambian con frecuencia, a menudo se requiere cambiar algunos atributos del contenedor, como paquetes, configuración, etc. También a veces se requiere cambiar los atributos del contenedor en sí debido a razones externas, como vulnerabilidades de seguridad que requieren parches para estar instalado.

Hay varias formas de cambiar un servidor existente:

  1. Cree manualmente el servidor inicialmente, luego siga cambiando su contenido (mutando) cada vez que se requiera un cambio.
  2. "Hornee" una imagen para un servidor basada en una receta, generalmente de forma automatizada (no de forma manual). Luego cree servidores a partir de esa imagen. Y repita este proceso en cada cambio.

El primero se llama Snowflake, mientras que el segundo es una práctica que permite los tipos de servidor Phoenix e Inmutable. Donde Immutable indica que no se realizan cambios en un servidor existente una vez que se creó, y Phoenix significa que un servidor se destruye por completo y se usa uno nuevo para reemplazarlo durante el proceso de cambio.

Evgeny
fuente
9

Como estaba más pensando en una lista de ventajas y desventajas de cada tipo, aquí está mi punto de vista (no exhaustivo, en mi opinión son los operativos importantes):

  1. Servidores de copos de nieve

    • Qué son : sistemas con su configuración específica, ningún otro servidor en el centro de datos tiene exactamente los mismos parámetros. Por lo general, se administran manualmente.

    • Ventajas :

      • Se ajusta a las necesidades de lo que se ejecuta en ellos.
      • De larga duración, las actualizaciones suelen ser cortas.
      • Adaptado a casos especiales donde los ajustes están bien documentados por el producto alojado.
    • Inconvenientes :

      • A veces las actualizaciones dejan archivos sin usar, la limpieza puede ser compleja.
      • Cuando los cambios deben realizarse en máquinas múltiples, lleva un tiempo.
      • Nada impide el cambio indocumentado.
      • En el caso de corrupción, debe reconstruir un sistema operativo base y restaurar, algunos ajustes del sistema operativo no se pueden restaurar y se deben volver a aplicar, es fácil pasar por alto una línea y olvidar un ajuste importante.
      • Por lo general, es largo el aprovisionamiento debido a la configuración manual.
  2. Servidores Phoenix

    • Qué son : configurados automáticamente por algún código.
    • Ventajas :

      • Definido por código, capaz de versión.
      • Fácilmente replicable a un punto en el tiempo.
      • Larga vida, actualizaciones cortas también.
      • Los cambios en los archivos controlados están documentados y no se pueden olvidar.
    • Inconvenientes :

    • A veces las actualizaciones dejan archivos sin usar, la limpieza puede ser compleja.
    • No todo está bajo gestión de código, algunos ajustes por un humano pueden perderse si no se incluyen en la automatización.
  3. Servidores inmutables

    • Lo que son :
      • Aprovisionamiento automatizado de una sola vez desde una imagen maestra generalmente sin acceso
    • Ventajas :

      • Definido por código, capaz de versión.
      • Fácilmente replicable a un punto en el tiempo.
      • Superficie de ataque reducida debido a la eliminación habitual del acceso remoto.
      • Configuración fija, ningún cambio puede romper algo
      • Fácilmente escalable 'bajo demanda' desde la imagen maestra.
    • Inconvenientes :

      • Son inmutables, debe asegurarse de que puede lanzar una actualización rápidamente en caso de que un defecto de 0 días lo afecte.
      • No todas las aplicaciones se ajustan bien a este modelo (las bases de datos, por ejemplo, no siempre es posible un reemplazo completo de los mismos datos, hay que manejar la migración).
      • Presenta algunos desafíos nuevos para el análisis forense de la gestión de fallos y registros.

Ninguno de esos patrones es exclusivo, debe elegir el mejor según su necesidad real. Los copos de nieve generan muchas preocupaciones en caso de recuperación después de un desastre, por lo que la elección suele ser más entre Phoenix e Inmutable.

Tensibai
fuente
2

Los tres son patrones, no se trata de elegir y elegir cuál usar en cualquier circunstancia específica, sino de saber cuándo reconocer los patrones que pueden ayudarlo o lastimarlo.

Servidor Snowflake

Un servidor Snowflake es en gran medida un antipatrón que representa el caso cuando un servidor evoluciona de manera incontrolada hasta el punto en que no se puede reproducir fácilmente.

He tenido numerosas ejecuciones con este tipo de servidor en producción, son bastante fáciles de detectar ya que generalmente hay una gran cantidad de cambios fallidos y comentarios como "funcionó [el cambio] en Desarrollo / Prueba / UAT / Puesta en escena ".

Phoenix Servier

Un servidor Phoenix es más un principal que un patrón como Martin Fowler lo expresa:

Un servidor debe ser como un ave fénix, surgiendo regularmente de las cenizas. [un]

Si aplicara el lenguaje de administración de servicios de TI (ITSM) o ITIL a la misma situación, probablemente lo llamaría un plan de continuidad del servicio de TI o plan de recuperación:

Un plan separado para cada servicio debe proporcionar procedimientos detallados y pautas paso a paso para cada etapa de un incidente, de modo que los Equipos de Recuperación puedan restaurar los servicios y así cumplir con el proceso acordado y los RTO componentes.

Servidor inmutable

Un servidor inmutable o infraestructura inmutable es el proceso mediante el cual tratamos toda la infraestructura, configuración y código implementados como completamente inmutables, es decir, sin cambios. Cuando implementamos algo nuevo, activamos una nueva infraestructura e implementamos el código para esto. Curiosamente, esto satisface principalmente las necesidades tradicionalmente satisfechas por Evergreening .


Notas

  • a: El colega de Martin, Kornelis Sietsma, ideó el término "Servidor Phoenix" en una lista de discusión interna.
Richard Slater
fuente