Итак, друзья, на прошлой неделе в москве прошла конференция разработчиков высоко-нагруженных систем highload-2007, и я наконец-то напишу отчёт об этом мероприятии.
Полагаю, что вы уже слышали основные претензии к организаторам насчёт количества участников, которое привело к массе неудобств. Это и толкучка при регистрации (я в отличии от некоторых принципиально отстоял в очереди, хоть и был записан в "гуру"), толкучка в фойе на кофе-брейках и на обеде (борьба за еду порой напоминала безобразные сцены очередей в винный отдел времен моей юности), ну а, пардон, о сортире я вообще молчу. Здесь можно было бы пуститься в философские изыскания на тему сознания, бытия и повадок в обществе с ограниченным доступом к жизненно важным ресурсам, но я давно заметил, что независимо от уровня интеллекта или общественной позиции эти размышления наводят лишь тоску на читателя. Что явилось причной сих неудобст - жадность ли организаторов или благородное желание удовлетворить невиданный спрос - коллективу нашего блога неизвестно. В-общем, делегаты это всё дружно схавали, переварили, расслабились и постарались получить максимум удовольствия.
Видео-трансляции с highload снова делал rutube, и большинство докладов (или даже все - я просто не проверял) можно посмотреть в
специально отведенном для этого месте. Не все разобраны и подписаны, но думаю, что со временем можно будет легко разобраться, что к чему. Конференция проходила в два потока, поэтому иногда приходилось выбирать между двумя потенциально интересными выступлениями, но лично для меня почти всегда выбор был почти очевиден. К сожалению, многие доклады не оправдали моих надежд, но многие я высидел от начала до конца, делая пометки, по которым собственно и составлен данный отчет. Итак, приступим. Заранее предупрежу, что в программе конференции были накладки - мои конспекты отражают хронологию, но запланировано было многое в другом порядке и в другие дни. Далее, человек я прямой, поэтому если я че-то не понял, я так и говорю - не понял, а если мне кажется, что доклад говно - я так и говорю: говно. Все докладчики - милые, добрые зайки, прошу на меня не обижаться. Как правило доклад получается неудачным не потому что неудачен автор, а потому что неудачна тема, или неудачна подача. В-общем, ничего личного, господа.
Техники масштабирования баз данных для Web приложений/ Петр Зайцев (MySQL Perfomance). Зайцев всегда будет украшением любой конференции, но его доклад можно будет назвать полностью успешным при одном условии - на доклад ему надо дать полдня. Тогда он возможно успеет рассказать всё, он чём хотел, или даже вдвое больше, и вы будете в полнейшем восторге - в таком же, в каком народ пребывает после его семинаров. Короче, к самому интересному моменту - к шардингу - Петр приступил минут за пять до конца, так что нам так и не удалось узнать, насколько подробно он собирался раскрыть эту тему. Вообще, шардинг как таковой - краеугольный камень масштабирования, должен быть центральной темой любого доклада об этом самом масштабировании. По сути шардинг - элементарнейшая вещь, принципов разделения для СУБД всего можно придумать от силы пару-тройку, но о том, как это делается конкретно - никто не говорит. Пока. А поскольку в большинстве решений шардинг накладывает определенные требования на логику приложения, я уже очень давно жду, что появятся соответствующие фреймворки - однако все конторы, в которых такие штуки пишутся, работают над какими-нибудь супер-мега-крупными социальными проектами и открывать свои подходы не спешат. А теперь внимаение - слив! Вы можете представить мое удивление, когда ровно во время этого доклада ко мне наклоняется, значит, наш главный и говорит, что собирается пустить наше хозяйство вокруг шардинга и репликации в open source, поскольку рано или поздно все так будут делать, а он как главный мэнтейнер этого добра уже заколебался править свои баги, и как было бы здорово если бы это всё делали другие, не отнимая наше время, да причём бесплатно. Я такой подход, как вы понимаете, руками и ногами поддерживаю (более того, подобные эксперименты мы успешно применили в отношении нашего шаблонного движка
blitz), так что если мы не передумаем и найдем в себе силы причесать наш код - ждите, граждане, очередных сенсаций ;) Что касается Зайцева, то одну полезную вещь из доклада я всё-таки подчерпнул. Петр напомнил, что при репликации слейв всасывает бинлог одним тредом, что естественно накладывает ограничения на произвродительность репликации. Вроде бы в новых версиях это не то починено, не то собирается быть починенным, но пока это всё в глубокой бете.
Oracle Real Application Clusters / Владимир Демкин (Oracle)
При всем уважении к компании Oracle - как к компании Oracle, так и как к спонсору мероприятия - местами доклад был чистейшим маркетинговым булшитом, и особенно это касалось разговора о кластере. Ко всему прочему доклад ещё и длился чуть ли не полтора часа, чем изрядно успел меня притомить. Тем не менее, несколько прикольных фактов всё-таки удалось подчерпнуть. Например, о функции database replay: при включении определенного режима можно сохранить все запросы и потом "проиграть" их на тестовом сервере, причем существует настройки, которыми можно управлять интернсивностью "проигрывания". Хитом доклада стала оговорка "сделайте commit чтобы откатить транзакцию". Больше ничего сообщить про доклад не могу. Вообще, хочеться дать совет компании Oracle: подумайте об аудитории и о том, кто ходит на такие конференции. Например, Microsoft давно уже понял, что единственное, что они могут сделать на подобных конференциях, куда хотят в-основном девелоперы - это повышать лояльность. Рассказывать какие-нибудь прикольные штуки. Быть может, абсолютно бесполезные - но веселые и интересные. Улыбаться и евангелизировать. А макретинговый булшит на таких конференциях не работает.
Особенности обработки больших объемов данных / Александр Таксиков (LiveInternet)
Это был странный доклад о том, что если выкинуть базы и сделать всё ручками, то всё не так уж и сложно, но зато быстро - огого. Меня до сих пор не покидает ощущение, что эту мысль можно было бы донести и за более короткий срок, чем было отведено докладчику, и я бы ещё понял, если бы автор снабдил свой доклад большим количеством практических примеров. Однако примеров было совсем немного, поэтому я остаюсь в растерянности - то ли я совершенно ослаб мозгом, окончательно растеряв способности к телепатии и реконструкции, то ли одно из двух.
Sphinx - система полнотекстового поиска по СУБД, применения / Андрей Аксенов
Андрей, разработчик
Sphinx, рассказал о своём поисковом движке, и этот рассказ был одним из самых приятных на конференции. Sphinx - очень интересный проект, я давно к нему присматриваюсь, как-то раз уже о нёт писал, в-общем насколько я могу судить, это чуть ли не первый открытый проект, где реализована кластеризация обратного индекса и сам движок умеет резать и сливать данные. Всё написано на С++, индексация и поиск достаточно быстрые, причем настолько, что запросом к sphinx'у иногда заменяют выборки через базу, для этого при индексации добавляется "фальшивое" поисковое слово, которое соотвествует атрибуту, по которому производится выборка. Сам автор узнал о таком использовании своего движка от кого-то из пользователей, но теперь говорит, что и сам иногда прибегает к такому методу. Насколько мне известно, Аксенов активно сотрудничает с Зайцевым, и они перевели на shpinx поисковые системы для многих клиентов. Подробно о кейсах Андрей рассказать не успел, но краткая информация есть в материалах - миллионы запросов в сутки, вполне себе крупные проекты. В-общем, доклад оставил очень положительное впечатление.
Архитектура Яндекс-Поиска/ Анатолий Орлов (Яндекс)
Толя с самого начала выдал примерно следущее: "Это не пиарная презентация про то, как у нас всё хорошо, а презентация которая рассказывает, как у нас всё есть". И это правильноо. По-моему это был один из лучших технических докладов, я принципиально не буду пересказывать, о чем говорил Толя - вот
видео, найдите полчаса свободного времени, оно того стоит. Придется, правда, привыкнуть к скороговоркам докладчика, но это пустяки. Ну и конечно, главный приз "отжиг highload-2007" за большие и маленькие циски - при показе этого слайда какой-то шутник подставил руки в проектор и сделал характерные хватательно-мнущие движения. Кстати, о цисках. Девушек на конференции снова было всего несколько человек. Да, в-общем, из четырех докладов Яндекса это был один из двух действительно интересных с технической точки зрения. Вторым интересным был доклад Оболенского, но насколько я понял это был пересказ того, что было на РИТе. Другие два доклада нельзя сказать чтобы были плохими - ну просто мне они показались "ни о чём".
Практические методики нагрузочного тестирования, опыт тестирования производительности веб-приложений / Тимур Хайруллин (Яндекс)
У меня в конспекте записано: приятный доклад приятного человека о чем-то приятном. И всё. К сожалению, мне было очень скучно. Если бы в названии доклада не было слова "практические" - я бы не возникал. Однако оно там есть. Но доклад на мой взгляд вышел весьма поверхностный. Возможно, именно этого и хотел докладчик - донести до аудитории, как оно должно быть вообще, по-правильному, однако наверняка большинство хотело знать одного: как вы ребята там в вашем Яндексе тестируете, че вы там вообще делаете, когда тестируете, с какими проблемами сталкиваетесь, и так далее. Ну примеры рассказали бы какие-нибудь. А то единственный "секретный слайд" на весь доклад и масса прописных истин о том, как оно у вас доджно быть. Где практика-то? Где опыт, сын ошибок трудных? Я попробовал было попытать Тимура в кулуарах - без толку. Короче, если это NDA, то уж это точно глупость полная. Скорее половина доклада Орлова попадает под NDA, чем методики тестирования, какие бы крутые они ни были. В чём я, кстати, очень сомневаюсь ;) Вот. А сам Тимур хороший, мы там когда все напились потом на кораблике, было очень весело. Но доклад мне не понравился.
Пресловутая компонента ранжирования Search Engines / Дмитрий Крюков (Группа Компаний Стек)
Крюков - это человек, который сделал Рамблер, и хотя бы по этой причине нужно было идти на его доклад о методике расчета page rank. У Рамблера никакого page rank тогда не было, и появился он значительно позже (кажется, в 2003). Но к тому времени Крюков в Рамблере уже не работал, и хотя Стэк сейчас больше специализируется на системной интеграции, у них был проект году в 2004-м, кажется, назывался поисковая система Turtle. По-моему сейчас проект скорее мертв, чем жив, маркетингом этого проекта уж точно всерьёз никто не занимается, но ресерч был, удовольствие в процессе получены, желание поделиться есть. В 98-м году, когда Пейдж с Брином опубликовали свою знаменитую работу, в Рамблере подумали: "о, круто", наваяли быстренько программку, быстренько посчитали (там всего было не более 10 млн. документов) - и забыли. Во-первых, решили что слишком просто искуственно воздействовать на весовые коэффициенты (не так сложно, впрочем, это делать и сейчас). А во-вторых интернет тогда был очень "небольшой", и согласно данной метрики вес страниц от всяких РОЛ был значительно выше, хотя они всего лишь были сервис-провайдерам, что разработчики резонно посчитали несправедливым. Об этих задачах с инженерной точки зрения никто не рассказывает, кстати, поскольку это уже вполне себе программа действий. Сложность там понятно в чём - коллекции большие (в рассмотренном примере - 400 миллионов), рассчитать по этому делу page rank - весьма нетривиальная инженерная задача, а сделать это так, чтобы оно расчитывалось за конечное время на ещё больших коллекциях - тем более. Ну речь в докладе шла о том, как рассчитать это коэффициенты с учетом того, что коллекция документов размазана по куче машин, и сделать это максимально эффективно. Я не буду вдаваться в подробности, к тому же сидел я достаточно далеко и не всё увидел, но и в
видео-материалах качество отвратительное, и в материалах этого доклада пока нет - так что подробно посмотреть, как режем матрицы коэффициентов коллекции и как считаем пока не получится. Я думаю, что со временем, материалы будут доступны на сайте конференции - тогда можно будет посмотреть. Очень рекомендую, доклад по-моему получился весьма интересный.
Тестирование производительности кластеризованной масштабируемой "вширь" системы, моделирование её и оценка "наработки на отказ" / Константин Андрюнин
Константин Анрюнин работает в Инфоне, и одно это было уже интересно (через Инфон построены все смс-сервисы Мамбы, например). Стоит сразу отметить, что название доклада было выбрано неудачно. В докладе шла речь исключительно о методах моделирования сложных систем, состоящих из многих компонент, и тестирование здесь подразумевается именно в контексте моделирования, то есть это никакое не тестирование реально работающей системы, а именно моделирование. Наверное, это был единственный доклад на конференции, после которого не прозвучало ни одного вопроса - вообще ни одного. Это не совсем справедливо, поскольку это мог бы быть очень интересный доклад, и пусть сама тема не является сугубо практической - лично мне такие штуки всегда были интересны. Но к сожалению, введение в методику построения моделей, как именно и что мы считаем - вот все эти вопросы были рассмотрена очень бегло, и я например просто не успел воткнуть, как и что собственно мы моделируем - в то время как докладчик уже перешел к более детальным вопросам, после чего по-моему аудитория уже окончательно потеряла интерес к предмету. Жаль. Я банально забыл потрепаться с докладчиком в кулуарах, надеюсь что как-нибудь мы пересечемся, и я хотя бы поспрошаю какие-нибудь методические материалы, из которых можно было бы понять что же это за моделирование такое из каких этапов оно состоит и так далее. Вообще, я бы рекомендовал Константину сделать ещё один доклад на похожую тему, только побольше времени уделив простейшим "базовым" моделям и на их примере показав, как это дело моделировать, какие характеристики получать и так далее. Поняв, как работает каждый компонент в отдельности, значительно легче воспринимать рассказ о системе целиком.
Спасибо за то, что вы дочитали до конца. На этом пока всё, это были лишь доклады понедельника, продолжение о докладах вторника следует. Да, и друзья, маленькое рекламное объявление. Нам по-прежнему
нужны php/mysql разработчики. Работать в отличной команде, под моим руководством. Все контакты по ссылке, с удовольствием отвечу на любые вопросы.