SlideShare uma empresa Scribd logo
1 de 20
Эволюция разработки в Badoo
Рыбак Алексей
зам. главы разработки Badoo
a.rybak@corp.badoo.com
привет
Всего лишь ещё один рассказ о том, как
развивалась разработка в большом
проекте
Кризисы роста: области
ответственности, производственные
цепочки
Поделить/переделать, сохранив
ценности и пульс
Badoo
 Социальная сеть для встречи с новыми людьми
 190М users, ~30M MAU, ~10M DAU
 Крупнейшие страны: Испания, Италия, Франция, Бразилия,
США
 2 офиса разработки: Москва и Лондон
 Миллионы строк кода, тысячи серверов, три датацентра
 Стандартный стэк: Linux, nginx, PHP, MySQL, Memcached,
C/C++
 100+ инженеров
Продуктовая интернет-компания
Программа в единственном экземпляре
Менее остро стоят вопросы совместимости ПО
и железа
Можно всё подбирать под себя и
подкручивать «на ходу»
Ценности продуктового стартапа
Быстрый либо мёртвый
Экспериментируем, скорость в ущерб
качеству
24х7, «легкий» саппорт
От стартапа к продуктовой компании
Бизнес-инварианты
«Лёгкий» саппорт: разделение ответственности,
инфраструктурные проекты
Максимально быстрый цикл разработки при
сохранении качества: производственные цепочки
Проследим, как менялась разработка и сохранялись
инварианты
Кризисы роста
Кризис I: саппорт (10 – 20 чел, 2007)
Кризис II: дробление и новые роли в
организации (20 – 50 чел, 2009)
Кризис III: качество (QA) и перестройка
производственных цепочек (50 – 100+ чел,
2011)
Саппорт
 Время программистов = время разработки продукта +
время на саппорт
 Саппорт в широком смысле
• Поиск и мониторинг медленных/ненадежных мест
• Переделка архитектуры
• Инструменты для поддержки (мониторинг, деплой,
управление кластерами...)
• Инструменты для разработки (автоматизация,
ядро...)
Саппорт: отдельную команду не строим
 Пахнет «штрафбатом»
 Вовлеченность и мотивация сотрудников
 Твой софт – твой крест
• Ты накосячил – ты и правь
• Нагрузка вырастет в «стопицот» раз, вокруг всё
миллион раз упадет, наш (твой!) софт должен это
пережить
• Пусть будут ошибки – давай быстро поправим,
просто не тупи и делай
Кризис I: саппорт (2007)
Отдельное направление: производительность,
надежность, мониторинг
Фейл: общие ресурсы
Фикс:
• A-team + C/C++ = Platform
(инфраструктурные проекты)
• Рост группы сисадминов/эксплуатации
Кризис II: дробление (2009?)
Оставить быстрым цикл разработки
Поделить команды функционально
Производственная цепочка по-прежнему
тривиальна: фигак-фигак, в продакшн!
Строим продуктовую команду
Не меняем сильно процессы, боимся сбить ритм
Кризис II: дробление
 Фейл: как «не пошёл» Scrum
 Функциональное дробление без перестройки
производственных цепочек
 С/С++, фичи, биллинг, A-team, мобильная разработка,
бэк-офис, антиспам/почта
 Проблемы: лиды, перераспределение зон
 Фейл: позиции «магов»
 Проблема: качество
 Рекрутинг и HR, системный ревью зп
Кризис III: качество (2011)
Перестройка производственных цепочек
Отдел качества, release engineering
Девелоперская инфраструктура: площадка,
continuous integration, управление релизами, прочая
автоматизация
Перестройка без остановки разработки продукта: Ateam
Параллельно: строим QA/RE
Сейчас: статусы задач (фичи)
 PRD <-> нет вопросов у программистов
 Задача разбита по компонентам (микрокоманды)
 Если нужно железо – есть сроки
 Сопутствующие задачи (BI, мониторинг)
 Код и тесты написаны, тесты прошли на девеле, ревью
 QA passed
 Переводы готовы (40 языков, ~10 основных)
 RE: тесты на стейджинге, деплой
 Деплой м.б. поэтапным: группа пользователей -> метрики -> везде
Кризис III: перестройка процессов
 Подготовка в 2011, плотно - лишь в 2012 году
 Деплой по фичам: svn -> git, «шоты» (фича) и «билды»
(релизы)
 Девелоперская площадка: полная эмуляция 2х ДЦ и
базовых компонент
 Утилиты деплоя и автоматизации, интеграция с JIRA,
доработка staging-инфраструктуры
 Версионирование переводов
Кризис III: перестройка процессов
 Строгий flow в JIRA + автоматизация
 Unit-тесты: 22000 тестов за 3 минуты
 Selenium-тесты: 500 тестов за 20 минут
 2 релиза в день: утром и после обеда
 Стогие стандарты кодирования, заголовки (модулькоманда-человек), покрытие кода
 A-team -> передача сисадминам и релиз-инженерам
Выводы (1)
Методологии не очень существенны
Без фанатизма и сектанства. Waterfall? Пускай. Не
Agile? И что?
Выжили (не везде): backlogs, burn down charts,
stand-up meetings
Выводы (2)
Инфраструктурные проекты неизбежны
Технический долг: время разработки продукта ->
отдельная команда. A-team у нас – не DevOps
Без QA можно обходиться, и долго. Качество на
этапе релиза vs. качество в “продакшне” (ошибки,
мониторинг)
Выводы (3)
Неизбежность QA: рост по числу людей в
команде фич
Если строить QA – чем раньше, тем лучше
Перестройка цепочек – наиболее болезненные
процессы
С отдельной командой – лучше: очень много
сопутствующих задач
Спасибо!
Ваши вопросы, пожалуйста!
a.rybak@corp.badoo.com
http://habrahabr.ru/company/badoo
http://facebook.com/BadooMoscow
http://twitter.com/BadooDev

Mais conteúdo relacionado

Mais procurados

ALM Roadshow Организация процессов разработки – введение в Microsoft ALM/DevOps
ALM Roadshow Организация процессов разработки – введение в Microsoft ALM/DevOpsALM Roadshow Организация процессов разработки – введение в Microsoft ALM/DevOps
ALM Roadshow Организация процессов разработки – введение в Microsoft ALM/DevOpsMicrosoft
 
Микросервисы в бизнес-приложениях: Теория и практика
Микросервисы в бизнес-приложениях: Теория и практикаМикросервисы в бизнес-приложениях: Теория и практика
Микросервисы в бизнес-приложениях: Теория и практикаCEE-SEC(R)
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Vladimir Bakhov
 
Как не создавать себе проблем, разрабатывая на Alfresco
Как не создавать себе проблем, разрабатывая на AlfrescoКак не создавать себе проблем, разрабатывая на Alfresco
Как не создавать себе проблем, разрабатывая на AlfrescoOksana Kurysheva
 
Практика DevOps в крупных организациях
Практика DevOps в крупных организацияхПрактика DevOps в крупных организациях
Практика DevOps в крупных организацияхSoftmart
 
Как проекты приходят к DevOps?
Как проекты приходят к DevOps?Как проекты приходят к DevOps?
Как проекты приходят к DevOps?SQALab
 
DevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюцииDevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюцииAndrey Rebrov
 
Гибкая методология разработки
Гибкая методология разработкиГибкая методология разработки
Гибкая методология разработкиАльберт Фазуллин
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42DevDay
 

Mais procurados (9)

ALM Roadshow Организация процессов разработки – введение в Microsoft ALM/DevOps
ALM Roadshow Организация процессов разработки – введение в Microsoft ALM/DevOpsALM Roadshow Организация процессов разработки – введение в Microsoft ALM/DevOps
ALM Roadshow Организация процессов разработки – введение в Microsoft ALM/DevOps
 
Микросервисы в бизнес-приложениях: Теория и практика
Микросервисы в бизнес-приложениях: Теория и практикаМикросервисы в бизнес-приложениях: Теория и практика
Микросервисы в бизнес-приложениях: Теория и практика
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)
 
Как не создавать себе проблем, разрабатывая на Alfresco
Как не создавать себе проблем, разрабатывая на AlfrescoКак не создавать себе проблем, разрабатывая на Alfresco
Как не создавать себе проблем, разрабатывая на Alfresco
 
Практика DevOps в крупных организациях
Практика DevOps в крупных организацияхПрактика DevOps в крупных организациях
Практика DevOps в крупных организациях
 
Как проекты приходят к DevOps?
Как проекты приходят к DevOps?Как проекты приходят к DevOps?
Как проекты приходят к DevOps?
 
DevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюцииDevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюции
 
Гибкая методология разработки
Гибкая методология разработкиГибкая методология разработки
Гибкая методология разработки
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
 

Semelhante a Алексей Рыбак (Badoo)

DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)Ontico
 
CI для Microsoft Dynamics crm
CI для Microsoft Dynamics crmCI для Microsoft Dynamics crm
CI для Microsoft Dynamics crmRoman Savran
 
Agile days `16 summary
Agile days `16 summaryAgile days `16 summary
Agile days `16 summaryAnton Zhukov
 
MSDevCon 2016 DevOps Impact on Architecture
MSDevCon 2016 DevOps Impact on ArchitectureMSDevCon 2016 DevOps Impact on Architecture
MSDevCon 2016 DevOps Impact on ArchitectureSergey Baranov
 
Автоматическое управление DevOps активностями в стартапе
Автоматическое управление DevOps активностями в стартапеАвтоматическое управление DevOps активностями в стартапе
Автоматическое управление DevOps активностями в стартапеEvgeny Savitsky
 
Software craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы AgileSoftware craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы AgilePavel Veinik
 
Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Александр Ежов
 
м.токовинин компромиссная производительность
м.токовинин   компромиссная производительностьм.токовинин   компромиссная производительность
м.токовинин компромиссная производительностьHighLoad2009
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...Nikolay Samokhvalov
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
раубичи ронд
раубичи рондраубичи ронд
раубичи рондzolik
 
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...ScrumTrek
 
AgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get DoneAgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get DoneMax Klymyshyn
 
Юрий Ковалев -- Нагрузочное тестирование без границ
Юрий Ковалев -- Нагрузочное тестирование без границЮрий Ковалев -- Нагрузочное тестирование без границ
Юрий Ковалев -- Нагрузочное тестирование без границsqadays8
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
Управление Big data платформой Почты России
Управление Big data платформой Почты РоссииУправление Big data платформой Почты России
Управление Big data платформой Почты РоссииAndrey Bashchenko
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspbGonchik Tsymzhitov
 
дерюшкин Agile vector
дерюшкин   Agile vectorдерюшкин   Agile vector
дерюшкин Agile vectorMagneta AI
 
Agile Vector - внедрение agile разработки в Райффайзенбанке
Agile Vector - внедрение agile разработки в РайффайзенбанкеAgile Vector - внедрение agile разработки в Райффайзенбанке
Agile Vector - внедрение agile разработки в РайффайзенбанкеAlexey Deryushkin
 

Semelhante a Алексей Рыбак (Badoo) (20)

DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
 
CI для Microsoft Dynamics crm
CI для Microsoft Dynamics crmCI для Microsoft Dynamics crm
CI для Microsoft Dynamics crm
 
Agile days `16 summary
Agile days `16 summaryAgile days `16 summary
Agile days `16 summary
 
DevOps для 1С
DevOps для 1СDevOps для 1С
DevOps для 1С
 
MSDevCon 2016 DevOps Impact on Architecture
MSDevCon 2016 DevOps Impact on ArchitectureMSDevCon 2016 DevOps Impact on Architecture
MSDevCon 2016 DevOps Impact on Architecture
 
Автоматическое управление DevOps активностями в стартапе
Автоматическое управление DevOps активностями в стартапеАвтоматическое управление DevOps активностями в стартапе
Автоматическое управление DevOps активностями в стартапе
 
Software craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы AgileSoftware craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы Agile
 
Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015
 
м.токовинин компромиссная производительность
м.токовинин   компромиссная производительностьм.токовинин   компромиссная производительность
м.токовинин компромиссная производительность
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
раубичи ронд
раубичи рондраубичи ронд
раубичи ронд
 
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...
 
AgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get DoneAgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get Done
 
Юрий Ковалев -- Нагрузочное тестирование без границ
Юрий Ковалев -- Нагрузочное тестирование без границЮрий Ковалев -- Нагрузочное тестирование без границ
Юрий Ковалев -- Нагрузочное тестирование без границ
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Управление Big data платформой Почты России
Управление Big data платформой Почты РоссииУправление Big data платформой Почты России
Управление Big data платформой Почты России
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
дерюшкин Agile vector
дерюшкин   Agile vectorдерюшкин   Agile vector
дерюшкин Agile vector
 
Agile Vector - внедрение agile разработки в Райффайзенбанке
Agile Vector - внедрение agile разработки в РайффайзенбанкеAgile Vector - внедрение agile разработки в Райффайзенбанке
Agile Vector - внедрение agile разработки в Райффайзенбанке
 

Mais de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Ontico
 

Mais de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
 

Алексей Рыбак (Badoo)

  • 1. Эволюция разработки в Badoo Рыбак Алексей зам. главы разработки Badoo a.rybak@corp.badoo.com
  • 2. привет Всего лишь ещё один рассказ о том, как развивалась разработка в большом проекте Кризисы роста: области ответственности, производственные цепочки Поделить/переделать, сохранив ценности и пульс
  • 3. Badoo  Социальная сеть для встречи с новыми людьми  190М users, ~30M MAU, ~10M DAU  Крупнейшие страны: Испания, Италия, Франция, Бразилия, США  2 офиса разработки: Москва и Лондон  Миллионы строк кода, тысячи серверов, три датацентра  Стандартный стэк: Linux, nginx, PHP, MySQL, Memcached, C/C++  100+ инженеров
  • 4. Продуктовая интернет-компания Программа в единственном экземпляре Менее остро стоят вопросы совместимости ПО и железа Можно всё подбирать под себя и подкручивать «на ходу»
  • 5. Ценности продуктового стартапа Быстрый либо мёртвый Экспериментируем, скорость в ущерб качеству 24х7, «легкий» саппорт
  • 6. От стартапа к продуктовой компании Бизнес-инварианты «Лёгкий» саппорт: разделение ответственности, инфраструктурные проекты Максимально быстрый цикл разработки при сохранении качества: производственные цепочки Проследим, как менялась разработка и сохранялись инварианты
  • 7. Кризисы роста Кризис I: саппорт (10 – 20 чел, 2007) Кризис II: дробление и новые роли в организации (20 – 50 чел, 2009) Кризис III: качество (QA) и перестройка производственных цепочек (50 – 100+ чел, 2011)
  • 8. Саппорт  Время программистов = время разработки продукта + время на саппорт  Саппорт в широком смысле • Поиск и мониторинг медленных/ненадежных мест • Переделка архитектуры • Инструменты для поддержки (мониторинг, деплой, управление кластерами...) • Инструменты для разработки (автоматизация, ядро...)
  • 9. Саппорт: отдельную команду не строим  Пахнет «штрафбатом»  Вовлеченность и мотивация сотрудников  Твой софт – твой крест • Ты накосячил – ты и правь • Нагрузка вырастет в «стопицот» раз, вокруг всё миллион раз упадет, наш (твой!) софт должен это пережить • Пусть будут ошибки – давай быстро поправим, просто не тупи и делай
  • 10. Кризис I: саппорт (2007) Отдельное направление: производительность, надежность, мониторинг Фейл: общие ресурсы Фикс: • A-team + C/C++ = Platform (инфраструктурные проекты) • Рост группы сисадминов/эксплуатации
  • 11. Кризис II: дробление (2009?) Оставить быстрым цикл разработки Поделить команды функционально Производственная цепочка по-прежнему тривиальна: фигак-фигак, в продакшн! Строим продуктовую команду Не меняем сильно процессы, боимся сбить ритм
  • 12. Кризис II: дробление  Фейл: как «не пошёл» Scrum  Функциональное дробление без перестройки производственных цепочек  С/С++, фичи, биллинг, A-team, мобильная разработка, бэк-офис, антиспам/почта  Проблемы: лиды, перераспределение зон  Фейл: позиции «магов»  Проблема: качество  Рекрутинг и HR, системный ревью зп
  • 13. Кризис III: качество (2011) Перестройка производственных цепочек Отдел качества, release engineering Девелоперская инфраструктура: площадка, continuous integration, управление релизами, прочая автоматизация Перестройка без остановки разработки продукта: Ateam Параллельно: строим QA/RE
  • 14. Сейчас: статусы задач (фичи)  PRD <-> нет вопросов у программистов  Задача разбита по компонентам (микрокоманды)  Если нужно железо – есть сроки  Сопутствующие задачи (BI, мониторинг)  Код и тесты написаны, тесты прошли на девеле, ревью  QA passed  Переводы готовы (40 языков, ~10 основных)  RE: тесты на стейджинге, деплой  Деплой м.б. поэтапным: группа пользователей -> метрики -> везде
  • 15. Кризис III: перестройка процессов  Подготовка в 2011, плотно - лишь в 2012 году  Деплой по фичам: svn -> git, «шоты» (фича) и «билды» (релизы)  Девелоперская площадка: полная эмуляция 2х ДЦ и базовых компонент  Утилиты деплоя и автоматизации, интеграция с JIRA, доработка staging-инфраструктуры  Версионирование переводов
  • 16. Кризис III: перестройка процессов  Строгий flow в JIRA + автоматизация  Unit-тесты: 22000 тестов за 3 минуты  Selenium-тесты: 500 тестов за 20 минут  2 релиза в день: утром и после обеда  Стогие стандарты кодирования, заголовки (модулькоманда-человек), покрытие кода  A-team -> передача сисадминам и релиз-инженерам
  • 17. Выводы (1) Методологии не очень существенны Без фанатизма и сектанства. Waterfall? Пускай. Не Agile? И что? Выжили (не везде): backlogs, burn down charts, stand-up meetings
  • 18. Выводы (2) Инфраструктурные проекты неизбежны Технический долг: время разработки продукта -> отдельная команда. A-team у нас – не DevOps Без QA можно обходиться, и долго. Качество на этапе релиза vs. качество в “продакшне” (ошибки, мониторинг)
  • 19. Выводы (3) Неизбежность QA: рост по числу людей в команде фич Если строить QA – чем раньше, тем лучше Перестройка цепочек – наиболее болезненные процессы С отдельной командой – лучше: очень много сопутствующих задач