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.

Источник: High Performance Conference aka BitByte 2012