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

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

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

Логирование, интерфейсы и аллокации в Go

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


Привет Хабр. Последний свой пост я публиковал сравнительно недавно, так что вряд ли вы успели забыть, что меня зовут Марко. Сегодня публикую перевод небольшой заметки, которая касается нескольких очень вкусных оптимизаций из еще не вышедшего Go 1.9. Эти оптимизации позволяют генерировать меньше мусора в большинстве программ на Go. Меньше мусора – меньше задержки и затраты на сборку этого мусора.


Эта статья о новых оптимизациях компилятора, которые готовятся к релизу Go 1.9, но я бы хотел начать разговор с логирования.

Читать дальше →
Всего голосов 59: ↑58 и ↓1 +57
Комментарии 14

Как создать систему бизнес-аналитики и не наломать дров

Время на прочтение 5 мин
Количество просмотров 25K
Для правильного принятия бизнес-решений необходимо владеть наиболее полной и подробной информацией о состоянии дел в компании. Но нередко такая информация ограничена годовыми да квартальными отчётами.

Этого, безусловно, мало. Для эффективного анализа на предприятиях часто внедряют системы бизнес-аналитики (англ. business intelligence, далее — BI-системы). Сегодня мы хотим поделиться несколькими советами, которые могут помочь при создании BI-системы в вашей компании (и которые помогли бы нам самим год назад).


Читать дальше →
Всего голосов 67: ↑62 и ↓5 +57
Комментарии 18

Использование Pinba в Badoo: то, чего вы еще не знаете

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


Привет, Хабр! Меня зовут Денис, я – PHP-разработчик в Badoo, и сейчас я расскажу, как мы сами используем Pinba. Предполагается, что вы уже знаете, что это за инструмент, и у вас есть опыт его эксплуатации. Если нет, то для ознакомления рекомендую статью моего коллеги, Максима Матюхина.


Вообще на Хабре есть достаточно материалов об использовании Pinba в различных компаниях, включая пост Олега Ефимова в нашем блоге. Но все они касаются других компаний, а не Badoo, что немного нелогично: сами придумали инструмент, выложили в open source и не делимся опытом. Да, мы часто упоминаем Pinba в различных публикациях и в докладах на IT-конференциях, но обычно это выглядит как-то так: «А вот эти замечательные графики мы получили по данным из Pinba» или «Для измерения мы использовали Pinba», и всё.


Общение с коллегами из других компаний показало две вещи: во-первых, достаточно много людей используют Pinba, а во-вторых, часть из них не знают или не используют все возможности этого инструмента, а некоторые не до конца понимают его предназначение. Поэтому я постараюсь рассказать о тех нюансах, которые явно не указаны в документации, о новых возможностях и наиболее интересных кейсах применения Pinba в Badoo. Поехали!

Читать дальше →
Всего голосов 56: ↑56 и ↓0 +56
Комментарии 8

Kotlin vs. Java: скорость компиляции

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


Как уже знают все Android-разработчики, Google недавно объявила об официальной поддержке Kotlin в Android. Многие риски, связанные с использованием этого замечательного языка в Android-проектах, сняты. Но актуальным, особенно для очень крупных проектов, каким является Badoo, остаётся вопрос о скорости сборки. Я был рад обнаружить, что в сети уже есть исследования на эту тему, и переводом одного из них хочу поделиться.


Итак, если вы переводите приложение с Java на Kotlin, будет ли оно компилироваться дольше?

Читать дальше →
Всего голосов 64: ↑60 и ↓4 +56
Комментарии 33

Лекции Технопарка: мастер-класс Алексея Рыбака «Про то, что я бы хотел, чтобы мне рассказали, пока я учился»

Время на прочтение 25 мин
Количество просмотров 47K
Сегодня мы начинаем серию публикаций новых мастер-классов Технопарка. И первая из них — мастер-класс Алексея Рыбака на свободную тему, в котором он поделился со студентами соображениями о том, чем работа в реальной жизни отличается от учебы. Видео смотрите на нашем сайте, а адаптированную расшифровку — ниже.

Я работаю в компании Badoo достаточно долго, и на моих глазах этот проект из маленького стартапа превратился в большую компанию с сотнями инженеров и тысячным парком серверов, распределенных по нескольким дата-центрам. Сейчас я хотел бы рассказать о том, что считаю достаточно интересным для студентов, выбравших профессию программиста.

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


Читать дальше →
Всего голосов 66: ↑61 и ↓5 +56
Комментарии 15

Система управления авторизацией пользователей на тысячах серверов

Время на прочтение 9 мин
Количество просмотров 26K
При управлении большим парком серверов (100 и более) в определенный момент возникает вопрос об упрощении выполнения рутинных задач.

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

Сегодня мы поговорим об авторизации пользователей на Linux-серверах с использованием БД MySQL и приложения Puppet.
Читать дальше →
Всего голосов 70: ↑63 и ↓7 +56
Комментарии 61

WebRTC на Android: как включить аппаратное кодирование на множестве устройств

Время на прочтение 7 мин
Количество просмотров 13K
Для видеозвонков в Badoo мы используем стандарт WebRTC и кодек H.264. Если верить документации, этот кодек должен без проблем работать на любых устройствах Android начиная с Android 5.0. Но на практике всё оказалось не совсем так. В этой статье я расскажу про особенности реализации аппаратного кодирования для кодека H.264 в WebRTC и о том, как заставить его работать на большем количестве устройств.


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

Разворачиваем автоматизацию за пару часов: PHPUnit, Selenium, Composer

Время на прочтение 8 мин
Количество просмотров 28K
Привет, Хабр! Меня зовут Виталий Котов, я работаю в Badoo, в отделе QA. Большую часть времени занимаюсь автоматизацией тестирования. Недавно я столкнулся с задачей максимально быстро развернуть Selenium-тесты для одного из наших проектов. Условие было простое: код должен лежать в отдельном репозитории и не использовать наработки предыдущих автотестов. Ах, да, и нужно было обойтись без CI. При этом тесты должны были запускаться сразу после изменения кода проекта. Отчёт должен был приходить на почту.

Собственно, опытом такого развёртывания я и решил поделиться. Получился своего рода гайд «Как запустить тесты за пару часов».

Поехали!


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

Selenium для всех: как мы учим QA-инженеров работать с автотестами

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


Привет, Хабр! Меня зовут Виталий Котов, я работаю в Badoo в отделе QA, занимаюсь автоматизацией тестирования, а иногда и автоматизацией автоматизации тестирования.


Сегодня я расскажу о том, как мы в Badoo упростили работу с Selenium-тестами, научили ребят из отдела ручного тестирования работать с ними и какой профит с этого получили. Прочитав статью, вы сможете оценить трудозатратность каждого из этапов и, возможно, захотите частично перенять наш опыт.

Читать дальше →
Всего голосов 57: ↑56 и ↓1 +55
Комментарии 42

Новогодние обещания Go-разработчика

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

image
Фото Roman Pronskiy


Это перевод поста одного из главных разработчиков языка Go, Расса Кокса, где он в традиционном для новогоднего времени формате дает себе обещания и планирует выполнить их.


Наступило время принятия решений, и я подумал, что имеет смысл немного рассказать о том, над чем я хочу работать в наступившем году применительно к Go.


Каждый год я ставлю перед собой цель — помочь Go-разработчикам. Я хочу быть уверен, что то, что делают создатели Go, оказывает положительное влияние на всех Go-разработчиков. Потому что у них есть масса способов совершить ошибку: например, можно потратить слишком много времени на очистку или оптимизацию кода, которому это не требуется; откликаться только на самые распространенные или недавние жалобы и запросы; излишне сосредотачиваться на краткосрочных улучшениях. Поэтому так важно взглянуть на все со стороны и заняться тем, что принесет больше всего пользы для Go-сообщества.


В этой статье я опишу несколько основных задач, на которых я сосредоточусь в этом году. Это мой собственный список, а не всей команды создателей Go.

Читать дальше →
Всего голосов 57: ↑56 и ↓1 +55
Комментарии 20

Обзор конференций, на которых мы побывали в 2016 году

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


Возможно, вы уже слышали о том, что в Badoo каждый год в декабре мы с коллегами ходим в баню составляем календарь конференций для технарей по всему миру, на которые хотим попасть. И 2016 год не стал исключением: у нас в списке больше ста конференций, но мучить отчетами с каждой мы вас, конечно, не будем. Вместо этого мы выбрали лучшие, по мнению наших разработчиков, и собрали небольшие отзывы очевидцев из Badoo. Спойлер: конференций восемь. Спойлер второй: некоторые отзывы не такие уж и небольшие. Поэтому ниже – оглавление.

Оглавление


1. CodeFest, Новосибирск, Россия
2. SQA Days 19, Санкт-Петербург, Россия
3. DevConf, Москва, Россия
4. Velocity, Нью-Йорк, США
5. GopherCon, Денвер, США
6. Percona Live, Амстердам, Нидерланды
7. ZendCon, Лас-Вегас, США
8. HighLoad++, Москва, Россия
Читать дальше →
Всего голосов 67: ↑61 и ↓6 +55
Комментарии 7

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

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

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

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

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



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

Как организовать Performance Review в IT-компании: опыт Badoo

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


Привет, Хабр! Меня зовут Алексей Рыбак, я – глава разработки в Badoo. В феврале в нашем московском офисе Badoo проходил Techleads-митап, где я рассказывал про наш процесс Performance Review. Эта статья написана по мотивам моего выступления.

Читать дальше →
Всего голосов 62: ↑58 и ↓4 +54
Комментарии 19

Patch me if you can: как мы отлаживаемся на production. Часть 2

Время на прочтение 8 мин
Количество просмотров 8.7K
В первой части своей статьи я рассказал о том, как мы в Badoo создали первую версию системы патчей. Если коротко, то нам нужно было найти способ исправления серьёзных ошибок прямо на production, доступный всем разработчикам. Однако первая версия была не без недостатков: мы использовали своеобразный способ раскладки, который не позволял гарантировать атомарность выкладок патчей и консистентность кода.

В этой части статьи я расскажу о новом способе раскладки кода, который мы придумали, пытаясь решить наши проблемы, и о том, как с ним преобразилась наша система патчей.


Изображение: источник
Читать дальше →
Всего голосов 55: ↑54 и ↓1 +53
Комментарии 29

Мы на Highload++ в этом ноябре: задай вопрос инженерам Badoo

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


Привет, Хабр! А особенный привет тем, кто в этом году идет на конференцию Highload++, потому что мы там обязательно встретимся. Мы придем, и не с пустыми руками: восемь докладов в семь разных секций.


Но нам не хочется просто показать описания наших докладов, чтобы вы прочитали и сказали: “Понятно”. Мы разыграем 3 билета на конференцию. Для того, чтобы получить их, нужно задать вопрос в комментариях к этому посту одному из нижеперечисленных спикеров, а мы посоветуемся и наградим троих участников. Чтобы вы смогли придумать вопросы, каждый из ребят немного рассказал о команде, в которой работает, и о своей роли в ней.


Под катом – имена, пароли и, конечно, описания наших докладов на конференции.

Читать дальше →
Всего голосов 53: ↑53 и ↓0 +53
Комментарии 96

Процесс релиза iOS-приложений в Badoo

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


Всем привет! Меня зовут Михаил Булгаков, и я работаю в команде релиз-инженеров Badoo. В этом посте я расскажу о том, как происходят релизы iOS-приложений с момента «У меня есть готовый бинарь» до момента «После нас хоть потоп», и, конечно, как это делаем мы в Badoo (забегая вперёд: нам удалось сократить время, необходимое на запуск релиза, с нескольких часов до одной минуты и избавиться от ручной работы).

Читать дальше →
Всего голосов 55: ↑54 и ↓1 +53
Комментарии 13

Due date как компонента ответственности в процессе разработки

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


В продуктовой разработке постоянно и довольно остро стоит вопрос эффективности. Как построить процесс так, чтобы он был оптимален с точки зрения бизнеса, роста сотрудников, изменяемости, прозрачности и многих других факторов? Где та самая «серебряная пуля», которая позволит решить сразу все проблемы и избавит вас как руководителя от головной боли?


На звание этой «серебряной пули» по очереди претендуют модные (и не очень) методологии разработки: Scrum, Kanban, XP, RAD, FDD и т. п. Регулярно появляются новые способы и подходы, фреймворки и инструменты. Бизнес-консультанты приходят в компании и делятся своими ноу-хау за немалые деньги, рассказывая, как правильно. А при этом хорошо бы ещё и дёшево, не так ли?


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


Давайте подумаем, что требуется от процесса, какие проблемы нужно решить и какие подходы для этого используют. А заодно я расскажу о том, как делаем мы в Badoo. Это уже третий мой пост подряд в нашем блоге на Хабре. Но на всякий случай представлюсь снова: я – Илья Агеев, руковожу QA в Badoo.

Читать дальше →
Всего голосов 57: ↑55 и ↓2 +53
Комментарии 30

Виртуальная Машина PHP 7

Время на прочтение 34 мин
Количество просмотров 29K
Всем доброго времени суток! Меня зовут Константин, в Badoo я работаю в команде Features Team. Скорее всего, вы уже знаете, что наш бэкенд написан на PHP и обслуживает более трёх сотен миллионов пользователей. Так что я не мог упустить шанс перевести эту статью core-разработчика PHP Никиты Попова. Уверен, она будет полезна разработчикам всех уровней, но новичкам может показаться сложноватой. Приятного (и полезного) чтения!



В статье представлен обзор виртуальной машины Zend для PHP 7. Это не исчерпывающее описание, но я постараюсь охватить большинство важных частей, а также некоторые детали.

Описание сделано на основе PHP версии 7.2 (в настоящее время находится в разработке), но почти всё справедливо и для PHP 7.0/7.1. Однако отличия от виртуальных машин серии PHP 5.x являются значительными, и с ними я, как правило, не проводил параллели.
Читать дальше →
Всего голосов 59: ↑56 и ↓3 +53
Комментарии 12

Сборка мусора в V8: как работает новый Orinoco GC

Время на прочтение 9 мин
Количество просмотров 13K
Если честно, это одна из самых жестоких статей, что я читал за последнее время: тут много про смерть в молодом возрасте, про гонения из одной области памяти в другую и про ожесточённую борьбу за производительность. В общем, добро пожаловать под кат — там перевод отличной статьи Питера Маршалла о том, как сегодня работает сборка мусора в V8.

Читать дальше →
Всего голосов 54: ↑53 и ↓1 +52
Комментарии 2

Обновление строк на лету в мобильных приложениях: часть 1

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


Введение


Свою статью я начну с признания: я немного завидую людям, чей родной язык — английский. В современном мире он стал языком интернационального общения, негласным стандартом. Практически любое популярное приложение поддерживает английский язык. Англоговорящие люди вряд ли когда-нибудь скачивали долгожданную игру из App Store и разочарованно понимали, что она не поддерживает их родной язык.

Игры и приложения приятнее и проще использовать на родном языке, а для некоторых людей он вообще единственно доступный. Именно поэтому компании, работающие на международном рынке, переводят свои приложения на распространённые языки.

Эта статья — для тех разработчиков, которые уже задумались о локализации своего приложения, сделали первые шаги в этом направлении и наступили на свои первые грабли. В сегодняшней статье я коротко опишу подходы к локализации приложений, остановлюсь подробнее на локализации на стороне клиента, расскажу о недостатках этого подхода и предложу способ их обойти. А в следующей части мои коллеги подробнее расскажут о деталях имплементации нашего подхода в мобильных ОС.

О локализации веб-приложений мы уже писали здесь.
Читать дальше →
Всего голосов 52: ↑52 и ↓0 +52
Комментарии 7