Инфраструктура как код

Наш эксперт, Игорь Курочкин, рассказал про практику Infrastructure as code (Инфраструктура как код) на открытом уроке курса DevOps практики и инструменты в 2018 году.

В ходе выступления затронуты следующие темы:
1. Введение в практику Infrastructure as code (Инфраструктура как код) и модель технических практик;
2. Проблемы управления конфигурацией: Server Sprawl (рост числа серверов), Configuration drift (неконсистентное состояние), Snowflake servers (сервера снежинки), Fragile infrastructure (хрупкая инфраструктра), Erosion (эрозия), Automation Fear (страх автоматизации);
3. История сервисов и инструментов: CFEngine (1993), Puppet (2005), AWS (2006), Chef/Opscode (2009), DevOps (2009), Vagrant (2010), CloudFormation (2011), Salt (2011), Ansible (2012), HashiCorp (2012), Docker (2013), Terraform (2014), Kubernetes (2014), Vespene (2018), OpsMop (2018);
4. Книги по практике и инструментам: Infrastructure as code: Managing Infrastructure with Puppet, Test-Driven Infrastructure with Chef, Customizing Chef, Ansible: Up and Running, Salt Essentials, Infrastructure as Code, Terraform: Up and Running, Puppet Best practices;
5. Состояние практики в индустрии и технологических радарах на 2018 год: Manual infrastructure management (2012), Infrastructure as code (2012), Immutable servers (2013), Docker (2016), Pipelines as Code (2017), Pipelines for Infrastructure as Code (2018);
6. Цели внедрения и развития практики Infrastructure as code: ускорение процесса поставки, снижение количества ошибок и улучшение взаимодействия команд;
7. Определение практики как автоматизация инфраструктуры с использованием практик из разработки;
8. Принципы практики: воспроизводимая инфраструктура, повторяемые процессы, изменяемая инфраструктура и процессы;
9. Модели управления инфраструктурой (Ad Hoc, Configuration synchronisation, Immutable Infrastructure, Immutable Delivery), инфраструктурный код (YAML, JSON, HCL, DSL, Erb, Epp, j2, tpl), инфраструктурный репозиторий (Иерархия и слои, окружения, роли, модули, внешние зависимости, переменные, конфигурация для инструментов, тесты и документация), инфраструктурные слои (stacks, layers, base-service-app), общий язык и способы взаимодействия (PR, MR, API, CDK, Development kit, CLI);
10. Практики из разработки: организация кода, политики версионирования (Semantic Versioning 2.0.0) и ветвления (Trunk-based Development, GitFlow, GitHub flow, GitLab flow), управление артефактами (сборка, публикация, хранение, маркетплейс) и внешние зависимости, тестирование и ревью изменений, CI/CD для инфраструктурного кода (pipelines для модуля, репозитория, внешних зависимостей, сборки образов и создания окружений), среда разработки (Development Kit);
11. Классификация, выбор и сравнение инструментов управления конфигурацией по следующим критериям: язык, DSL, опыт работы, модель управления, иерархия и изоляция, безопасность, масштабирование, интеграция в текущий стек, наличие инструментария, поддержка community, поддержка практик из разработки, командная работа;
12. Жизненный цикл управления конфигурацией, границы применимости, примеры из индустрии и сложные кейсы.

Подробнее в презентации и записи выступления ниже:
Свяжитесь с нами, если вам интересно развитие практики Infrastructure as code в вашей компании или команде. Мы можем вам помочь провести аудит практики и инструментов, подготовить отчет и рекомендации по развитию, провести тренинги и воркшопы, поделиться своим опытом.