Каковы плюсы и минусы серверов SnowFlakes, серверов Phoenix и неизменных серверов?

15

Мне любопытно узнать о матрице, такой как сравнение безопасности / простоты управления / судебной экспертизы для каждого типа сервера. Я могу забыть еще несколько ключевых особенностей каждого типа.

Я имею общее представление о типах, но справочная матрица может быть полезна при выборе между ними в некоторых случаях (например, когда автоматизация становится сложной для приложения).

Чтобы не беспокоиться о том, что он слишком широкий, я чувствую, что разделение его на несколько множителей приведет к разбросу информации, и что вопрос о сравнении безопасности должен будет также сравнивать каждый тип.

Tensibai
источник

Ответы:

16

Термин Phoenix Server был придуман товарищем Мартином Фаулером, и все три термина описаны в коротких статьях о бликах Мартина.

Плюсы и минусы каждого такого сервера описаны в статьях. Основное отличие заключается в способе управления сервером.

Серверы существуют, чтобы выполнять роль контейнера для некоторых приложений. Поскольку приложения часто меняются, часто требуется изменить некоторые атрибуты контейнера - такие как пакеты, конфигурация и т. Д. Иногда также требуется изменить атрибуты самого контейнера из-за внешних причин, таких как уязвимости безопасности, которые требуют исправлений для быть установленным

Есть несколько способов изменить существующий сервер:

  1. Сначала создайте сервер вручную, а затем продолжайте изменять его содержимое (мутировать) каждый раз, когда требуется изменение.
  2. «Испечь» изображение для сервера на основе рецепта, как правило, в автоматическом режиме (не вручную). Затем создайте серверы из этого образа. И повторяйте этот процесс при каждом изменении.

Первый называется Snowflake, а второй - это практика, которая допускает типы серверов Phoenix и Immutable. Где Immutable указывает, что никакие изменения не вносятся в существующий сервер после его создания, а Phoenix означает, что сервер полностью уничтожен, и для его замены в процессе изменения используется новый.

Евгений
источник
9

Поскольку я больше думал о перечне преимуществ и недостатков каждого типа, вот мое мнение (на мой взгляд, не исчерпывающее, это важные операционные):

  1. Снежинки Серверы

    • Каковы они : системы с их конкретной конфигурацией, никакие другие серверы в центре обработки данных не имеют точно такие же параметры. Они обычно вводятся вручную.

    • Преимущества :

      • Приспосабливаемый к потребностям того, что бежит на них.
      • Долгосрочные, обновления, как правило, шорты.
      • Адаптировано к особым случаям, когда настройки хорошо документированы размещенным продуктом.
    • Недостатки :

      • Иногда обновления оставляют неиспользуемые файлы, очистка может быть сложной.
      • Когда необходимо внести изменения в несколько машин, это займет некоторое время.
      • Ничто не мешает незарегистрированным изменениям.
      • В случае повреждения вам придется перестроить базовую ОС и восстановить ее, некоторые настройки ОС не могут быть восстановлены и должны быть применены повторно, легко проскочить через строку и забыть важную настройку.
      • Обычно долго для обеспечения из-за ручной настройки.
  2. Серверы Phoenix

    • Каковы они : Автоматически настраивается некоторый код.
    • Преимущества :

      • Определяется кодом, в зависимости от версии.
      • Легко копируется в определенный момент времени.
      • Долгоживущие, короткие обновления тоже.
      • Изменения в контролируемых файлах задокументированы и не могут быть забыты.
    • Недостатки :

    • Иногда обновления оставляют неиспользуемые файлы, очистка может быть сложной.
    • Не все находится под управлением кода, некоторые настройки человека могут быть пропущены, если они не включены в автоматизацию.
  3. Неизменные серверы

    • Какие они :
      • Автоматическое однократное предоставление из основного образа, как правило, без доступа.
    • Преимущества :

      • Определяется кодом, в зависимости от версии.
      • Легко копируется в определенный момент времени.
      • Уменьшена поверхность атаки из-за обычного удаления удаленного доступа.
      • Исправлена ​​конфигурация, без изменений что-то может сломаться
      • Легко масштабируется по требованию из основного изображения.
    • Недостатки :

      • Они неизменны, вы должны быть уверены, что сможете быстро обновить обновление в случае, если на вас повлиял недостаток времени в 0 дней.
      • Не все приложения хорошо вписываются в эту модель (например, базы данных, полная замена одних и тех же данных не всегда возможна, есть миграция для обработки).
      • Приносит некоторые новые проблемы для судебного анализа аварий и управления журналами.

Ни один из этих шаблонов не является эксклюзивным, вы должны выбрать лучший в соответствии с вашими потребностями. Снежинки приносят много беспокойства в случае восстановления после бедствия, поэтому выбор обычно больше между Фениксом и Неизменным.

Tensibai
источник
2

Все три являются своего рода паттернами, это не случай выбора и выбора того, что использовать в каких-то конкретных обстоятельствах, а случай, когда нужно узнать, когда распознавать паттерны, которые могут помочь или навредить вам.

Снежинка Сервер

Снежинка Сервер очень анти-паттерн , представляющий случай , когда сервер эволюционирует в неконтролируемым образом до того момента , когда оно не может быть легко воспроизведен.

У меня были многочисленные запуски с этим типом сервера в работе, их довольно легко обнаружить, так как обычно есть большое количество неудачных изменений и комментариев, таких как «это [изменение] работало в Development / Test / UAT / Staging ».

Феникс Сервье

Phoenix сервер является более принципала , чем шаблон , как Мартин Фаулер выразился:

Сервер должен быть как феникс, регулярно восставший из пепла. [а]

Если бы вы применили управление ИТ-услугами (ITSM) или язык ITIL к той же ситуации, вы, скорее всего, назвали бы это Планом обеспечения непрерывности ИТ-услуг или Планом восстановления:

Отдельный план для каждой службы должен содержать подробные процедуры и пошаговые инструкции для каждой стадии инцидента, чтобы группы восстановления могли восстанавливать службы и, таким образом, соответствовать согласованному процессу и компонентам RTO.

Неизменный сервер

Неизменный сервер или Неизменная инфраструктура является процессом , с помощью которого мы лечим все развертывания инфраструктуры, конфигурация и код, совершенно неизменны, то есть неизменны. Когда мы внедряем что-то новое, мы раскручиваем новую инфраструктуру и внедряем код для этого. Интересно, что это в основном удовлетворяет потребности, традиционно выполняемые Evergreening .


Примечания

Ричард Слейтер
источник