SlideShare a Scribd company logo
Релиз инженеринг Mail.ru,
взгляд изнутри
Глеков Максим
программист-разработчик почтовой службы
Организация работы релиз-инженеров
• Консоль или GUI ?
• Сборка релиза
• Раздача релиза
• Демон обновлений
• Тестовые сервера
• Выкладка в продакшен
• Мониторинг
• Узкие места
ПОСЛЕ ЧЕГО ОТВЕЧУ НА ВСЕ ВАШИ ВОПРОСЫ И ДАМ ТЕХНИЧЕСКИЕ
РЕКОМЕНДАЦИИ
О чем доклад ?
Организация работы верстальщика
Организация работы релиз-инженера
Консоль или GUI
Что выбрать?
 Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
Консоль или GUI ?
True way — только консоль
• Инструментарий
• putty если вы работает под Windows
• ssh-agent для прокидывания ключей
• В Linux и Mac OS все есть «из коробки»
 Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
Консоль или GUI
Как мы управляем сетью раскладки c консоли?
• risk-deploy-create — создать релиз
• risk-deploy-push — положить релиз на группу
серверов
• risk-deploy-switch — переключить группу серверов
• risk-deploy-clean — удилить релиз с группы
серверов
Сборка релиза
Как это делаем мы
• Берем все задачи для итерации
• Примерживаем все задачи к итерации
• Исправляем конфликты между разными задачами
• Запускаем билд релиза risk-deploy-create
Сборка релиза
Последовательность действий в раскладчике
Проверка конситентности сборки
Md5sum — то, что нам надо
• фаил с контрольными суммами
• Проверка консистентности сборки: md5sum -c
имя_фаила_с_суммами
• «дешевый» способ» — измерение размера всей
сборки
• «дешевый способ» только для мониторинга!
Тарболы практика
Где же все-таки удобнее использовать тарболы?
• Нет root-доступа
• Разные дистрибутивы Linux
• Еще хуже - Windows
• Маленькие репозитрии
• Раскладки на тестовые сервера
Тарболы практика
Где же все-таки удобнее использовать тарболы?
• Нет root-доступа
• Разные дистрибутивы Linux
• Еще хуже - Windows
• Маленькие репозитрии
• Раскладки на тестовые сервера
SquashFs самое оптимальное?
SquashFs — отличное решение для выкатки
боевых релизов
• Сжимающая файловая система gzip/lzma
• Применяется во встраиваемых системах, где
необходимы низкие затраты на производство
(роутеры, кофеварки, холодильники,
квадрокоптеры)
• Просто собрать: mksquashfs data_dir
sqsh_file_path.sqsh
SquashFs самое оптимальное?
SquashFs — минусы
• Одна и та же версия SquashFs
• Одно и тоже сжатие gzip или lzma
• Для монтирования требуются root-права
Почему не RPM + puppet?
RPM или DEB — неплохое решение
• Требуется писать spec фаилы
• Просто собирать: rpmbuild -bb имя_спеки
• Все фаилы в одном пакете
• Не засоряет систему
• RPM → DEB с помощью alien
Почему не RPM + puppet?
RPM или DEB — минусы
• Для установки требуются root-права
• Нужно привлекать админа
• Проблемы с накати/откати в выходной/ночью
Что выбрали мы?
Вроде бы все очевидно....
• Мы катим в среднем 3 раза в день
• Для выкатки пакуем все фаилы
• Тарболы только для тестовых серверов
• В продакшене SquashFS
• RPM на проектах с редкими выкатками
(Ответы@Mail.ru, Календарь@Mail.ru)
Схема обновления обновлений дифами
Плохой вариант для production
• Выкатки не консистентны
• Откатиться полноценно назад трудно
• Непонятно чем закончится исправление ошибки
• Подходит только для тестовых серверов
Раздача релиза
Хранилище релизов
Раздача релиза
Сущности внутри репозитария
• Кикстарт — фаил с текущей сборкой
• deploy_files.list — фаил со списком сборок
Раздача релиза
Выкладываем на группу серверов в тест
• risk-deploy-push -b alphatest -f e.mail.ru-f-alpha-505-
en-m.glekov-1427105421
Раздача релиза
Выкладываем на группу серверов в тест
Раздача релиза
Схема раздачи
Раздача релиза
Но есть проблема....
• Узкое место — получение обновлений с одного
источника
Раздача релиза
Простое решение - шардинг
• Увеличить количество раздающих серверов
Устройство демона обновлений
Get risk — так называется наш демон
обновлений
Статика(js,css, images, etc)
Шаблоны отдельно, статика отдельно — надо
делать две отдельные сборки!
Выкладка релиза на тестовые серверы
Тестовые серверы, плавающий
DOCUMENT_ROOT
• DOCUMENT_ROOT сервера — директория с
шаблонами
• На серверах где нет веток DOCUMENT_ROOT
один
• На серверах с ветками каждая ветка — новый
DOCUMENT_ROOT
• Перключение DOCUMENT_ROOT в backend
регулярным выражением
Выкладка релиза на тестовые серверы
FUSE (Filesystem on Userspace) для веток
• Храним только различающиеся фаилы
• Недостающие фаилы берем из корневой ветки
Выкладка релиза на тестовые серверы
FUSE для веток
Выкладка релиза на тестовые серверы
FUSE для веток
Выкладка релиза на тестовые серверы
FUSE для веток
Хочу себе FUSE!
Что можно найти в открытом доступе?
• MergeFS (http://bersace03.free.fr/mergefs/mergefs)
• UnionFS (http://unionfs.filesystems.org/)
• Aufs (http://aufs.sourceforge.net/)
• Mhddfs (http://mhddfs.uvw.ru/)
Выкладываем в продакшен
Выкладываем билд, который прошел через
тестовые сервера
1. Раскладываем сборку по серверам:
risk-deploy-push -b production -f e.mail.ru-f-alpha-505-
en-m.glekov-1427105421
2. Переключаемся на разложенную сборку:
risk-deploy-switch -b production -f e.mail.ru-f-alpha-505-
en-m.glekov-1427105421
Мониторинг
Get Risk Network Monitoring или просто grnmon ;)
Мониторинг
Get Risk Network Monitoring
Мониторинг
Get Risk Network Monitoring
Как устроен мониторинг
Get Risk Network Monitoring
• Как работает мониторинг?
• Демон grnmon — принимает данные с серверов
• MySQL — хранение данных для старта
• Memcached — чтобы не мучать базу
• Fcgi — отдача jsonp из Memcached
• JavaScript — отображение данных
Переключаем сервера между билдами
Накати — первый этап
• risk-deploy-switch -b alphatest -f e.mail.ru-f-alpha-
505-en-m.glekov-1427105421
• Время переключения между билдами от 2-5
секунд (!!!!)
Дашборд
Или как мы понимаем, что все хорошо
Быстрый откат в случае неудачи
Сколько времени надо чтобы откатиться?
• Не более 2-5 сек (!!!)
• Переключаемся обратно на прошлый
стабильный билд
• Снова смотрим в дашборд
Запуск тестов
Несколько советов
Узкие места, проблемы и методы их решения
Есть некоторые нюансы...
• При работе с большими тарболами(> 100 MB)
надо использовать pv для затормаживания диска
(Ex: cat filename | pv -L limit_rate_speed -rt | tar
-xmzf - -C folder_full_path)
• Все операции должны быть атомарные
• Шардинг серверов с обновлениями
• Не пользоваться базой данных в демоне
обновления
СПАСИБО ЗА ВНИМАНИЕ!
Вопросы?
m.glekov@corp.mail.ru

More Related Content

What's hot (19)

PPTX
Управление облачной инфраструктурой
dddpaul
 
DOC
Cравнение изданий и лицензирование VMware vSphere 5
areconster
 
PPTX
Практический опыт применения виртуализации для web-систем
Alex Chistyakov
 
PDF
Флеш в серверах: работа со скоростью вспышки
КРОК
 
PPTX
VMUG Moscow 2014 Проблемы с дисками?
Anton Zhbankov
 
PPT
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Ontico
 
PDF
Android Telegram S Optimizations
Stepan Korshakov
 
PPT
Использование Symfony
Media Gorod
 
PDF
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
Timur Batyrshin
 
PDF
Kopytov
Yandex
 
PDF
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
Provectus
 
PDF
Interbase xe7 - универсальная субд для windows linux mac ios android
Andrew Sovtsov
 
PPTX
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Ontico
 
PPTX
сравнение Mac os x & linux ubuntu
reeds62
 
PPTX
антон веснин Rails Application Servers
rit2010
 
PDF
Scaling services with apache mesos (and docker)
Ivan Kudryavtsev
 
PPT
Maven как средство сборки проекта
Yova Stoika
 
PPTX
системы сборок проектов
Romero78
 
PPTX
Running Linux and Unix on Hyper-V
Andrey Beshkov
 
Управление облачной инфраструктурой
dddpaul
 
Cравнение изданий и лицензирование VMware vSphere 5
areconster
 
Практический опыт применения виртуализации для web-систем
Alex Chistyakov
 
Флеш в серверах: работа со скоростью вспышки
КРОК
 
VMUG Moscow 2014 Проблемы с дисками?
Anton Zhbankov
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Ontico
 
Android Telegram S Optimizations
Stepan Korshakov
 
Использование Symfony
Media Gorod
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
Timur Batyrshin
 
Kopytov
Yandex
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
Provectus
 
Interbase xe7 - универсальная субд для windows linux mac ios android
Andrew Sovtsov
 
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Ontico
 
сравнение Mac os x & linux ubuntu
reeds62
 
антон веснин Rails Application Servers
rit2010
 
Scaling services with apache mesos (and docker)
Ivan Kudryavtsev
 
Maven как средство сборки проекта
Yova Stoika
 
системы сборок проектов
Romero78
 
Running Linux and Unix on Hyper-V
Andrey Beshkov
 

Viewers also liked (10)

PDF
Автоматизация инфраструктуры. Зачем мы это делаем? Денис Яковлев, 2ГИС, Ново...
it-people
 
PDF
Moira: Realtime alerting, Алексей Ларьков, СКБ Контур
it-people
 
PDF
Как в E96.ru устроено продуктивное окружение, Данила Штань, ex-e96.ru
it-people
 
PDF
Профилирование распределенных систем, Александр Казаков, СКБ Контур
it-people
 
PPTX
Создаем команду автотестирования в нетипичных условиях, Василий Никишин, Par...
it-people
 
PDF
Continuous Integration под микроскопом, Александр Кириллов, Evrone, Саратов
it-people
 
PPTX
Appium+Cucumber+Ruby: мобильная автоматизация малой кровью, Андрей Малых, Аб...
it-people
 
PDF
QAradise, Евгений Сабиров, Хост
it-people
 
PDF
Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, ...
it-people
 
PDF
Планирование развития автотестов, Кирилл Раткин, СКБ Контур
it-people
 
Автоматизация инфраструктуры. Зачем мы это делаем? Денис Яковлев, 2ГИС, Ново...
it-people
 
Moira: Realtime alerting, Алексей Ларьков, СКБ Контур
it-people
 
Как в E96.ru устроено продуктивное окружение, Данила Штань, ex-e96.ru
it-people
 
Профилирование распределенных систем, Александр Казаков, СКБ Контур
it-people
 
Создаем команду автотестирования в нетипичных условиях, Василий Никишин, Par...
it-people
 
Continuous Integration под микроскопом, Александр Кириллов, Evrone, Саратов
it-people
 
Appium+Cucumber+Ruby: мобильная автоматизация малой кровью, Андрей Малых, Аб...
it-people
 
QAradise, Евгений Сабиров, Хост
it-people
 
Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, ...
it-people
 
Планирование развития автотестов, Кирилл Раткин, СКБ Контур
it-people
 
Ad

Similar to Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва (20)

PDF
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Ontico
 
PDF
Масштабируемый DevOps
Minsk Linux User Group
 
PDF
Петр Леменков - Как облачные технологии меняют Linux-дистрибутивы
Yandex
 
PPT
«Механизмы обновления платформы и окружений пользователей в Jelastic»
Nata_Churda
 
PDF
Эффективное управление ПО под *nix
Andrew Pantyukhin
 
PDF
My talk on Salt and Ansible from DevConf 2014
Alex Chistyakov
 
PDF
Фламп на спидах или ка релизить каждый день
DevDay
 
PPTX
Простой и удобный деплоймент проекта
MoscowDjango
 
PDF
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Ontico
 
PDF
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Ontico
 
PDF
IT-инфраструктура. FAQ для разработчика
Mikhail Chinkov
 
PDF
Solaris OS
SSA KPI
 
PDF
Continuousdelivery
Ivan Evtukhovich
 
PPTX
Agile software configuration management
Sergii Shmarkatiuk
 
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
Dmitry Samsonov
 
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
Ontico
 
PPT
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
 
PDF
Иван Евтухович — Как перестать релизиться и начать жить
Daria Oreshkina
 
PDF
DVCS как конвейер
Артур Орлов
 
PDF
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Ontico
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Ontico
 
Масштабируемый DevOps
Minsk Linux User Group
 
Петр Леменков - Как облачные технологии меняют Linux-дистрибутивы
Yandex
 
«Механизмы обновления платформы и окружений пользователей в Jelastic»
Nata_Churda
 
Эффективное управление ПО под *nix
Andrew Pantyukhin
 
My talk on Salt and Ansible from DevConf 2014
Alex Chistyakov
 
Фламп на спидах или ка релизить каждый день
DevDay
 
Простой и удобный деплоймент проекта
MoscowDjango
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Ontico
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Ontico
 
IT-инфраструктура. FAQ для разработчика
Mikhail Chinkov
 
Solaris OS
SSA KPI
 
Continuousdelivery
Ivan Evtukhovich
 
Agile software configuration management
Sergii Shmarkatiuk
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Dmitry Samsonov
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Ontico
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
 
Иван Евтухович — Как перестать релизиться и начать жить
Daria Oreshkina
 
DVCS как конвейер
Артур Орлов
 
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Ontico
 
Ad

More from it-people (20)

PDF
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
it-people
 
PDF
«Scrapy internals» Александр Сибиряков, Scrapinghub
it-people
 
PDF
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
it-people
 
PDF
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
it-people
 
PDF
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
it-people
 
PDF
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
it-people
 
PDF
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
it-people
 
PDF
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
it-people
 
PDF
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
it-people
 
PDF
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
it-people
 
PDF
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
it-people
 
PDF
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
it-people
 
PDF
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
it-people
 
PDF
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
it-people
 
PDF
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
it-people
 
PDF
«(Без)опасный Python», Иван Цыганов, Positive Technologies
it-people
 
PDF
«Python of Things», Кирилл Борисов, Яндекс
it-people
 
PDF
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
it-people
 
PDF
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
it-people
 
PDF
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
it-people
 
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
it-people
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
it-people
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
it-people
 
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
it-people
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
it-people
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
it-people
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
it-people
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
it-people
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
it-people
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
it-people
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
it-people
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
it-people
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
it-people
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
it-people
 
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
it-people
 
«(Без)опасный Python», Иван Цыганов, Positive Technologies
it-people
 
«Python of Things», Кирилл Борисов, Яндекс
it-people
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
it-people
 
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
it-people
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
it-people
 

Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва

  • 1. Релиз инженеринг Mail.ru, взгляд изнутри Глеков Максим программист-разработчик почтовой службы
  • 2. Организация работы релиз-инженеров • Консоль или GUI ? • Сборка релиза • Раздача релиза • Демон обновлений • Тестовые сервера • Выкладка в продакшен • Мониторинг • Узкие места ПОСЛЕ ЧЕГО ОТВЕЧУ НА ВСЕ ВАШИ ВОПРОСЫ И ДАМ ТЕХНИЧЕСКИЕ РЕКОМЕНДАЦИИ О чем доклад ?
  • 7. Консоль или GUI ? True way — только консоль • Инструментарий • putty если вы работает под Windows • ssh-agent для прокидывания ключей • В Linux и Mac OS все есть «из коробки»
  • 9. Консоль или GUI Как мы управляем сетью раскладки c консоли? • risk-deploy-create — создать релиз • risk-deploy-push — положить релиз на группу серверов • risk-deploy-switch — переключить группу серверов • risk-deploy-clean — удилить релиз с группы серверов
  • 10. Сборка релиза Как это делаем мы • Берем все задачи для итерации • Примерживаем все задачи к итерации • Исправляем конфликты между разными задачами • Запускаем билд релиза risk-deploy-create
  • 12. Проверка конситентности сборки Md5sum — то, что нам надо • фаил с контрольными суммами • Проверка консистентности сборки: md5sum -c имя_фаила_с_суммами • «дешевый» способ» — измерение размера всей сборки • «дешевый способ» только для мониторинга!
  • 13. Тарболы практика Где же все-таки удобнее использовать тарболы? • Нет root-доступа • Разные дистрибутивы Linux • Еще хуже - Windows • Маленькие репозитрии • Раскладки на тестовые сервера
  • 14. Тарболы практика Где же все-таки удобнее использовать тарболы? • Нет root-доступа • Разные дистрибутивы Linux • Еще хуже - Windows • Маленькие репозитрии • Раскладки на тестовые сервера
  • 15. SquashFs самое оптимальное? SquashFs — отличное решение для выкатки боевых релизов • Сжимающая файловая система gzip/lzma • Применяется во встраиваемых системах, где необходимы низкие затраты на производство (роутеры, кофеварки, холодильники, квадрокоптеры) • Просто собрать: mksquashfs data_dir sqsh_file_path.sqsh
  • 16. SquashFs самое оптимальное? SquashFs — минусы • Одна и та же версия SquashFs • Одно и тоже сжатие gzip или lzma • Для монтирования требуются root-права
  • 17. Почему не RPM + puppet? RPM или DEB — неплохое решение • Требуется писать spec фаилы • Просто собирать: rpmbuild -bb имя_спеки • Все фаилы в одном пакете • Не засоряет систему • RPM → DEB с помощью alien
  • 18. Почему не RPM + puppet? RPM или DEB — минусы • Для установки требуются root-права • Нужно привлекать админа • Проблемы с накати/откати в выходной/ночью
  • 19. Что выбрали мы? Вроде бы все очевидно.... • Мы катим в среднем 3 раза в день • Для выкатки пакуем все фаилы • Тарболы только для тестовых серверов • В продакшене SquashFS • RPM на проектах с редкими выкатками (Ответы@Mail.ru, Календарь@Mail.ru)
  • 20. Схема обновления обновлений дифами Плохой вариант для production • Выкатки не консистентны • Откатиться полноценно назад трудно • Непонятно чем закончится исправление ошибки • Подходит только для тестовых серверов
  • 22. Раздача релиза Сущности внутри репозитария • Кикстарт — фаил с текущей сборкой • deploy_files.list — фаил со списком сборок
  • 23. Раздача релиза Выкладываем на группу серверов в тест • risk-deploy-push -b alphatest -f e.mail.ru-f-alpha-505- en-m.glekov-1427105421
  • 24. Раздача релиза Выкладываем на группу серверов в тест
  • 26. Раздача релиза Но есть проблема.... • Узкое место — получение обновлений с одного источника
  • 27. Раздача релиза Простое решение - шардинг • Увеличить количество раздающих серверов
  • 28. Устройство демона обновлений Get risk — так называется наш демон обновлений
  • 29. Статика(js,css, images, etc) Шаблоны отдельно, статика отдельно — надо делать две отдельные сборки!
  • 30. Выкладка релиза на тестовые серверы Тестовые серверы, плавающий DOCUMENT_ROOT • DOCUMENT_ROOT сервера — директория с шаблонами • На серверах где нет веток DOCUMENT_ROOT один • На серверах с ветками каждая ветка — новый DOCUMENT_ROOT • Перключение DOCUMENT_ROOT в backend регулярным выражением
  • 31. Выкладка релиза на тестовые серверы FUSE (Filesystem on Userspace) для веток • Храним только различающиеся фаилы • Недостающие фаилы берем из корневой ветки
  • 32. Выкладка релиза на тестовые серверы FUSE для веток
  • 33. Выкладка релиза на тестовые серверы FUSE для веток
  • 34. Выкладка релиза на тестовые серверы FUSE для веток
  • 35. Хочу себе FUSE! Что можно найти в открытом доступе? • MergeFS (http://bersace03.free.fr/mergefs/mergefs) • UnionFS (http://unionfs.filesystems.org/) • Aufs (http://aufs.sourceforge.net/) • Mhddfs (http://mhddfs.uvw.ru/)
  • 36. Выкладываем в продакшен Выкладываем билд, который прошел через тестовые сервера 1. Раскладываем сборку по серверам: risk-deploy-push -b production -f e.mail.ru-f-alpha-505- en-m.glekov-1427105421 2. Переключаемся на разложенную сборку: risk-deploy-switch -b production -f e.mail.ru-f-alpha-505- en-m.glekov-1427105421
  • 37. Мониторинг Get Risk Network Monitoring или просто grnmon ;)
  • 40. Как устроен мониторинг Get Risk Network Monitoring • Как работает мониторинг? • Демон grnmon — принимает данные с серверов • MySQL — хранение данных для старта • Memcached — чтобы не мучать базу • Fcgi — отдача jsonp из Memcached • JavaScript — отображение данных
  • 41. Переключаем сервера между билдами Накати — первый этап • risk-deploy-switch -b alphatest -f e.mail.ru-f-alpha- 505-en-m.glekov-1427105421 • Время переключения между билдами от 2-5 секунд (!!!!)
  • 42. Дашборд Или как мы понимаем, что все хорошо
  • 43. Быстрый откат в случае неудачи Сколько времени надо чтобы откатиться? • Не более 2-5 сек (!!!) • Переключаемся обратно на прошлый стабильный билд • Снова смотрим в дашборд
  • 45. Узкие места, проблемы и методы их решения Есть некоторые нюансы... • При работе с большими тарболами(> 100 MB) надо использовать pv для затормаживания диска (Ex: cat filename | pv -L limit_rate_speed -rt | tar -xmzf - -C folder_full_path) • Все операции должны быть атомарные • Шардинг серверов с обновлениями • Не пользоваться базой данных в демоне обновления