24
Повторяемость Повторяемость Александр Чистяков, главный инженер Git in Sky, 2014

Repeatability on DevOps-40 meetup Apr 2014

Embed Size (px)

DESCRIPTION

My slides on repeatability from DevOps-40 meetup, Apr 2014

Citation preview

Page 1: Repeatability on DevOps-40 meetup Apr 2014

Повторяемость

Повторяемость

Александр Чистяков, главный инженер Git in Sky,

2014

Page 2: Repeatability on DevOps-40 meetup Apr 2014

Кто я?

§ Меня зовут Саша§ Повелитель всех зверей на земле и рыб в море§ Завоеватель Британской Империи§ Король Шотландии

Повторяемость. 2014

Page 3: Repeatability on DevOps-40 meetup Apr 2014

Поговорим про повторяемость

§ Исх.данные -> Процесс -> Результат§ Исх.данные -> Процесс -> Результат§ ⇑ Плохо§ ⇓ Хорошо§ Что угодно -> АвтоВАЗ -> Ведро

Повторяемость. 2014

Page 4: Repeatability on DevOps-40 meetup Apr 2014

Задача: «сделать почтовый сервер»

§ Возьмем Debian...§ Debian — плохо, старый софт, возьмем...§ Slackware, Gentoo, Arch, ...§ LFS§ ^ Заодно и согреемся§ Поставим Postfix, cyrus и т.д. и заживем

Повторяемость. 2014

Page 5: Repeatability on DevOps-40 meetup Apr 2014

Немного форумной магии...

§ Почтовый сервер есть и даже работает!§ Теперь нужны:§ Второй почтовый сервер§ VPN-сервер§ Веб-сервер§ Актуальные обновления безопасности

Повторяемость. 2014

Page 6: Repeatability on DevOps-40 meetup Apr 2014

Какие возникают риски?

§ Со временем система начинает разваливаться§ Инструкции по поддержке сложны,

непонятны или не существуют§ Отсутствует квалифицированный персонал§ Уровень автоматизации низок§ Уровень accidental complexity высок

Повторяемость. 2014

Page 7: Repeatability on DevOps-40 meetup Apr 2014

Как с этим справлялись исторически?

§ Различные варианты формализации:§ Документирование§ Пакетные менеджеры§ Формальные правила сборки и установки

Повторяемость. 2014

Page 8: Repeatability on DevOps-40 meetup Apr 2014

Идеальный мир

§ За разработку системы отвечают

компетентные лица§ Сценарии установки и использования описаны

в документации§ Благодарные пользователи бородаты§ Patches welcome!

Повторяемость. 2014

Page 9: Repeatability on DevOps-40 meetup Apr 2014

Почему не работает

§ При любых действиях пользователя

получается всё время почтовый сервер§ Даже если нужен был контроллер домена§ До сих пор неизвестно, как пропатчить KDE§ Видимо, что-то пошло не так

Повторяемость. 2014

Page 10: Repeatability on DevOps-40 meetup Apr 2014

Что же пошло не так?

§ Идея о том, что все сценарии использования

можно перечислить в документации была

довольно наивна§ Как и идея о том, что небольшая группа

Неизвестных Отцов может решать за всех

пользователей

Повторяемость. 2014

Page 11: Repeatability on DevOps-40 meetup Apr 2014

Что делать?

§ Дать пользователям больше свободы§ Классическая схема “ядро системы + плагины”§ В нашем случае это “ядро системы + пакетный

менеджер + пакеты”

Повторяемость. 2014

Page 12: Repeatability on DevOps-40 meetup Apr 2014

Масонерия наносит ответный удар

§ Стандартом изготовления deb-пакетов можно

убить:§ Муху§ Котика§ Человека-паука

§ Наверное, deb-пакеты очень хороши?

Повторяемость. 2014

Page 13: Repeatability on DevOps-40 meetup Apr 2014

Пакеты уровня дистрибутива

§ Для многих современных сисадминов

повторяемость начинается на уровне пакетов

и там же заканчивается§ Пакеты уровня дистрибутива:

§ Великое наследие Неизвестных Отцов§ По-сути, просто механизм распространения

C/C++ библиотек и продуктов, за неимением лучшего

Повторяемость. 2014

Page 14: Repeatability on DevOps-40 meetup Apr 2014

“Я пришел дать вам волю”

§ Опыт jpackage.org не был забыт:§ Maven, Bundler, NPM, Bower, Composer§ Каждый кулик свое болото хвалит§ Тысячи их

Повторяемость. 2014

Page 15: Repeatability on DevOps-40 meetup Apr 2014

Вкалывают роботы — счастлив человек!

§ Теперь, когда пакетных менеджеров не один,

а восемь, пакеты необходимо доставлять в восемь

раз чаще§ Кто доставляет пакеты, когда Анонимус спит?§ Нужна CM система

Повторяемость. 2014

Page 16: Repeatability on DevOps-40 meetup Apr 2014

Сложность системы нарастает

§ По-прежему нужно следить за:§ Обновлениями§ Безопасностью§ Актуальностью информации§ Кстати, куда-то делся стандарт

на создание пакетов§ Что делает gem “factory_girl”?

Повторяемость. 2014

Page 17: Repeatability on DevOps-40 meetup Apr 2014

Наследование, инкапсуляция, полиморфизм!

§ К этому моменту превосходство декларативного

над императивным было уже очевидно§ Давайте же все описывать декларативно!§ Идея в том, что одни и те же правила сборки

контейнера дадут один и тот же контейнер§ ^ Похоже на повторяемость!

Повторяемость. 2014

Page 18: Repeatability on DevOps-40 meetup Apr 2014

Are we happy yet?

§ Happy DevOps engineer =>

§ Docker =>

§ Happy imperative bash script =>

Повторяемость. 2014

Page 19: Repeatability on DevOps-40 meetup Apr 2014

Масонерия пробивает пенальти!

§ Я не смог понять до конца, как работает

сетевой стек в Docker§ И почему я не должен мочь сделать проброс

порта внутрь при помощи штатных средств

(iptables)§ AUFS это не очень хорошо

Повторяемость. 2014

Page 20: Repeatability on DevOps-40 meetup Apr 2014

Необходимо избавиться от тела шелла

§ Nix:§ Чисто функциональный пакетный

менеджер§ Написан на Haskell§ NixOS — дистрибутив на его основе§ Много вы знаете хостингов с NixOS?

Повторяемость. 2014

Page 21: Repeatability on DevOps-40 meetup Apr 2014

Пересечение ужа и ежа

§ Nix-docker:§ Декларативно описывается конфигурация§ Делается Nix-пакет§ Заливается и запускается при помощи Docker

Повторяемость. 2014

Page 22: Repeatability on DevOps-40 meetup Apr 2014

Выводы:

§ Несмотря на более чем 20-летнюю,а, кое-где, и более чем 50-летнюю историю

§ Все только начинается!§ Вы, кстати, тоже можете участвовать

Повторяемость. 2014

Page 23: Repeatability on DevOps-40 meetup Apr 2014

Традиционный слайд

§ DevOps-40: некоторые любят погорячее!

Повторяемость. 2014

Page 24: Repeatability on DevOps-40 meetup Apr 2014

С вами был Александр Чистяков,главный инженер Git in Sky

[email protected]://gitinsky.com

http://meetup.com/DevOps-40

Пожалуйста, ваши вопросы.

Спасибо за внимание!

http://devconf.ru/offers/ - ПРОГОЛОСУЙТЕ, ПОЖАЛУЙСТА,ЗА МОИ ЗАЯВКИ!