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

- Киф Моррис, автор, специалист по облачным технологиям

Взгляните на приведенную ниже инфраструктуру и подумайте о боли управления ИТ-инфраструктурой.

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

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

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

• Третья серьезная проблема - это наглядность мониторинга и производительности. Теперь, когда у вас есть вся инфраструктура, как вы следите за ней, чтобы обеспечить ее оптимальную работу? Когда у вас есть проблема, как вы точно определить, где именно в инфраструктуре возникает проблема? Это сеть, сервер или приложение?

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

Что такое "инфраструктура как код"?

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

Или простыми словами: Инфраструктура как код (IaC) означает управление вашей ИТ-инфраструктурой с помощью файлов конфигурации.

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

Преимущества IaC

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

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

Повторяемость / последовательность - ручные процессы приводят к ошибкам, точка. Люди подвержены ошибкам. Как вы читали, ручное управление инфраструктурой приведет к несоответствиям, как бы вы ни старались. IaC решает эту проблему, поскольку сами файлы конфигурации являются единственным источником правды. Таким образом, вы гарантируете, что одни и те же конфигурации будут развертываться снова и снова без расхождений.

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

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

Лучшие практики IaC

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

Контроль версий всех ваших файлов конфигурации.

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

Различные инструменты IaC

• Terraform

• Ansible

• AWS CloudFormation

• Шеф-повар

•Кукольный

• AWS CDK

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

3 основные категории по фазам:

  • обеспечение инфраструктуры
  • конфигурация подготовленной инфраструктуры
  • развертывание приложения

Кроме того, инструменты IaC различаются по принципу КАК они работают:

  • декларативный против процессуального
  • изменчивый против неизменного
  • агент против безагентного

Например, вот сравнение Terraform и Ansible

Какой из них использовать?

Дополнительные сведения об AWS CDK см. В статье ниже, где я попытался рассказать об этом все на высоком уровне.

Все об AWS CDK

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

Больше контента на plainenglish.io