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

Самый очевидный первый вопрос, который следует задать в этом сценарии:

Зачем мне это делать?

Это может вас удивить, но, возможно, вам не стоит этого делать. В конце концов, не все, что вы читаете в Интернете, соответствует действительности.

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

1. Обеспечивает эффект масштаба при развертывании инфраструктуры.

Эта абстракция оборудования дает следующие преимущества:

  1. Использование шаблонов для экономии масштаба.
  2. Передача стоимости обслуживания и замены поставщику облачных услуг.
  3. Предоставление ресурсов по модели своевременной доставки (JIT) для удовлетворения потребностей пользователей.
  4. Выбор правильного размера ресурсов в соответствии с вариантом использования.

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

Реализация стандартных файлов Java Script Object Notation (JSON) с использованием YAML Ain't Markup Language ( YAML) помогает уменьшить количество человеческих ошибок. Человеческая ошибка часто является причиной системных проблем из-за отсутствия необходимых ресурсов до некорректных процедур безопасности и соответствия. Использование шаблонов позволяет:

  1. Использование статического анализа кода для поиска ошибок и уязвимостей системы. (AWS ValidateTemplate, CFN-NAG
  2. Внедрение контроля версий инфраструктуры, позволяющее вернуться к предыдущей версии инфраструктуры.
  3. Предсказуемая подготовка инфраструктуры или ее использование на закате.

3. Повышает маневренность за счет увеличения скорости, масштабируемости и эластичности.

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

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

Увеличьте коэффициент использования оборудования.

Предсказуемо запускать и останавливать оборудование в зависимости от потребностей бизнеса.

Возможность запрограммировать требования к бюджету.

Пример: вы запускаете новое веб-приложение, которое, как ожидается, будет получать 10 000 обращений в час. После дня использования вы понимаете, что объем трафика ограничился всего 1000 обращениями в час. Традиционно это означало бы трату денег на избыточную мощность. Благодаря гибкости, присущей облаку, вы можете писать в условиях подобных сценариев, не платя за неиспользованные ресурсы.

4. Повысьте уровень соответствия за счет использования повторяемых процессов.

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

  1. Возможность создавать инфраструктуру как функции кода и вызывать их по мере необходимости.
  2. Обеспечьте соответствие с самого начала подготовленным системам. Пример Код PCI / DSS.

Как потерпеть неудачу в IaC.

  1. Вы напрямую создаете плохие системы, используя код. Плохой код - это плохой код.
  2. Вы публикуете частный код в общедоступных репозиториях github. Случается чаще, чем вы думаете.
  3. Вы вводите учетные данные в код. Думаю, кто-то оставил входную дверь открытой.

Так стоит ли тебе это делать?

ДА

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