Badoo — крупнейшая в мире социальная сеть для знакомств с новыми людьми, насчитывающая 190 миллионов пользователей.
Все данные хранятся в двух дата-центрах — европейском и американском. Некоторое время назад мы исследовали качество интернет-соединения у наших пользователей из Азии и обнаружили, что для 7 миллионов пользователей наш сайт будет загружаться в 2 раза быстрее, если мы переместим их из европейского дата-центра в американский. Перед нами впервые встала задача крупномасштабной миграции данных пользователей между дата-центрами, с которой мы успешно справились: мы научились перемещать 1,5 миллиона пользователей за один рабочий день! Мы смогли перемещать целые страны! В первой части мы подробно расскажем о поставленной перед нами задаче и о том, какого результата мы достигли.
Читать полностью »
Метка «баду» - 2
Как мы мигрировали миллионные страны за рабочий день
2013-10-14 в 10:45, admin, рубрики: badoo, highload, баду, Блог компании Badoo, Веб-разработка, высокая производительность, миграция, метки: badoo, highload, баду, миграцияБиллинг в большом проекте
2013-09-25 в 7:55, admin, рубрики: badoo, sms-биллинг, баду, биллинг, Блог компании Badoo, Веб-разработка, платежные системы, платежный шлюз, метки: badoo, sms-биллинг, sms-платежи, баду, биллинг, платежные системы, платежный шлюзСуществуют разные способы «монетизировать» проект. Но у них есть одна общая составляющая ― то, как деньги переходят из кошелька пользователя на счет организации. Сегодня мы расскажем о том, как организован прием платежей в Badoo и что можно встретить на рынке платежных шлюзов. Сразу предупреждаем, что в статье вы не найдете конкретных цифр по обороту средств компании, но все остальное будет не менее интересно.
Что такое «биллинг»
Для нас биллинг ― это всё, что связано с получением денег от пользователей: конфигурация цен, страница приема платежей, непосредственно прием и обработка платежей, оказание оплаченных услуг, различные промоакции и, конечно же, мониторинг всего вышеописанного.
Читать полностью »
Git rebase «по кнопке»
2013-09-11 в 12:58, admin, рубрики: badoo, Git, автоматизация тестирования, баду, Блог компании Badoo, Веб-разработка, деплой, релизы, метки: badoo, автоматизация тестирования, баду, деплой, релизы
Когда мы говорим об автоматизации процесса разработки и тестирования, мы подразумеваем, что это очень масштабное действие, и это действительно так. А если разложить его по частям, то станут видны отдельные фрагменты всей картины ― такая фрагментация процесса очень важна в двух случаях:
- действия выполняются вручную, что требует сосредоточенности и аккуратности;
- жёсткие временные рамки.
В нашем случае налицо лимит по времени: релизы формируются, тестируются и выкатываются на продакшн-сервер два раза в день. При ограниченных сроках в жизненном цикле релиза процесс удаления (отката) из релизной ветки задачи, содержащей ошибку, имеет важное значение. Для её выполнения мы используем git rebase. Так как git rebase ― это полностью ручная операция, которая требует внимательности и скрупулезности и занимает продолжительное время, мы автоматизировали процесс удаления задачи из релизной ветки.
Читать полностью »
Процесс разработки и выкатка релизов в Badoo. Автоматическое тестирование. Девелоперское окружение
2013-08-20 в 11:00, admin, рубрики: aida, badoo, code coverage, git workflow, jira, teamcity, автоматическое тестирование, баду, Блог компании Badoo, Веб-разработка, тестирование, метки: aida, badoo, code coverage, git workflow, jira, teamcity, автоматическое тестирование, баду
В июле мы вместе с ведущими IT-Kompot и релиз-инженерами Badoo Владиславом Черновым и Олегом Оямяэ записали выпуск подкаста «Процесс разработки и выкатка релизов в Badoo. Автоматическое тестирование. Девелоперское окружение».
Так как прошлый подкаст вызвал интерес у слушателей и читателей, то этот подкаст мы тоже превратили в статью.
О чем говорили:
Процесс разработки и выкатки релизов в компании Badoo. Используемые инструменты.
- GIT Workflow. Каждая задача в отдельной ветке;
- Использование JIRA, TeamCity и AIDA;
- Формирование релиза и выкатка двух релизов в день. Проблемы и их решения (откат, патчи и т.д.).
Автоматическое тестирование. Рецепт быстрого прогона большого количества тестов.
- Что мы используем;
- Как гоняем тесты;
- Code Coverage;
- Пускалка. 18000 тестов за 3,5 минуты.
Девелоперское окружение в команде, разрабатывающей сложную распределенную систему
И рекомендации от ребят: полезные книги, статьи и т.д.
Система офлайн-уведомлений Badoo
2013-07-11 в 12:02, admin, рубрики: android, badoo, iOS, php, push-уведомления, баду, Блог компании Badoo, Веб-разработка, разработка, разработка сайтов, СУБД, хранение данных, электронная почта, метки: android, badoo, iOS, PHP, push-уведомления, баду, разработка сайтов, СУБД, хранение данных, электронная почта Для того чтобы пользователи, находясь офлайн, узнавали о событиях на сайте, мы создали специальную систему уведомлений. В её задачи входит аккумулировать события для пользователя и в нужный момент сообщать о них через доступные каналы связи, такие как электронная почта и push-уведомления на смартфоны.
Как организовано хранение событий? О каких событиях приходят уведомления? В какой момент они отправляются и по какому принципу? Сегодня мы постараемся ответить на все эти и другие вопросы.
Статья дает общее описание архитектуры системы с небольшими техническими подробностями и будет интересна тем, кто только собирается или уже каким-то способом уведомляет своих пользователей обо всём новом, что произошло за время их отсутствия на сайте (в приложении, сервисе и т.п.)
Архитектура высоконагруженных приложений. Масштабирование распределенных систем. Часть вторая
2013-07-04 в 14:09, admin, рубрики: badoo, highload, mysql, orm, php, асинхронные задачи, баду, Блог компании Badoo, Веб-разработка, деплой, мультиязычность, Программирование, метки: badoo, highload, mysql, orm, PHP, асинхронные задачи, баду, деплой, мультиязычностьНа этой неделе мы выкладывали первую часть расшифрованного подкаста. Сейчас подготовили вторую часть.
О чем мы говорим во второй части подкаста:
- Горизонтальное масштабирование проекта
— когда стоит использовать облачные сервисы, а когда физический хостинг;
— «красивость решения» против «грязного, но производительного» кода. ORM и всякие подобные штуки;
— мультиязычность и мультизонность проекта, проблемы и решения.
- Асинхронные задачи. Очереди.
— асинхронные задачи в распределенных системах;
— когда они приходят на помощь, какие технологии существуют и активно развиваются сейчас;
— какие подходы организации асинхронных задач используются в Badoo;
— c какими проблемами приходилось и приходится сталкиваться при работе с очередями;
— полезные книги и интересные конференции;
— интересные кейсы с собеседований.
Архитектура высоконагруженных приложений. Масштабирование распределенных систем. Часть первая
2013-07-02 в 8:40, admin, рубрики: badoo, nginx, php, php-fpm, pinba, web-разработка, архитектура приложений, баду, Блог компании Badoo, бэкап, Веб-разработка, высокие нагрузки, Программирование, метки: badoo, nginx, PHP, php-fpm, pinba, web-разработка, архитектура приложений, баду, бэкап, высокие нагрузкиНекоторое время назад зам.главы московского офиса разработки Badoo Алексей Рыбак и ведущие IT-Компот записали выпуск подкаста «Архитектура высоконагруженных приложений. Масштабирование распределенных систем".
Сейчас мы сделали расшифровку подкаста, привели ее в удобный для чтения вид и разбили на 2 части.
О чем говорили в первой части:
- Общая информация о проекте Badoo: стек технологий, характер и объем нагрузки, посещаемость.
- Горизонтальное масштабирование проекта:
— веб-сервера, кеширование, мониторинг etc;
— подводные камни при масштабировании проекта;
— масштабирование баз данных, как правильно делать шардинг.
Responsive Email Design, или Как прочитать письмо на холодильнике
2013-05-23 в 8:41, admin, рубрики: android, badoo, css, email-рассылки, html, iOS, media queries, баду, Блог компании Badoo, Веб-разработка, интерфейсы, письма, метки: android, badoo, css, email-рассылки, html, iOS, media queries, баду, интерфейсы, письма Для нас, как и для большинства социальных сетей, очень важны email-рассылки. Одной из интересных и сложных технических задач является корректное отображение писем на мобильных устройствах. Сейчас около 23% писем Badoo открывается именно на них, и эта цифра постоянно увеличивается. А возможно, кто-то прямо сейчас читает наше письмо на своем интернет-холодильнике.
Сегодня мы расскажем, каких правил придерживаться в разработке электронных писем, как сохранить их юзабилити на мобильных устройствах, а также поделимся своими хитростями, накопленными в процессе работы.
Требования
С какими проблемами мы столкнулись и какие требования предъявляются к нашим письмам:
- письма должны корректно отображаться в множестве разных почтовых клиентов и браузеров;
- они должны быть оптимизированы под различные устройства на платформах iOS и Andriod (смартфоны с большим, средним и малым разрешением экрана; планшетные компьютеры);
- нужна обязательная поддержка Outlook 2003/2007/2010, т.к. он занимает большой сегмент использования;
- редактирование компонентов, которые применяются еще в 50 шаблонах писем;
- необходимо создавать универсальные блоки, которые будут подстраиваться под ситуацию, т.к. в письмах данные имеют динамическую структуру (например, письма переводят на 44 языка, в них меняются размеры блоков, изображений, размер текста).
Бюджетное решение для бэкапа целого офиса
2013-04-23 в 7:46, admin, рубрики: backup, badoo, puppet, баду, Блог компании Badoo, бэкап, ит-инфраструктура, системное администрирование, метки: backup, badoo, puppet, баду, бэкап
Большинство статей в наш блог пишут разработчики. Мы решили исправить эту несправедливость и добавить немного DevOps. Сегодня поговорим о важном ― о бэкапах.
Так как Badoo активно развивается и количество сотрудников постоянно увеличивается, мы пришили к выводу, что централизованное резервное копирование гораздо удобнее, чем частичное копирование и хранение информации в различных местах.
В статье мы рассмотрим, как различными способами «забэкапить» довольно большое количество рабочих станций с помощью одного хранилища, не прибегая к серьёзным вложениям и избегая громоздкой реализации.
Заранее оговоримся, что бэкап не охватывает 100% сотрудников, так как не все хранят свои данные на локальных машинах, поэтому у нас не было цели сделать бэкап обязательно-принудительным.
Одной из основных сложностей централизованного бэкапа стало то, что сотрудники используют разные операционные системы.
Как же мы смогли собрать всех на одном сервере?
Читать полностью »
Judy-массивы в PHP
2013-04-02 в 11:41, admin, рубрики: array, badoo, judy, memory, performance, php, баду, Блог компании Badoo, Программирование, метки: array, badoo, judy, memory, performance, PHP, бадуВ Badoo используется много сервисов на C и C++, большинство из которых работают с огромными объёмами данных. Как правило, сервисы выступают в роли «быстрого кэша» или «быстрой базы данных», т.е. совершают различные операции с массивами однотипных данных. Для быстрого доступа к данным мы давно и успешно используем Judy-массивы (англ. Judy arrays). Но однажды нам захотелось странного: обрабатывать большие массивы целых чисел на PHP, и мы сразу вспомнили про Judy.
Немного истории
Judy-массивы были изобретены Дугласом Баскинсом (англ. Douglas Baskins) в начале 2000-го года. Проект их разработки финансировался компанией HP, но примерно через два года был закрыт. За это время было выпущено четыре версии, причём разработка последней заняла больше года, и в ней разработчики смогли в два раза ускорить Judy, в два раза уменьшить потребление памяти, хоть и далось это нелёгкой ценой: объём кода вырос в 5 раз, а его сложность ― на порядок.
Читать полностью »