HighLoad++ 2011

В этом году я почти до последнего момента не знал попаду ли на HighLoad++, но благодаря поговорке "не имей сто рублей, а имей сто друзей" все же попал в список участников (огромное спасибо Аксане и ВШБИ). По ходу мероприятия написать традиционный отчет не получилось, но лучше поздно, чем никогда :)

Начну, как обычно, с организационных моментов и прочих вещей не по делу. Регистрация заняла ровно 30 секунд, никаких очередей. Удивило, что поленились хоть капельку поменять раздаточные материалы и их дизайн с прошлого года - выдали абсолютно идентичные прошлогодним пакетик, блокнот и ручку. На входе стоял стенд с ходящей по беговой дорожке топлесс девушкой с бодиартом, которую потом все кому не лень выкладывали в твиттер с соответствующим хэштегом. На том же стенде разыгрывали Mac Pro между теми, кто оставит контакты. К слову, владельцы стенда оказались разработчиками ужасно работающего под Android 3.1 покерного сервиса, ничего более примечательного о них сказать не могу. Стендов, как обычно, было по пальцам пересчитать: пару хостинг-провайдеров и Битрикс ничем особым не выделались, а в Google тоже разыгрывали технику, один из последних смартфонов Samsung, а еще за прохождение теста в Google Docs дарили футболки с надписью "I'm feeling lucky" на спине - очень актуально на экзаменах и в казино :)

С WiFi традиционные проблемы почти весь первый день, планшет с 3G спасал ситуацию. Кормили вполне приемлемо, правда ассортимент скудный - я, наверное, за весь год меньше жареной рыбы съел, чем за эти два дня. Первые три ряда мест в залах были "только для VIP", которые, как я понял, включали в себя докладчиков и возможно личных знакомых организаторов, причем таких человек было на вскидку меньше 5% участников и в итоге 95% мест пустовали до тех пор, пока все не забили на эту схему. Определенно не самый удачный ход, если уж и бронировать места, то не в таком количестве. Трансляция одного из залов в коридоре - спорное решение, с одной стороны можно послушать пока ешь, с другой - общаться мешает капитально, особенно когда собираются "тусовки" вокруг докладчика, например во второй день нужно было сильно напрягаться, чтобы услышать Олега Илларионова в кулуарах.

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

Швейцарец Alvaro Videla делился своим опытом работы с RabbitMQ, я, признаюсь, не особо следил за этим проектом, но подал он его достаточно вкусно и судя по обозначенным векторам развития внимания RabbitMQ все же стоит.

Второй докладчик, Buddy Brewer, повествовал о тестировании скорости отрисовки страниц в браузерах как искусственно (посредством диаграммы загрузки компонентов страницы в виде водопада), так и вживую на пользователях (посредством window.performance.timing, о котором я почему-то раньше не слышал, и различных Javascript-библиотек).

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

После обеда шел доклад Domas Mituzas, простого DBA из Facebook, хотя в прошлом году выступал более высокопоставленный представитель. Речь шла на этот раз про MySQL, в частности про основные проблемы и доработки, сделанные в форке от Facebook, также затрагивался вопрос грядущего в следующем году MySQL 5.6.

Josh BerkusJosh Berkus в этом году выступил более удачно, не зря ему дали выступить дважды. Первый был довольно специфичным, но от этого не менее интересным, основной темой был довольно узкий класс приложений, который он называл firehose applications (пожарный шланг). Они представляют собой сборщики данных в реальном времени для последующей аналитики, было два примера: обработчик отчетов о критических сбоях в Mozilla Firefox и анализ работы ферм ветряных мельниц. Забавно оказалось их сравнение с традиционными сайтами:

  • в сайтах главное, чтобы данные из базы всегда можно было хотя бы прочитать, и в случае сбоев или плановых работ её делают доступной только для чтения;
  • в обсуждаемых же приложениех главное записать все поступающие данные, а пользовательский интерфейс в целом можно запланированно и не очень отключать - кому какое дело, если интерфейс для аналитических отчетов не работал 8 часов в ночь с субботы на воскресенье?

В его решениях обычно использовался та или иная форма NoSQL хранилищ, для сбора текущих данных и PostgreSQL для хранения уже обработанных отчетов и предоставления их пользователям. Второй доклад Josh'а был менее формальным и был посвящен вопросам SQL vs NoSQL, что по сути свелось к тому, что наличие SQL-интерфейса - дело десятое при выборе СУБД для конкретного проекта, важнее понимать другие особенности каждого конкретного хранилища данных.

Mi***ft в этом году, как и Facebook, сменил докладчика, но это не уберегло их от очередного провала. Хоть и после доклада появилось-таки несколько вопросов от аудитории, но разработчиков по-прежнему в целом мало интересует тематика проприетарного ПО, даже при поддержке PHP и Hyper-V. Продавать простым смертным у них получается намного лучше, чем продавать специалистам.

Robert Virding

Robert Virding был, пожалуй, одним из лучших докладчиков первого дня. Хоть я и неплохо знаком с Erlang, но послушать о нем из уст одного из создателей - невероятно увлекательно, как-будто переживаешь на своей шкуре историю целого языка программирования. Robert очень подробно объяснил чуть ли не каждое ключевое решение, принятое при проектировании и разработке Beam, основной реализации виртуальной машины Erlang, а также освятил несколько альтернативных воплощений этого языка в жизнь.

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

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

Я немного опоздал на первый доклад от mail.ru, но, судя по всему, не много потерял - они снова пропагандировали свое детище, Tarantool, на этот раз в сравнении с Redis. Штука довольно интересная, но каких-то особых преимуществ перед последним я так и не увидел или, может быть, не хотел увидеть.

Представители Skype рассказывали о своем опыте работы с Redis и, в частности, о конкретном кейсе с решардингом "на живую" - довольно увлекательно, красивое решение с фильтрующим replication proxy, которое правда скорее всего скоро потеряет актуальность при текущем направлении развития проекта Redis. Сам активно им пользуюсь, но что-то подобное проделывать пока не приходилось.

Владимир Климонтович рассказал довольно подробно о проекте Apache Cassandra, правда ничего нового я не услышал - все что было сказано легко можно найти на официальном сайте проекта, что я в свое время и сделал.

На докладе OpenStat я тупо сидел в Интернете, особо не вслушиваясь - после их же доклада в прошлом году слушать еще раз примерно о тех же заморочках с Apache Hadoop было не особо интересно, особенно если учесть, что я в 2008-м с ним очень плотно работал.

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

Олег Илларионов Выступление Вконтакте стало снова лучшим на конференции, не смотря на отсутствие Павла Дурова. Олег Илларионов, хоть и является, как я понял, просто разработчиком, но хорошо ориентируется в технической реализации проекта и очень доходчиво рассказывает - представлять компанию на HL++ его отправляют совершенно оправданно. Основная тема доклада звучала как AJAX Layout и по сути отражала основное техническое изменение на Вконтакте за последний год: навигация через # плюс обновления и чат в реальном времени. Опять же, не могу похвастаться реализацией чего-то подобного на своей практике, как-то не приходилось, но давно хотелось выделить на это время, так что информация оказалась невероятно актуальной. Про серверную часть было сказано очень мало: чистый C и epoll, мол при их нагрузках по-другому никак. Хотя мне кажется Erlang справился бы лучше, правда не факт, что у них есть соответствующие разработчики. Основной ад данной задачи находится на клиентской стороне:

  • кроссбраузерное сохранение работы кнопок вперед/назад/перезагрузить без полной перезагрузки страниц,
  • кроссбраузерное же постоянное соединение браузера с сервером (используют long polling, websocket по очевидным причинам пока практически не применим),
  • сохранение корректной работы с выключенным JavaScript и в "необычных" браузерах,
  • выдача нового контента частями через скрытый iframe для улучшения визуальной скорости загрузки страницы,
  • эмуляция процесса загрузки страницы через динамический favicon,
  • очистка памяти при переходах между страницами,
  • использование одного постоянного соединения для нескольких вкладок посредством локального хранилища из HTML5

...и многие другие проблемы и задачи - все это довольно подробно Олег разложил по полочкам. Помимо этого он рассказал как реализован поиск по друзьям внутри браузера через выгрузку списка друзей в JSON, а также целая куча вопросов о том о сем, например про почту и все ту же "волшебную" базу данных на C. Новую статью про Вконтакте я в этом году не планировал, так что особо не записывал, хотя возможно и зря. Выступление Олега слегка продлили, так как следующий докладчик куда-то пропал, но по факту когда он нашелся выступление про новомодный Node.js оказалось не очень и большая часть зала перекочевала "в кулуары" дальше слушать Олега и задавать ему вопросы.

После кофе-брейка я вернулся в первый зал, где продолжалась эпопея с хранением данных. Одноклассники наконец-то поняли, что их старинное решение на BerkleyDB + Java RMI - не панацея от всех болезней, и перешли на другое решение для одной из задач, хранения изображений, не менее самопальное. Задумка была в основном в замене BerkleyDB на традиционные блобы фиксированного размера, аналогично решению в Facebook, при этом остальная схема работы изменилась не сильно - доступ к системе через HTTP посредствам Tomcat, внутри правда отказались от RMI в пользу сокетов и собственного протокола, для хранения конфигурации - Apache Zookeper, типичный для Java-мира наборчик. Из интересных решений - использование JBOD с созданием уникального идентификатора винчестера и возможностью переткнуть любой из них в другой сервер. В остальном ничего особенного: лог транзакций, репликация, индекс в памяти посредством собственной реализации HashMap и т.п.

Последний доклад, который я послушал, был слегка похож на предыдущий, с той лишь разницей, что хостинг-провайдер Clodo не стал изобретать велосипед и воспользовался "полуфабрикатом" под названием Openstack Swift - хранилище бинарных объектов с HTTP интерфейсом, которыми вполне могут быть и изображения. Доклад был о том как они его допиливали, в основном посредством использования nginx и его модулей. К слову, посмотрел их цены (возможно скоро Insight IT придется снова переезжать, приглядываюсь к вариантам) и был разочарован, очень существенно выше рынка не смотря на неизвестность компании, в такой ситуации наоборот логичнее было бы демпинговать...

В целом впечатления от конференции положительные, процент стоящих докладов близок к 20-30%, что для технических конференций очень прилично. Организация и контингент тоже на уровне. Но нельзя не сказать про ценник (21к за живое участие и 11к за онлайн-трансляцию) - он явно рассчитан на оплату работодателями и посещение конференции за собственный счет определенно того не стоит. Альтернативные варианты попасть на мероприятие хоть и есть, но довольно ограничены - каждый раз приходится изворачиваться, чтобы попасть бесплатно при отсутствии работодателя. Хотя может быть надо было просто заморочиться и попасть в список "информационной поддержки"...

Кстати, в этом году в первый раз ко мне начали подходить незнакомые люди и благодарить за блог - очень приятно :)

До встречи на GDD через пару дней!