Обзор развертывания среды

Завершено

Вам когда-нибудь приходилось принимать звонок в службе поддержки посреди ночи из-за сбоя сервера?

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

Не стоит забывать и про трудности поддержания единообразия среды разработки и рабочей среды.

Более простой способ устранить вероятность ошибки человека при инициализации компьютеров — использовать инфраструктуру как код.

Развертывание вручную или инфраструктура как код

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

Когда вы заводите домашних животных, вы даете каждому из них имя и воспринимаете их по отдельности. Если что-то случается с питомцем, скорее всего, вы будете сильно переживать.

Если же вы разводите скот, возможно, вы дадите животным имена, но будете воспринимать их как стадо целиком.

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

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

Реализация инфраструктуры как кода

Используя инфраструктуру как код, вы записываете свою среду (или среды) в текстовый файл (сценарий или определение).

Файл может включать любые сети, серверы и другие вычислительные ресурсы.

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

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

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

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

Преимущества инфраструктуры как кода

Ниже перечислены преимущества инфраструктуры как кода:

  • Способствует аудиту, упрощая отслеживание параметров развертывания. (Другими словами, она улучшает трассировку).
  • Предоставляет совместимые среды от выпуска к выпуску.
  • Поддерживает единообразие в средах разработки, тестирования и рабочей среде.
  • Автоматизирует процессы вертикального и горизонтального масштабирования.
  • Позволяет управлять версиями конфигураций.
  • Предоставляет возможности проверки кода и модульного тестирования для управления изменениями инфраструктуры.
  • Использует неизменяемые процессы службы, т. е. если изменения необходимы для среды, развертывается новая служба, а старый был снят, он не обновляется.
  • Позволяет сине-зеленые развертывания. Эта методология выпуска сводит к минимуму время простоя, когда существуют две идентичные среды— одна — динамическая, а другая — нет. Обновления применяются к неактивному серверу. После проверки и завершения тестирования он заменяется на различные активные серверы. Затем он становится новой активной средой, при этом предыдущая среда больше не является активной.
  • Воспринимает инфраструктуру как гибкий ресурс, который можно подготовить к работе, отменить подготовку и повторно его подготовить по мере необходимости.