Инструментарий DevOps
О чем пойдет речь
• Облака (AWS, Heroku, OpenStack, ...)
• Управление конфигурацией (Chef, Ansible, ...)
• Непрерывная интеграция (Jenkins, Bamboo, ...)
• Контейнеры (Docker)
Облака
Что это?
• Способ взять в аренду "машинные" ресурсы
• Часто - и готовую инфраструктуру
• Иногда - законченные программные решения
Зачем это?
• Не делаете то, в чем вы не компетентны
• Покупаете то, что не можете сделать сами
• Меньше затрат на планирование проекта
• Часто дешевле, чем делать самим
Типы облаков
SAAS (Software As A Service)
• Готовое программное решение "в аренду"
• Типичные примеры: Gmail, Dropbox, GitHub
• Так часто покупают инструменты разработки
• Ну и инфраструктурные инструменты тоже
PAAS (Platform As A Service)
• Умеет запускать ваши приложения
• Само управляет ресурсами
• Вы не спускаетесь на уровень ОС
• Часто "заточено" под языки/фреймворки
IAAS (Infrastructure As A Service)
• Похоже на "классический" хостинг
• Вам дается виртуальная или физическая машина
• Плюс "сеть", бэкапы и "объектное хранилище"
AWS(Amazon Web Services)
AWS
• Самое крупное и известное облако
• Разрабатывается компанией Amazon
• Умеет почти все, что можно представить
• "Знание AWS" часто встречается в вакансиях
Heroku
Heroku
• Один из первых PAAS
• До сих пор очень известен
• Фокус на запуске приложений
• Часто используется стартапами
OpenStack
OpenStack• "Облако на своем железе"
• Это OpenSource продукт
• Практически не имеет аналогов
• Сложен в эксплуатации
• Нужен если не хочется "отдавать данные"
• Может быть сильно дешевле AWS
vCloud/vSphereот vmWare
vCloud/vSphere• От авторов первого решения по виртуализации
• "Облако на своем железе"
• Предназначено для enterprise-применения
• На нем работает "инфраструктура" компаний
• Редко используется для "продуктовых" целей
Управление конфигурацией
Что это?
• Запись конфигурации Операционной Системы в коде
• Способ передачи знаний о работе продукта
• Идентичное воспроизведение среды продукта
Зачем это?
• "Проверяемая" документация
• Меньше ошибок на каждом этапе разработки
• Элемент построения "конвеера" разработки
• Контроль над системой - в руках разработчиков
Chef
Chef• Одна из самых сложных систем
• Высокий порог вхождения
• Решает широкий спектр проблем
• "Сценарии" пишутся на Ruby
• Выбирается теми, кто умеет программировать
• Требует значительных вложений
Puppet
Puppet• По возможностям почти то же, что и Chef
• Имеет упрощенную форму "Сценариев"
• Расширения пишутся на Ruby
• Раньше часто выбирался "админами"
• Требует значительных вложений
Ansible
Ansible• Система с фокусом на простоте
• Низкий порог вхождения
• Сценарии пишутся на YAML
• Расширения пишутся на Python
• Выбирается небольшими компаниями
• Не требует больших вложений
Непрерывная интеграция
(Continuous Integration)
Что это?
• По сути это - конвейер
• Постоянная проверка труда разработчиков
• Коммит->сборка->разворачивание->тесты
Зачем это?
• Увеличение производительности труда
• Увеличение предсказуемости
• Раннее обнаружение ошибок
Jenkins
Jenkins• Самая известная бесплатная система CI
• Настоящий "конструктор"
• Не очень стабильный
• Умеет почти все, что нужно
• Требует вложений времени в обслуживание
• Часто требует выделенных инженеров
Bamboo
Bamboo• Коммерческий продукт компании Atlassian
• Хорошо совместим с другими их инструментами
• Довольно надежен
• Не требует вкладываться в обслуживание
• Подходит для продуктов средней сложности
TeamCity
TeamCity
• Самое продвинутое коммерческое решение
• Хорошо организует сложные процессы
• Не требует больших вложений в обслуживание
• Подходит для сложных продуктов
TravisCI
TravisCI
• SAAS продукт
• Часто используется совместно с GitHub
• Простой в использовании
• Подходит для простых проектов и стартапов
Контейнеры
Что это?• Похоже на виртуализацию
• Разделяем один сервер на много "логических"
• Очень большая плотность
• Большая скорость запуска
• Малое потребление ресурсов
Зачем это?
• Иногда - как легкая замена виртуализации
• Изоляция частей приложения друг от друга
• Строительный инструмент
• Для запуска "микросервисов"
Docker
Docker
• Инструмент, созданный поверх контейнеров
• Упрощает запуск контейнеров и их менеджмент
• Активно развивается
• Часто используется для построения PAAS
Fin.