Введение
2
Infrastructure as a Service
Platform as a Service
Culture
Continuous Delivery
Infrastructure as Code
Applications
Production/SRE
Monitoring and Observability
Slide 3
Slide 3 text
Инфраструктура как код
3
Infrastructure as a Service
Platform as a Service
Culture
Continuous Delivery
Infrastructure as Code
Applications
Production/SRE
Monitoring and Observability
Slide 4
Slide 4 text
План
• Проблемы, история и цели
• Определение, принципы и подходы
• Практики из разработки
• Инструменты
Надежные решения для сложной инфраструктуры
4
Slide 5
Slide 5 text
План
• Проблемы, история и цели
• Определение, принципы и подходы
• Практики из разработки
• Инструменты
Надежные решения для сложной инфраструктуры
5
Slide 6
Slide 6 text
Проблемы
• Server Sprawl (рост числа серверов)
• Con
fi
guration drift (неконсистентное состояние)
• Snow
fl
ake servers (сервера снежинки)
• Fragile infrastructure (хрупкая инфраструктра)
• Erosion (эрозия)
• Automation Fear (страх автоматизации)
Надежные решения для сложной инфраструктуры
6
Книги
• 2011 Managing Infrastructure with Puppet
• 2011 Test-Driven Infrastructure with Chef
• 2014 Customizing Chef
• 2015 Ansible: Up and Running
• 2015 Salt Essentials
• 2016 Infrastructure as Code
• 2017 Terraform: Up and Running
• 2018 Puppet Best practices
Надежные решения для сложной инфраструктуры
8
Slide 9
Slide 9 text
Индустрия
• Технологический радар:
• 2012 Manual infrastructure management HOLD
• 2012 Infrastructure as code ADOPT
• 2013 Immutable servers ADOPT
• 2016 Docker ADOPT
• 2017 Pipelines as Code ADOPT
• 2018 Pipelines for Infrastructure as Code TRIAL
Надежные решения для сложной инфраструктуры
9
Slide 10
Slide 10 text
Цели
• Ускорение процесса поставки
• Снижение количества ошибок
• Улучшение взаимодействия команд
Надежные решения для сложной инфраструктуры
10
Slide 11
Slide 11 text
Инфраструктура как код
11
Infrastructure as a Service
Platform as a Service
Culture
Continuous Delivery
Infrastructure as Code
Applications
Production/SRE
Monitoring and Observability
Slide 12
Slide 12 text
План
• Проблемы, история и цели
• Определение, принципы и подходы
• Практики из разработки
• Инструменты
Надежные решения для сложной инфраструктуры
12
Slide 13
Slide 13 text
Инфраструктура как
код
Надежные решения для сложной инфраструктуры
13
• Автоматизация инфраструктуры с
использованием практик из разработки
Slide 14
Slide 14 text
Общие принципы
• Воспроизводимая инфраструктура
• Повторяемые процессы
• Изменяемая инфраструктура и процессы
Надежные решения для сложной инфраструктуры
14
Slide 15
Slide 15 text
Подходы
Надежные решения для сложной инфраструктуры
15
• Модели управления инфраструктурой
• Инфраструктурный код
• Инфраструктурный репозиторий
• Инфраструктурные слои (stack/layers)
• Общий язык общения
Slide 16
Slide 16 text
Модели управления
инфраструктурой
Надежные решения для сложной инфраструктуры
16
• Ad Hoc
• Con
fi
guration synchronisation
• Immutable Infrastructure
• Immutable Delivery (Containerized Services)
Инфраструктурный
репозиторий
• Репозиторий с инфраструктурным кодом
• Иерархия и слои - окружения, роли, модули
• Внешние зависимости
• Переменные
• Инструменты и конфигурация для инструментов
• Тесты и документация
Надежные решения для сложной инфраструктуры
18
Slide 19
Slide 19 text
Инфраструктурные
слои
Надежные решения для сложной инфраструктуры
19
Base
Service
Culture
Continuous Delivery
Infrastructure as Code
Application
Production/SRE
Monitoring and Observability
Slide 20
Slide 20 text
Общий язык общения
• Инфраструктурный код
• Общие инструменты и модули
• Практики из разработки:
• Pull requests и diff изменений
• API и development kit (Среда разработки)
Надежные решения для сложной инфраструктуры
20
Slide 21
Slide 21 text
План
• Проблемы, история и цели
• Определение, принципы и подходы
• Практики из разработки
• Инструменты
Надежные решения для сложной инфраструктуры
21
Slide 22
Slide 22 text
Практики из разработки
22
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Slide 23
Slide 23 text
Практики из разработки
23
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Slide 24
Slide 24 text
Структура
репозиториев
• Моно репозиторий
• Мульти репозиторий
• Инфраструктурный код:
• вместе с кодом приложений
• отдельно
Надежные решения для сложной инфраструктуры
24
Slide 25
Slide 25 text
Иерархия
• На уровне практик:
• Отдельные репозитории
• На уровне инструментов:
• Environments, Roles, Pro
fi
les, Groups, ENC
Надежные решения для сложной инфраструктуры
25
Slide 26
Slide 26 text
Chef
Надежные решения для сложной инфраструктуры
26
Slide 27
Slide 27 text
Puppet
Надежные решения для сложной инфраструктуры
27
Slide 28
Slide 28 text
Практики из разработки
28
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Slide 29
Slide 29 text
Версионирование
• Semantic Versioning 2.0.0 https://semver.org
• Tom Preston-Werner (GitHub)
• X.X.X:
• MAJOR - несовместимые изменения
• MINOR - новый функционал
• PATCH - исправления
Надежные решения для сложной инфраструктуры
29
Slide 30
Slide 30 text
Ветвление
30
• Trunk Based Development
• https://trunkbaseddevelopment.com
• GitHub Flow
• Git
fl
ow
Slide 31
Slide 31 text
Практики из разработки
31
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Slide 32
Slide 32 text
Управление артефактами
и внешние зависимости
Надежные решения для сложной инфраструктуры
32
• Инфраструктурный модуль как артефакт
• Сборка, публикация и хранение модулей
• Маркетплейс инфраструктурных модулей
• Управление внешними зависимостями
Slide 33
Slide 33 text
Практики из разработки
33
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Slide 34
Slide 34 text
Тестирование
Надежные решения для сложной инфраструктуры
34
• Стиль языка и инфраструктурного кода
• Валидацию шаблонов и кода
• Функционал
• Интеграцию и результат
Slide 35
Slide 35 text
Стиль языка
Надежные решения для сложной инфраструктуры
35
• Линтеры для языка:
• Rubocop (Ruby)
• Pylint,
fl
ake8 (Python)
• Надстройки для Chef, Puppet, Salt, Ansible:
• Cookstyle
Slide 36
Slide 36 text
Стиль кода
Надежные решения для сложной инфраструктуры
36
• Проверяем соответствие Style Guides
• Линтеры для кода:
• Chef Foodcritic
• Puppet-lint
• Ansible-lint
• Salt-lint
Практики из разработки
41
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Slide 42
Slide 42 text
CI/CD для
инфраструктрного кода
• Pipeline для модуля
• Pipeline для инфраструктурного репозитория
• Pipeline для внешних зависимостей
• Pipeline для сборки образов
• Pipeline для создания окружений
• …
Надежные решения для сложной инфраструктуры
42
Slide 43
Slide 43 text
CI/CD для
инфраструктрного кода
Надежные решения для сложной инфраструктуры
43
• Инструменты:
• Vagrant
• Test Kitchen (Chef, …)
• Molecule (Ansible)
• Beaker (Puppet)
Slide 44
Slide 44 text
Практики из разработки
44
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Slide 45
Slide 45 text
Проблемы
Надежные решения для сложной инфраструктуры
45
• Разные версии инструментов
• Разные практики из разработки
Slide 46
Slide 46 text
Development Kit
• Локальная разработка и тестирование
• Одно окружение для Linux, OS X, Windows
• Набор CLI инструментов, библиотек и API
• Work
fl
ows и best practices
• Часть CI
Надежные решения для сложной инфраструктуры
46
Slide 47
Slide 47 text
Chef DK
Надежные решения для сложной инфраструктуры
47
Slide 48
Slide 48 text
Puppet DK
Надежные решения для сложной инфраструктуры
48
Slide 49
Slide 49 text
Puppet DK
Надежные решения для сложной инфраструктуры
49
Slide 50
Slide 50 text
План
• Проблемы, история и цели
• Определение, принципы и подходы
• Практики из разработки
• Инструменты
Надежные решения для сложной инфраструктуры
50
Slide 51
Slide 51 text
Проблемы с
инструментами
Надежные решения для сложной инфраструктуры
51
• Какие инструменты выбрать?
• Как их сравнить?
• Какие границы применимости?
• Как их использовать совместно?
Slide 52
Slide 52 text
Инструменты
Надежные решения для сложной инфраструктуры
52
• Dynamic Infrastructure Platforms
• Infrastructure de
fi
nition
• Server con
fi
guration
• Infrastructure services
Slide 53
Slide 53 text
Инструменты
Надежные решения для сложной инфраструктуры
53
• Dynamic Infrastructure Platforms (Cloud)
• Infrastructure de
fi
nition (Terraform, CloudFormation)
• Server con
fi
guration (Chef, Puppet, Ansible, Salt)
• Infrastructure services (…)
Slide 54
Slide 54 text
Система управления
конфигурацией
• DSL, декларативное или императивное описание
• Push или Pull модель
• Встроенные модули и ресурсы
• Иерархия, изоляция, сбор фактов
• Шаблонизаторы
• Идемпотентность
Надежные решения для сложной инфраструктуры
54
Slide 55
Slide 55 text
Жизненный цикл
Надежные решения для сложной инфраструктуры
55
Slide 56
Slide 56 text
Как выбрать?
• Посмотреть на индустрию
• Оценить самостоятельно
• Сделать MVP
Надежные решения для сложной инфраструктуры
56
Slide 57
Slide 57 text
Индустрия
Надежные решения для сложной инфраструктуры
57
Slide 58
Slide 58 text
Оценка
Надежные решения для сложной инфраструктуры
58
• Язык программирования и DSL
• Опыт работы
• Модель управления
• Иерархия и изоляция
• Безопасность
• Масштабирование
• Интеграция в текущий стек
• Наличие инструментария
• Поддержка community
• Поддержка практик из разработки
• Командная работа
• Примеры из индустрии и сложные кейсы
• …
Slide 59
Slide 59 text
Границы
применимости
Надежные решения для сложной инфраструктуры
59
• Уровни Base, Service, Application
• Service Discovery и Failover
• Управление секретами
• Деплой
• Cloud, Database, Security, Containers
Slide 60
Slide 60 text
Современный стек
Надежные решения для сложной инфраструктуры
60
• Chef 14
• Puppet 6
• Ansible 2.7
• Salt 2018
• Terraform 0.12
Slide 61
Slide 61 text
Кейсы
• Смена стека или передача сервиса
• Новый дата-центр
• Синхронизация окружений
• Тестовые окружения по требованию
• API инфраструктурной платформы и командная работа
• Мониторинг в виде кода
• …
Надежные решения для сложной инфраструктуры
61
Slide 62
Slide 62 text
Итого
• Автоматизация инфраструктуры с использованием
практик из разработки
• Помогает:
• Ускорить процесс поставки
• Снизить количество ошибок
• Улучшить взаимодействие команд
Надежные решения для сложной инфраструктуры
62
Slide 63
Slide 63 text
Онлайн курс OTUS
Надежные решения для сложной инфраструктуры
63
• DevOps практики и инструменты:
• 20 ноября - День открытых дверей
• 27 ноября - Начало занятий
• 5 месяцев - Длительность курса
Slide 64
Slide 64 text
Вакансия
64
• Мы ищем людей, которым это интересно
• Пишите на [email protected]
Slide 65
Slide 65 text
Ссылки
65
• Митапы DevOps Meetup Moscow
• Подкаст и телеграм канал DevOps De
fl
ope
• Конференции по DevOps
• Книги из презентации
• Рассылка DevOps Weekly