2. Релиз-‐менеджмент
в
Badoo
• О
компании
• Процесс
разработки
• Новый
деплой:
«шоты»
и
«билды»
• Обновление
кода
на
1000
серверов
• Распространенные
ошибки
3. • 150
млн
пользователей
• PHP-‐FPM:
30+
тыс
запросов
в
сек
• 160
тыс
регистраций
в
день
• 3
млн
фото
/
видео
в
день
• 48
языков
интерфейса
4. Процесс
разработки
• JIRA:
feature
=>
ticket
(PROJ-‐123)
• git:
rcket
=>
branch
(PROJ-‐123_Descr)
• shot:
branch
=>
mini-‐staging
• build:
set
of
branches
=>
staging
• staging
=>
producron
5. Mini-‐staging:
«шоты»
• Staging
из
текущей
ветки
• Обновление
статуса
в
JIRA
• Быстрое
создание
• Перевод
на
4-‐5
языков
• Локальное
зеркало
git
6. Staging
/
Producron:
«билды»
• git
merge
из
всех
готовых
фич
• Один
билд
—
несколько
кластеров
• Один
кластер
—
один
билд
• 250
Мб
переведенных
шаблонов
• Билд
уехал
—
статус
в
JIRA
обновился
8. Понятие
«лупов»
"In Unix-like operating systems, a loop device, vnd (vnode disk), or lofi
(loopback file interface) is a pseudo-device that makes a file accessible
as a block device." — Wikipedia
losetup mount
release126 /dev/loop1 /var/www
512 Мб
12. Обработка
ошибок
Установка
новой
версии
«лупа»
gzip -d loop.gz
losetup /dev/loop1 loop
mount /dev/loop1 /var/www
13. Обработка
ошибок
• Архив
может
быть
«битый»
• Нужно
найти
свободные
устройства
• Замена
кода
должна
быть
атомарной
• Если
самое
«старое»
устройство
занято
—
убить
соответствующие
процессы
14. Summary
• 150
млн
пользователей
• Рабочий
процесс
на
git
+
JIRA
• Мини-‐стейджинг
—
«шоты»
• Релиз
на
1
000
серверов
за
3
минуты
• UFTP,
libpssh,
pigz
и
5к
строк
на
PHP
15. Спасибо
за
внимание
Юрий
Насретдинов
Badoo
nasretdinov@gmail.com
twiBer.com/YNasretdinov