Эффективная реализация и управление инфраструктурой как код
Что такое Infrastructure as Code (IaC)?
Модель «инфраструктура как код» (Infrastructure as Code, IaC) — это подход для настройки и автоматизации в ИТ с помощью кода, который помогает экономить время на рутинных рабочих процессах.
Infrastructure as Code помогает ускорить реагирование ИТ-сферы на постоянно меняющийся рынок: улучшает процесс разработки, упрощает развертывание, снижает риски.
Основные принципы концепции
Infrastructure as Code применяет практики DevOps в разработке ПО в зависимости от потребностей и экспертизы команды. Основные принципы концепции:
- Декларативный. Требуется администратор, который представит систему в виде файлов с настройками желаемого результата. IaC сделает все остальное — займется развертыванием контейнера, установкой ПО и остальным. Из инструментов часто применяются Terraform и CloudFormation.
- Императивный. К этой методологии относятся Ansible и Chef. Инфраструктуру в этом случае представляют с помощью команд и скриптов, что может увеличить объем работы при масштабировании.
- Гибридный. Описание инфраструктуры для настройки участков может включать в себя оба подхода (файлы и команды).
Преимущества использования IaC
Infrastructure as code содержит массу преимуществ для DevOps и благодаря сокращению рутинного труда инженеров помогает команде сосредоточиться на более важных задачах. Перечислим основные выгоды:
- Простота и скорость, когда раскрутить полную архитектуру можно одним кликом.
- Согласованность настроек и повторяемость. В результате каждое развертывание последовательно и свободно от ошибок инженеров.
- Контроль версий и совместная работа. Команды могут контролировать изменения, откатывать программы до предыдущих настроек, продуктивно сотрудничать.
- Гибкость и масштабируемость. Благодаря IaC можно без ручного вмешательства ускорить как запуск нового сервера, так и развертывание кластера.
- Экономия стоимости. Infrastructure as code помогает сэкономить за счет оптимизации использования ресурсов, автоматизации развертывания и управления структурой.
Внедрение IaC в корпоративную инфраструктуру
Подготовка к внедрению
Важно придерживаться строгой политики внедрения изменений в ИТ. Сюда входит регулирование настроек через программный код. Infrastructure as code необходимо разворачивать с использованием CI/CD-конвейеров, чтобы исключить риск некорректной конфигурации в средах, а также сохранить согласованность структуры.
Используемые инструменты и технологии
Рассмотрим популярные инструменты и технологии, которые чаще всего используются для реализации Infrastructure as code:
Terraform. Открытое ПО использует собственный декларативный язык конфигурации. Программа помогает управлять ресурсами и поддерживает множество облачных провайдеров.
Развертывание во множестве облачных решений
Chef. Способ управления конфигурациями, написанный на Ruby и Erlang. Применяется для упрощения настройки и поддержки большинства серверов.
Ansible. Простой и многоцелевой инструмент на языке Python, который автоматизирует настройки и развертывание ПО на различных хостах.
SaltStack отличается высокой производительностью благодаря асинхронному выполнению задач и совместной работе серверных компонентов Salt-master и клиентов Salt-minion. Платформа разработана на Python и работает в push-режиме при помощи Salt-SSH.
Управление инфраструктурой как код
Как мы уже выяснили, методика Infrastructure as code направлена на автоматическое развертывание и настройку серверов, сетей и других элементов. Как это работает:
- Определение и проектирование инфраструктуры на выбранном языке программирования;
- Передача файлов конфигурации в систему управления или на master-сервер;
- Выполнение задания инструментов управления конфигурацией (Chef, Ansible, Terraform и другие).
Автоматизация и контроль версий
Следующим условием применения методики является применение инструментов автоматизации задач, которые подключаются к API инфраструктуры. Готовые платформы управления, которые мы рассматривали выше (Terraform, SaltStack и другие), решают вопрос конфигурации с открытым исходным кодом.
Система контроля версий (СКВ), например, популярная принципы CI/CD. Обновление возможно в рабочем процессе DevOps. Для аудита и утверждения изменений на текстовый файл конфигурации применяется запрос pull и проверка кода.
Мониторинг и поддержка
IaC может привести к проблемам безопасности, поэтому компаниям нужно тщательно отслеживать не только производительность ИТ-структуры и бизнес-метрик, но также изменения в коде. Важно регулярно:
- Мониторить работоспособность системы;
- Контролировать нагрузку и инциденты;
- Оперативно реагировать на сбои;
- Внедрять инструменты непрерывной разработки, тестирования и обновлений.
Системы мониторинга на технологиях Open Source помогают настроить централизованное наблюдение за инфраструктурой. Например, Grafana и Prometheus. Настройка превентивного алертинга поможет оперативно решить проблему, а непрерывная служба поддержки спасет чувствительные проекты от дорогостоящих простоев.
Примеры успешного внедрения IaC
Кейс 1: Успешное применение в крупной организации
Среди множества компаний, успешно внедривших IaC в свою работу, одной из первых стала Netflix. Компания использовала автоматизацию развертывания и управления тысячами серверов в облачной среде. Благодаря применению инструментов, в том числе Terraform, Netflix удалось значительно сократить время на развертывание, снизить уровень ошибок из-за ручного управления, повысить стабильность развития корпоративной ИТ-структуры.
Динамика соотношения чистой прибыли Netflix к операционным издержкам
Кейс 2: Примеры из DevOps практик
Команды часто встречаются с такой проблемой, как неоплаченный вовремя домен со стороны владельца инфраструктуры.
Внезапные остановки серверного домена и даже аварии можно предотвратить, если создать «напоминания».
Достаточно настроить превентивные алерты, которые предупредят об окончании подписки за необходимый временной промежуток. Можно настроить десятки таких несложных предупреждений и предотвратить развитие серьезных последствий неоплаты.