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.