Upload
yuriy-nasretdinov
View
3.089
Download
5
Embed Size (px)
Citation preview
Релиз-‐менеджмент в Badooдеплой на 1000 серверов за 3 минуты
Юрий Насретдинов
twiBer.com/YNasretdinov
Релиз-‐менеджмент в Badoo
• О компании• Процесс разработки • Новый деплой: «шоты» и «билды»• Обновление кода на 1000 серверов• Распространенные ошибки
• 150 млн пользователей• PHP-‐FPM: 30+ тыс запросов в сек
• 160 тыс регистраций в день• 3 млн фото / видео в день• 48 языков интерфейса
Процесс разработки
• JIRA: feature => ticket (PROJ-‐123)• git: rcket => branch (PROJ-‐123_Descr)• shot: branch => mini-‐staging
• build: set of branches => staging• staging => producron
Mini-‐staging: «шоты»
• Staging из текущей ветки• Обновление статуса в JIRA• Быстрое создание• Перевод на 4-‐5 языков• Локальное зеркало git
Staging / Producron: «билды»
• git merge из всех готовых фич
• Один билд — несколько кластеров
• Один кластер — один билд
• 250 Мб переведенных шаблонов
• Билд уехал — статус в JIRA обновился
«Билды» и кластеры
build1
build2
www
scripts
bda
bma
"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
release126512 Мб
/dev/loop1
mount
/var/www
losetup
Понятие «лупов»
Подготовка «лупа»
empty512 Мб
release78512 Мб
release78.gz100 Мб
pigz cp
20 сек.
Через океан
scp100 Кб
— =
release78512 Мб
78
release77512 Мб
77
diff-78-77100 Кб
diff
5 сек.
Обновление кода
release78.gz100 Мб
uftp libpssh
/var/wwwrelease78512 Мб
1 мин.
Обработка ошибок
gzip -d loop.gzlosetup /dev/loop1 loopmount /dev/loop1 /var/www
Установка новой версии «лупа»
Обработка ошибок
• Архив может быть «битый»• Нужно найти свободные устройства• Замена кода должна быть атомарной• Если самое «старое» устройство занято — убить соответствующие процессы
Summary
• 150 млн пользователей• Рабочий процесс на git + JIRA• Мини-‐стейджинг — «шоты»
• Релиз на 1 000 серверов за 3 минуты• UFTP, libpssh, pigz и 5к строк на PHP
Спасибо за внимание
Юрий Насретдинов
Badoo
twiBer.com/YNasretdinov