Когда я наткнулся в 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.