Как стать автором
Обновить

Компания Badoo временно не ведёт блог на Хабре

Сначала показывать

Видео докладов с конференции DevConf 2014

Время на прочтение2 мин
Количество просмотров23K
Этим летом в Москве проходила конференция профессиональных веб-разработчиков DevConf 2014. Мы в Badoo поддерживали конференцию, выступали с докладами и сделали видео докладов, которые были интересны нашим разработчикам. Так как спикеры были «за», то мы делимся видео с нашими подписчиками.

1. «StatsCollector, или «Мама! Он и меня посчитал!»».
Старынин Валерий, PHP разработчик отдела BI, Badoo.
Доклад о том, как мы собираем статистику для каждого пользователя, обсчитываем каждое открытие страницы (и не только!), обрабатываем 120000 событий в секунду и планируем расширяться.



Читать дальше →
Всего голосов 60: ↑55 и ↓5+50
Комментарии16

Как принимать платежи по кредитным картам — опыт Badoo

Время на прочтение10 мин
Количество просмотров71K
Каждый год в мире появляются всё новые и новые способы оплаты. Но универсального, удобного для всех пользователей способа до сих пор нет. В 2008 году, когда мы только создавали систему биллинга для Badoo, нам казалось, что будущее за оплатой через SMS. Но, столкнувшись с реалиями разных стран, мы поняли, что это не так.

Предпочтения пользователей меняются в зависимости от страны и устройства, с которого они заходят на сайт. Очень близки к идеалу оказались банковские карты, популярность которых растет из года в год, в том числе и в России. Это не только один из самых распространенных способов оплаты, но и самый прибыльный из всех доступных на сайте Badoo, а их более 20.

Сегодня мы подробней расскажем о том, что осталось за рамками предыдущей статьи о биллинге: об обработке платежей посредством банковских карт; что надо знать и к чему готовиться, если вы только собираетесь их подключать; как увеличить их эффективность, если они у вас уже есть. В целом статья рассчитана на неподготовленных читателей, но и специалисты, возможно, найдут для себя кое-что интересное.
Читать дальше →
Всего голосов 88: ↑87 и ↓1+86
Комментарии60

Видео докладов с конференции CodeFest 2014

Время на прочтение1 мин
Количество просмотров14K
Мы рады поделиться с вами записью наших выступлений и видео с уникальной секции по высоким нагрузкам с конференции CodeFest. Вы можете задавать ваши вопросы к докладам в комментариях и мы на них обязательно ответим.

1. «Панель: Тренды разработки в высоконагруженных интернет-проектах».
Алексей fisher Рыбак (Badoo) собрал вместе лучших экспертов из Яндекса, Mail.ru, 2ГИС и Communico и обсудил с ними современные тенденции в разработке и поддержке больших высоконагруженных проектов. Плюс эксперты рассказали об интересных решениях и поделились личным опытом.


Читать дальше →
Всего голосов 52: ↑47 и ↓5+42
Комментарии13

Badoo PHP Code Formatter. Теперь в open source!

Время на прочтение13 мин
Количество просмотров28K
Несколько лет назад компания Badoo начала значительно расти по числу сотрудников, с 20 до 100 и более. Это потребовало серьезной перестройки многих процессов, касающихся разработки. Одна из проблем, с которой мы столкнулись, — как заставить всех разработчиков следовать единому стандарту кодирования, чтобы весь наш код выглядел единообразно и был легко поддерживаемым?

Для решения этой задачи мы решили внедрить инструмент для форматирования кода, который умел бы следующее:

  1. выводить сообщения о несоответствии стандарту форматирования в виде списка, не трогая сам файл;
  2. автоматически исправлять все найденные проблемы с форматированием;
  3. уметь форматировать только часть файла (нам не нужно переформатировать репозиторий сразу целиком, чтобы не потерять историю).

Мы рассматривали два проекта, которые можно было бы взять за основу для написания такого инструмента — PHP Beautifier и PHP Code Sniffer. Первый умел форматировать код, но не умел печатать диагностику, а второй — наоборот, умел печатать диагностику, но не умел форматировать файлы. К сожалению, оба этих проекта, по нашей оценке, были не слишком пригодны для того, чтобы добавить в них недостающую нам функциональность, поэтому была написана новая утилита — phpcf (PHP Code Formatter). Уже в течение двух лет она работает как git pre-receive hook, настроенный на отклонение (!) изменений, которые не оформлены по нашему стандарту кодирования.

Наконец настало время открыть исходные тексты нашей утилиты для широкой публики: github.com/badoo/phpcf
Читать дальше →
Всего голосов 76: ↑73 и ↓3+70
Комментарии62

Tarantool User Group Meetup в Москве

Время на прочтение1 мин
Количество просмотров3.3K
В следующую субботу, 19 июля, проведем в офисе Badoo встречу пользователей Tarantool.

СТРАНИЦА МЕРОПРИЯТИЯ НА MEETUP.COM

Константин Осипов (Mail.ru) расскажет о Tarantool 1.6, новой версии сервера, в которой были пересмотрены многие технические решения и сделана удобная, безопасная и по-прежнему высокопроизводительная СУБД.
Tarantool — это, в первую очередь, lock-free база данных, обрабатывающая все транзакции последовательно в одном потоке. Tarantool 1.6 — это и ещё полноценный Lua Application Server с поддержкой кооперативной многозадачности, неблокирующего ввода-вывода, стандартных пакетов Lua и пакетов, созданных специально для Tarantool.

Антон Поваров (Badoo) выступит с докладом«Tarantool в Badoo: хранение истории посещений».
Каждый день на badoo.com пользователи просматривают порядка 100 миллионов профилей других юзеров. Мы храним счетчики и полную историю посещений за последние 90 дней, с некоторой агрегацией — это около 5 миллиардов ивентов.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии2

Доклады Badoo с конференции РИТ 2014

Время на прочтение1 мин
Количество просмотров11K
Хотим поделиться с вами видео наших докладов с конференции Российские Интернет Технологии (РИТ) 2014. Вопросы к докладчикам можно писать в комментариях к посту.

«Биллинг в большом проекте».
Анатолий GremniX Панов, Badoo.




«Email-рассылки для профи- частые ошибки, что улучшать, как мониторить».
Андрей Une4ga Сас, Badoo.
Читать дальше →
Всего голосов 58: ↑51 и ↓7+44
Комментарии3

Многоязычный Badoo: «трудности перевода»

Время на прочтение10 мин
Количество просмотров26K


Хорошая локализация, то есть адаптация приложения для пользователей из разных стран, позволит ему завоевать сердца своей аудитории. Плохая же, напротив, станет настоящей болью. Например, один из навигаторов в Google Play предлагает «Не обновлять, не вы приобрели коммерческая карта» и пугает, что «На некоторых устройствах вы будете просить, чтобы выбрать папку установки».

Цель локализации не в том, чтобы сделать приложение просто доступным на других языках, но дать каждому пользователю почувствовать, что оно было разработано с учетом особенностей именно его родного языка.

В этой статье мы вкратце расскажем о тех аспектах локализации, которым нужно уделить внимание в первую очередь, и поделимся опытом, который мы накопили при переводе Badoo на 46 языков. Это очень обширная тема, и мы продолжим рассказывать в деталях, как мы реализовали те или иные инструменты. В конце статьи вы можете проголосовать и выбрать тот аспект, о котором вам интересно узнать в первую очередь.
Читать дальше →
Всего голосов 75: ↑69 и ↓6+63
Комментарии30

Переход на PHP 5.5 и юнит-тесты

Время на прочтение4 мин
Количество просмотров19K
С момента перехода с PHP 4.4 на PHP 5.3 в Badoo прошло уже 4 года, пришла пора обновлять PHP, на этот раз сразу на версию PHP 5.5. Помимо новых фич, новая версия PHP в очередной раз принесла нам существенное увеличение производительности, поэтому у нас было много причин для апгрейда. В этой статье мы расскажем о том, как мы переходили на PHP 5.5, какие «грабли» собрали, и зачем в очередной раз переписывали нашу систему для запуска юнит-тестов на основе PHPUnit.


Рис 1. Общая архитектура

«Грабли» при переходе с PHP 5.3 на PHP 5.5


В прошлый раз мы переходили с четвертой версии PHP на пятую, причём наша версия PHP 5.3 содержала патчи, чтобы работал «старый» синтаксис PHP, например, $a = &new ClassName();, и чтобы наша кодовая база могла работать на PHP4 и PHP5 одновременно. На этот раз у нас таких ограничений не было, поэтому при переходе мы просто нашли и заменили все устаревшие конструкции на более актуальные, и на этом переписывание кода было закончено.

Основные проблемы, которые у нас возникли:
  • часть deprecated-фич языка была убрана;
  • расширение mysql стало deprecated;
  • низкая производительность расширения runkit, которое мы используем при написании юнит-тестов.


После перехода на PHP 5.5 наши юнит-тесты начали проходить значительно дольше (в несколько раз), поэтому мы решили в очередной раз доработать нашу «пускалку», чтобы решить эту проблему.

Читать дальше →
Всего голосов 73: ↑62 и ↓11+51
Комментарии7

Видео докладов с конференции LoveQA. Вторая часть

Время на прочтение1 мин
Количество просмотров10K
С радостью делимся второй частью докладов с конференции для тестировщиков LoveQA, которую мы проводили в середине февраля. Первую часть докладов можно посмотреть по ССЫЛКЕ.

Доклады


«Selenium тесты. От RC и одного пользователя к WebDriver, Page Object и пулу пользователей».
Виталий Котов, Badoo.





«Как мы разгоняли тесты — от баш-скриптов до облака».
Илья Relz Кудинов, Badoo.




Читать дальше →
Всего голосов 32: ↑23 и ↓9+14
Комментарии2

Видео докладов с конференции LoveQA. Первая часть

Время на прочтение1 мин
Количество просмотров9.3K
Несколько недель назад, 15 февраля, мы проводили нашу первую конференцию для тестировщиков LoveQA. Спасибо всем тем, кто пришел и кто смотрел online трансляцию. У нас есть видео докладов и мы с удовольствием ими с вами делимся. Сегодня выкладываем первые 4 доклада и в конце недели опубликуем остальные.
Если у вас остались какие-то вопросы, то их можно задавать в комментариях к посту.
Фото с конференции в FB и Вконтакте.

Доклады


«Есть ли жизнь после релиза? Наш опыт тестирования мобильных приложений»
Александр z3us Хозя & Николай Козлов, Badoo.




Читать дальше →
Всего голосов 30: ↑26 и ↓4+22
Комментарии4

Программа по поиску уязвимостей. Проверь Badoo на прочность!

Время на прочтение1 мин
Количество просмотров10K
В 2013 году мы проводили конкурс Месяц поиска уязвимостей «Проверь Badoo на прочность!» и остались довольны результатами. Поэтому мы решили перевести разовый конкурс в регулярную программу.
И сегодня, 5 февраля, мы анонсируем старт Программы по поиску уязвимостей.

Основные изменения:
  • Проверять на прочность можно и веб-версию и мобильные приложения.
  • Мы убираем ограничения по времени – теперь найденные уязвимости можно присылать когда угодно.

Где искать уязвимости:

Читать дальше →
Всего голосов 50: ↑30 и ↓20+10
Комментарии24

LoveQA. Первая мини-конференция Badoo для тестировщиков

Время на прочтение2 мин
Количество просмотров7.2K
UPD: Фото с конференции в FB и Вконтакте.

Весь прошлый год мы много писали на Хабр и рассказывали на конференциях о том, как у нас устроен процесс тестирования в Badoo, как мы выкатываем релизы два раза в день и о многом другом.

Этот год мы решили начать со своей небольшой мини конференции — LoveQA (ЛавQA), на которую хотели бы позвать специалистов, которым интересно послушать про автоматизацию тестирования, тестирование мобильных приложений, безопасность и многое другое. Нам тоже было бы интересно пообщаться с коллегами из других компаний, ответить на вопросы и узнать, как устроено тестирование у них.

Кроме презентаций, которые вы уже могли слышать на конференциях, мы подготовили для вас несколько совершенно новых докладов.
Мы хотим сделать небольшую уютную конференцию, и позвать примерно 120 человек.
В программе интересные доклады, кофебрейк и обед, экскурсия по офису Badoo.
Будем делать трансляцию и видеозапись докладов. Следите за новостями по хэштегу: #loveqa

LoveQA — Meet New People! Посидим, пообщаемся.

Когда: 15 февраля, суббота

Где: Офис компании Badoo, Цветной бульвар д.2, БЦ «Легенды Цветного», Москва

Расписание докладов и ссылка на регистрацию
Всего голосов 33: ↑30 и ↓3+27
Комментарии12

Эволюция разработки в Badoo

Время на прочтение1 мин
Количество просмотров19K
Как устроен процесс организации разработки в крупном интернет-проекте на всех этапах его роста? Что происходит, когда из стартапа компания перерастает в проект с более чем 190 миллионами пользователей.

В прошлом году на конференции Whalerider Алексей fisher Рыбак рассказывал о том:

  • как у нас Badoo сейчас устроена разработка;
  • как в процессе развития проекта её перестраивали;
  • какие проблемы решали;
  • как преодолевали кризисы роста;
  • на какие грабли наступали.

В секции вопросов есть интересная информация о том, как в Badoo устроена система мотивации и бонусов.
Сейчас у нас появилось видео и мы хотим поделиться им с вами.



Всего голосов 73: ↑64 и ↓9+55
Комментарии18

Легко ли научить робота проходить тест для программистов?

Время на прочтение11 мин
Количество просмотров17K
Из этой статьи читатель узнает о том, как написать робота, проходящего тесты, и немножко «разомнет мозги» в теории вероятностей, разбираясь вместе с автором, почему при кажущейся сложности задачи автоматический подбор решения сходится за очень короткое время. Предупреждение: половина статьи ― «матан».

Введение


Несколько лет назад я сделал тест для программистов, который многим, скорее всего, не понравится. Если вы пишете на языке PHP, ваша любимая СУБД ― MySQL, а в качестве операционной системы вы предпочитаете Linux ― попробуйте его пройти. Заранее предупреждаю, тест своеобразный. Успешно его проходит всего несколько процентов испытуемых. Так что не стоит переживать. Если вы его не пройдете ― ничего страшного. Тест «заточен» под определенные навыки, которые требуются далеко не везде.

Получить отличный результат в тесте сложно. Поэтому некоторые испытуемые прибегают к черной магии ― пишут бота. Хорошее дело, между прочим. «Настойчивость и храбрость, отвага и удача, в беде не растеряться ― вот главная задача!» Поэтому капчи в тесте не было. Никогда. Наоборот, мне хотелось, чтобы ботов писали. Чтобы боты приходили. Чтобы тест выстоял, боты обломались, а «ботописатели» не жульничали, а учились.

В тесте 80 вопросов, из которых для каждого испытания случайным образом выбирается 25. У меня был простой (и, как потом выяснилось, абсолютно неверный) расчет. Чтобы тест нельзя было пройти, заучив или подобрав ответы, общая база вопросов изначально должна быть существенно больше, чем количество вопросов в одном испытании. Общее количество комбинаций тестов составляет число порядка 1020. «Раз число такое большое, значит, и подобрать ответы будет очень сложно», ― думал я. Конечно, число сочетаний ― очень грубая оценка. Но задача автоматического подбора интуитивно казалась мне если и решаемой, то такими затратами, на которые ботописатель не пойдет. Думать так было большой ошибкой. Битву с ботами я проиграл. Дальше расскажу, почему.
Осторожно, матан!
Всего голосов 63: ↑57 и ↓6+51
Комментарии37

Миграция фотографий или ещё одна очередь на MySQL

Время на прочтение8 мин
Количество просмотров10K
Недавно мы писали о том, как перед нами впервые встала задача крупномасштабной миграции данных пользователей между дата-центрами и о том как мы ее решили.
В этот раз мы подробнее остановимся на том, каким образом осуществлялась миграция фотографий пользователей и какие структуры данных использовались для ограничения создаваемой нагрузки на сервера с фотографиями.
Ежедневно пользователи Badoo загружают примерно 3 миллиона фотографий. Для их хранения мы выделили специальный кластер серверов, занимающихся также изменением размеров, наложением «водяных знаков», импортом фотографий из других социальных сетей и прочими манипуляциями с файлами.
Все машины этого кластера можно условно разделить на три группы. Первая ― это серверы, отвечающие за быструю отдачу фотографий пользователям (можно сказать, собственная реализация CDN). В контексте миграции эти серверы нам не будут интересны. Вторая группа ― это хранилища с дисками, на которых, собственно, и находятся все фотографии. И третья группа ― это серверы, предоставляющие интерфейс ко второй группе, условно назовём их фотосерверами. На них по оптоволокну смонтированы дисковые массивы хранилищ, на эти же машины происходит загрузка фотографий и здесь же работают все скрипты, выполняющие какие-либо операции с файлами.
Таким образом, для PHP-кода совершенно неважно, на каком именно диске какого хранилища находится фотография. Все, что нужно сделать, это перенести фотографии пользователя с одного фотосервера на другой и обновить эту информацию в базе данных и некоторых демонах. Здесь важно отметить, что все фотографии пользователя всегда находятся на одном фотосервере.
Читать дальше →
Всего голосов 56: ↑50 и ↓6+44
Комментарии17

GitPHP в Badoo

Время на прочтение6 мин
Количество просмотров12K
Badoo — это проект с гигантским git-репозиторием, в котором есть тысячи веток и тегов. Мы используем сильно модифицированный GitPHP (http://gitphp.org) версии 0.2.4, над которой сделали множество надстроек (включая интеграцию с нашим workflow в JIRA, организацию процесса ревью и т.д.). В целом нас этот продукт устраивал, пока мы не стали замечать, что наш основной репозиторий открывается более 20 секунд. И сегодня мы расскажем о том, как мы исследовали производительность GitPHP и каких результатов добились, решая эту проблему.

Расстановка таймеров


При разработке badoo.com в девелоперском окружении мы используем весьма простую debug-панель для расстановки таймеров и отладки SQL-запросов. Поэтому первым делом мы переделали ее в GitPHP и стали измерять время выполнения участков кода, не учитывая вложенные таймеры. Вот так выглядит наша debug-панель:



В первой колонке находится имя вызываемого метода (или действия), во второй — дополнительная информация: аргументы для запуска, начало вывода команды и trace. В последнем столбце находится потраченное на вызов время (в секундах).
Читать дальше →
Всего голосов 68: ↑60 и ↓8+52
Комментарии21

Встреча разработчиков со студентами МФТИ или «Как собрать Badoo на коленке»

Время на прочтение3 мин
Количество просмотров14K
В эту среду наши разработчики, выпускники МФТИ, проведут встречу со студентами МФТИ и расскажут как создаются большие проекты и как сделать Badoo своими силами.
Никакого маркетинга, пиара и прочего булшита. Только разработка, только хардкор!
Общаться со студентами будут разработчики из отдела A-team — они специализируются на разработке инфраструктурных проектов компании. В Badoo отдел A-team занимается созданием масштабируемых и отказоустойчивых платформ для приложений, разрабатывает приложения для управления кластерами, утилиты автоматизации тестирования/деплоя кода, собирает и исследует тонны данных для повышения качества и производительности много-серверных продакшн-систем.
Работа ведётся на стыке приложений для конечных пользователей и системного ПО.
Если вдруг кто-то из вас учится в другом ВУЗе, но хочет попасть на встречу, то напишите об этом в комментариях к посту или личным сообщением до 15-00 23 октября. Ждем письмо с названием ВУЗа, ФИО, курсом и специальностью.

Где: Долгопрудный, МФТИ, главный корпус, 117 аудитория
Когда: 23 октября, среда, в 19-00
Бонус: Возможность задать каверзные вопросы fisher, antonstepanenko, youROCK и Деми (без аккаунта на Хабре).

Нам удалось выкрасть черновики, по которым разработчики готовятся к выступлению. Ими мы с вами и поделимся.
Про что будем говорить
Всего голосов 64: ↑57 и ↓7+50
Комментарии11

Как мы мигрировали миллионные страны за рабочий день

Время на прочтение11 мин
Количество просмотров33K
Badoo — крупнейшая в мире социальная сеть для знакомств с новыми людьми, насчитывающая 190 миллионов пользователей.
Все данные хранятся в двух дата-центрах — европейском и американском. Некоторое время назад мы исследовали качество интернет-соединения у наших пользователей из Азии и обнаружили, что для 7 миллионов пользователей наш сайт будет загружаться в 2 раза быстрее, если мы переместим их из европейского дата-центра в американский. Перед нами впервые встала задача крупномасштабной миграции данных пользователей между дата-центрами, с которой мы успешно справились: мы научились перемещать 1,5 миллиона пользователей за один рабочий день! Мы смогли перемещать целые страны! В первой части мы подробно расскажем о поставленной перед нами задаче и о том, какого результата мы достигли.
Читать дальше →
Всего голосов 106: ↑87 и ↓19+68
Комментарии41

Биллинг в большом проекте

Время на прочтение8 мин
Количество просмотров49K
Существуют разные способы «монетизировать» проект. Но у них есть одна общая составляющая ― то, как деньги переходят из кошелька пользователя на счет организации. Сегодня мы расскажем о том, как организован прием платежей в Badoo и что можно встретить на рынке платежных шлюзов. Сразу предупреждаем, что в статье вы не найдете конкретных цифр по обороту средств компании, но все остальное будет не менее интересно.

Что такое «биллинг»


Для нас биллинг ― это всё, что связано с получением денег от пользователей: конфигурация цен, страница приема платежей, непосредственно прием и обработка платежей, оказание оплаченных услуг, различные промоакции и, конечно же, мониторинг всего вышеописанного.
Читать дальше →
Всего голосов 83: ↑78 и ↓5+73
Комментарии52

Git rebase «по кнопке»

Время на прочтение9 мин
Количество просмотров23K

Когда мы говорим об автоматизации процесса разработки и тестирования, мы подразумеваем, что это очень масштабное действие, и это действительно так. А если разложить его по частям, то станут видны отдельные фрагменты всей картины ― такая фрагментация процесса очень важна в двух случаях:
  • действия выполняются вручную, что требует сосредоточенности и аккуратности;
  • жёсткие временные рамки.

В нашем случае налицо лимит по времени: релизы формируются, тестируются и выкатываются на продакшн-сервер два раза в день. При ограниченных сроках в жизненном цикле релиза процесс удаления (отката) из релизной ветки задачи, содержащей ошибку, имеет важное значение. Для её выполнения мы используем git rebase. Так как git rebase ― это полностью ручная операция, которая требует внимательности и скрупулезности и занимает продолжительное время, мы автоматизировали процесс удаления задачи из релизной ветки.
Читать дальше →
Всего голосов 73: ↑72 и ↓1+71
Комментарии13