High Performance Conference aka BitByte 2012

Когда я наткнулся в RSS на объявление о данном мероприятии я сразу отнесся к нему скептически: если бы "высокая производительность" (high performance) при разработке высоконагруженных интернет-проектов была первым приоритетом, то самым распространенным языком программирования в вебдеве был бы C или даже Ассемблер, а не PHP. Но судя по заголовкам докладов речь все же была о highload, так что в качестве эксперимента я решил съездить.

Дело было 6 октября в Москве. Сама HPC являлась частью некого фестиваля BitByte. В двух других потоках, как я понял, говорили об HR и стартапах, то есть в коридоре между залами была довольно забавная смесь из толпы студентов и небольшого количества технарей и HRов. Хотя самый большой зал почему-то был у HPC-секции. Организация у всего этого была очень минималистичная, без бейджиков и обеда, хотя с интернет-трансляцией. А вот слайды с докладов до сих пор не опубликовали...

Формат мероприятия был довольно необычный: всего 5 докладов на секцию примерно по часу. Два от Badoo и по одному от организаторов (ITmozg), Моего_Мира@mail.ru и Фотостраны. С одной стороны "длинный" формат хорош тем, что докладчики могли не торопиться и было масса времени на Q&A, но по факту тот же объем информации, что излагался за час можно было бы запросто выдать и за стандартные 15-30 минут - какими-то особыми деталями никто не радовал, а жаль. Но обо всем по-порядку.

Оптимизация MongoDB - DO's and DON'Ts

Даниил Павлючков(ITmozg)

Вообще компания-организатор ITmozg - просто HR-агенство в сфере IT специализированный рекрутинговый онлайн ресурс для IT и Телеком сфер, которое ко всему прочему проводит мероприятия вроде этого. Их сайт не отличается особой популярностью (и, как следствие, нагрузками) и содержит помимо новостей и информации о мероприятиях, что-то типа каталога вакансий и резюме. Он частично разработан докладчиком с использованием MongoDB. Так и родился этот доклад.

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

Основной минус такого рода докладов в том, что слушатели обычно делятся на две категории: если им актуальна данная тема, то довольно вероятно, что они уже читали все то, о чем говорит докладчик, а если не актуальна - то они тем более не слушают.

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

Badoo Desktop: оптимизация приложения на миллион юзеров онлайн

Сергей Аверин aka Xek(Badoo)

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

Если кто не слышал, Badoo - довольно крупный международный сайт знакомств (в Top200 сайтов мира по версии Alexa). Сергей рассказывал об их десктопном приложении, которое постоянно висит в трее, поддерживает статус онлайн и доставляет уведомления. И, конечно, серверной части, которая его обслуживает.

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

Доклад пестрил разными историями, советами и примерами, что само по себе очень здорово, но по мне так не хватало какой-то общей "сюжетной линии". Из тех, что запомнились:

  • Они завели специальный режим для экстренных случаев, когда что-то сломалось или пик нагрузки - они могут сказать всем или части десктоп-приложений отправлять им данные реже, чем обычно. Жаль, для веб-сайтов это чуть менее применимо, но всегда полезно заранее подумать в этом направлении и составить план действий и список возможных мер по снижению нагрузки.
  • Гоняясь за производительностью кода (внутри PHP), можно выиграть максимум десятки процентов. Чтобы добиться выигрыша производительности в десятки раз, нужно менять принцип того, как работает приложение.
  • Не раз упоминались разного рода проблемы с таймаутами, но у меня не сложилось четкого впечатления, в чем были их причины и что было сделано для их устранения.
  • В Badoo довольно либерально относятся к единственным точкам отказа (single point of failure), так что некоторые внутренние сервисы у них все же являются таковыми.

Пуш-уведомление и общая архитектура проекта Мой_Мир@Mail.Ru

Дмитрий Казаков(Mail.ru Group)

Если честно, я все же надеялся услышать хоть что-то стоящее на этом докладе... Наверное в свете того, что я недавно довольно тесно интересовался данной темой, что в итоге вылилось в серию статей "Интерактивные сайты". Но Mail.ru оказались в своем репертуаре: "у нас есть свои крутые технологии, они круче всех на свете, но почему именно мы решили их создать и в чем их преимущества/отличия от общеиспользуемых решений, мы не расскажем". В opensource тоже не дождетесь. Исключение из этого правила пока лишь одно - Tarantool (СУБД, работающая в основном в памяти, чем-то напоминает Redis), но из-за такого их поведения на конференциях я и к этому их opensource проекту подозрительно отношусь.

Сам Мой Мир отдельной статьи явно не заслуживает, так что вкратце:

  • Perl с модулями на C
  • Хранение данных с использованием собственной технологии "Silver" и вышеупомянутого Tarantool
  • Плюс немного memcached, а про самое главное - шину обмена сообщениями докладчик забыл
  • Для взаимодействия между браузером и сервером используют CometD, видимо тот самый на странноватом Bayeux протоколе

И немного статистики:

  • 7.5 миллионов пользователей
  • 40 миллионов просмотров страниц в день
  • 283.5 миллиона показов в день (видимо, просто хитов включая статику)
  • 1 миллион новых друзей в день (февраль 2011)
  • 25 разработчиков
  • 300 фронтендов
  • Под уведомления: 12 серверов с 16Гб памяти и 4+1 дисками
  • 10 миллионов уведомлений на сервер, при средней длине уведомления в 116 байт

Как слать 150М писем каждый день

Андрей Сас(Badoo)

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

Из того, что было сказано:

  • Для отправки почты используется две очереди: одна для генерации писем, другая для их отправки.
  • Несколько удивил тот факт, что обе они реализованы просто на файлах, как я понял с единственной мотивацией "так надежнее".
  • Сама отправка через команду mail, вызывающую ssmtp (облегченный аналог sendmail), через собственные MTA.
  • В качестве MTA используется проприетарный Communigate Pro, который, по их мнению, быстрее и надежнее opensource альтернатив.

Архитектура проекта на 30М пользователей

 Дмитрий Смирнов(Фотострана)

Фотострана - не имеющая никакого отношения к фото социальная сеть, в Топ20 рунета по данным LiveInternet, но о которой никто не слышал.

  • Почти традиционный LAMP стек, за исключением того, что по историческим причинам FreeBSD вместо Linux
  • Мега-короткий цикл разработки - деплой новой версии каждый час (!), недельные спринты в Agile отдыхают
  • Тоже написали свою альтернативу Redis, которая, судя по графикам, примерно на порядок его быстрее, но не собираются её опубликовывать
  • Узкоспециализированные сервера - нет не только смешанных серверов вроде СУБД + сервер приложений, но и разные части проекта (анкеты, поиск, "питомцы" и т.п.) разнесены по разным машинам
  • Собственная система отдачи статики с двухслойным кэшем и, как я понял, без использования CDN

Заключение

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

По традиции напомню, что если Вы хотите оперативно узнавать о новых статьях об архитектуре высоконагруженных интернет проектов, а также других материалах - рекомендую подписаться на Insight IT через RSS.