15
Релизменеджмент в Badoo деплой на 1000 серверов за 3 минуты Юрий Насретдинов twiBer.com/YNasretdinov

Badoo deployment in 3 minutes

Embed Size (px)

Citation preview

Page 1: Badoo deployment in 3 minutes

Релиз-­‐менеджмент  в  Badooдеплой  на  1000  серверов  за  3  минуты

Юрий  Насретдинов                          

twiBer.com/YNasretdinov

Page 2: Badoo deployment in 3 minutes

Релиз-­‐менеджмент  в  Badoo

• О  компании• Процесс  разработки  • Новый  деплой:  «шоты»  и  «билды»• Обновление  кода  на  1000  серверов• Распространенные  ошибки

Page 3: Badoo deployment in 3 minutes

• 150  млн  пользователей• PHP-­‐FPM:  30+  тыс  запросов  в  сек

• 160  тыс  регистраций  в  день• 3  млн  фото  /  видео  в  день• 48  языков  интерфейса

Page 4: Badoo deployment in 3 minutes

Процесс  разработки

• JIRA:  feature  =>  ticket  (PROJ-­‐123)• git:  rcket  =>  branch  (PROJ-­‐123_Descr)• shot:  branch  =>  mini-­‐staging

• build:  set  of  branches  =>  staging• staging  =>  producron

Page 5: Badoo deployment in 3 minutes

Mini-­‐staging:  «шоты»

• Staging  из  текущей  ветки• Обновление  статуса  в  JIRA• Быстрое  создание• Перевод  на  4-­‐5  языков• Локальное  зеркало  git

Page 6: Badoo deployment in 3 minutes

Staging  /  Producron:  «билды»

• git  merge  из  всех  готовых  фич

• Один  билд  —  несколько  кластеров

• Один  кластер  —  один  билд

• 250  Мб  переведенных  шаблонов

• Билд  уехал  —  статус  в  JIRA  обновился

Page 7: Badoo deployment in 3 minutes

«Билды»  и  кластеры

build1

build2

www

scripts

bda

bma

Page 8: Badoo deployment in 3 minutes

"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

Понятие  «лупов»

Page 9: Badoo deployment in 3 minutes

Подготовка  «лупа»

empty512 Мб

release78512 Мб

release78.gz100 Мб

pigz cp

20 сек.

Page 10: Badoo deployment in 3 minutes

Через  океан

scp100 Кб

— =

release78512 Мб

78

release77512 Мб

77

diff-78-77100 Кб

diff

5 сек.

Page 11: Badoo deployment in 3 minutes

Обновление  кода

release78.gz100 Мб

uftp libpssh

/var/wwwrelease78512 Мб

1 мин.

Page 12: Badoo deployment in 3 minutes

Обработка  ошибок

gzip -d loop.gzlosetup /dev/loop1 loopmount /dev/loop1 /var/www

Установка  новой  версии  «лупа»

Page 13: Badoo deployment in 3 minutes

Обработка  ошибок

• Архив  может  быть  «битый»• Нужно  найти  свободные  устройства• Замена  кода  должна  быть  атомарной• Если  самое  «старое»  устройство  занято  —  убить  соответствующие  процессы

Page 14: Badoo deployment in 3 minutes

Summary

• 150  млн  пользователей• Рабочий  процесс  на  git  +  JIRA• Мини-­‐стейджинг  —  «шоты»

• Релиз  на  1  000  серверов  за  3  минуты• UFTP,  libpssh,  pigz  и  5к  строк  на  PHP

Page 15: Badoo deployment in 3 minutes

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

Юрий  Насретдинов

Badoo

[email protected]

twiBer.com/YNasretdinov