Исследовать развертывание среды
Предположим, что вы когда-либо получили звонок в службу экстренной поддержки по середине ночи из-за сбоя сервера.
В этом случае вам знакома боль от поиска в нескольких электронных таблицах или даже в памяти, чтобы вручную выполнить шаги настройки нового устройства.
Кроме того, существует трудность поддержания согласованности сред разработки и рабочей среды.
Более простой способ удалить возможность человеческой ошибки при инициализации компьютеров — использовать инфраструктуру в качестве кода.
Ручное развертывание и инфраструктура в виде кода
Распространенная аналогия для понимания различий между ручным развертыванием и инфраструктурой как код заключается в сравнении владения домашними животными и скотом.
Когда у вас есть домашние животные, вы даёте каждому из них имя и считаете их личностями; если что-то ужасное происходит с одним из ваших домашних животных, вы склонны сильно переживать.
Если у вас есть стадо скота, вы все равно можете назвать его, но вы учитываете их стадо.
В условиях инфраструктуры могут возникнуть серьезные последствия при подходе к развертыванию вручную, если один компьютер завершается сбоем и его необходимо заменить (домашние животные).
Если вы используете подход инфраструктуры как кода, вы можете проще настроить другую машину, не влияя на всю инфраструктуру (скот), если одна машина выходит из строя.
Реализация инфраструктуры в виде кода
При использовании инфраструктуры как кода вы записываете среду (или среды) в текстовый файл (скрипт или определение).
Файл может включать любые сети, серверы и другие вычислительные ресурсы.
Вы можете проверить файл скрипта или определения в элементе управления версиями, а затем использовать его в качестве источника для обновления существующих сред или создания новых.
Например, можно добавить новый сервер, изменив текстовый файл и запустив конвейер выпуска, а не перенастроив его в среду и подготовив новый сервер вручную.
В следующей таблице перечислены значительные различия между развертыванием вручную и инфраструктурой в виде кода.
Ручное развертывание | инфраструктура в виде кода |
---|---|
Серверы Snowflake. | Устойчивый сервер в разных средах. |
Этапы развертывания зависят от среды. | Среды легко создаются или масштабируются. |
Дополнительные шаги проверки и более сложные процессы вручную. | Полностью автоматизированное создание обновлений среды. |
Расширенная документация для учета различий. | Переход на неизменяемую инфраструктуру. |
Развертывание в выходные дни, чтобы дать время для восстановления после ошибок. | Используйте развертывания типа "сине-зеленое". |
Медленная частота выпуска, чтобы свести к минимуму боль и длинные выходные. | Относитесь к серверам как к скоту, а не как к домашним животным. |
Преимущества инфраструктуры в виде кода
Ниже приведен список преимуществ инфраструктуры в виде кода:
- Способствует аудиту, облегчая отслеживание того, что, когда и как было развернуто. (Другими словами, это улучшает отслеживаемость).
- Предоставляет согласованные среды от выпуска до выпуска.
- Более высокую согласованность в средах разработки, тестирования и рабочей среды.
- Автоматизирует процессы масштабирования и увеличения ресурсов.
- Позволяет конфигурациям находиться под управлением версий.
- Предоставляет возможности проверки кода и модульного тестирования для управления изменениями инфраструктуры.
- Использует неизменяемые процессы службы, то есть если изменения необходимы для среды, развертывается новая служба, а старая снимается, не обновляется.
- Допускает сине-зеленые развертывания . Эта методология выпуска сводит к минимуму время простоя, когда существуют две идентичные среды — одна рабочая, а другая нет. Обновления применяются к серверу, который не находится в рабочем режиме. При проверке и завершении тестирования он переключается на разные динамические серверы. Она становится новой активной средой, и прошлая активная среда больше не является активной.
- Рассматривает инфраструктуру как гибкий ресурс, который можно подготовить, снять и повторно назначить по мере необходимости.