Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Недавно были анонсированы сразу два мероприятия о разработке многопоточных и распределённых систем: конференция Hydra (11-12 июля) и школа SPTDC (8-12 июля). Люди, которым близка эта тема, понимают, что приезд в Россию Лесли Лэмпорта, Мориса Херлихи и Майкла Скотта — важнейшее событие. Но возникали другие вопросы:
- Чего ждать от конференции: «академичности» или «продакшна»?
- Как соотносятся школа и конференция? На кого рассчитано то и другое?
- Почему они пересекаются по датам?
- Будут ли они полезны тем, кто не посвятил всю жизнь распределённым системам?
Обо всём этом хорошо известно человеку, благодаря которому Hydra появилась: нашему директору Алексею Федорову (23derevo). Он и ответил на все вопросы.
Формат
— Вступительный вопрос для тех, кто далёк от распределённых систем: о чём оба мероприятия?
— Глобальная задача в том, что вокруг нас существуют сервисы с большими объёмами операций и сложными вычислительными задачами, которые не сделать на одном компьютере. Значит, машин должно быть несколько. А дальше возникают вопросы, связанные с тем, как грамотно синхронизировать их работу и что делать в условиях не самой высокой надёжности (потому что оборудование ломается, а сеть отваливается).
Чем больше машин, тем больше возникает точек отказа. Что делать, если на одни и те же вычисления разные машины выдают разные результаты? Что делать, если на какое-то время пропала сеть и часть вычислений стала изолированной, как потом всё это объединять? В общем, миллион связанных с этим проблем. Новые решения — новые проблемы.
В этой области есть совсем прикладные направления, а есть более научные — то, что ещё не стало мейнстримом. Хочется поговорить про то, что происходит и на практике, и в науке, а главное — на их стыке. Вот про это и будет первая конференция Hydra.
— Хочется разобраться с тем, что есть конференция, а есть летняя школа. Как они соотносятся? Если для участников школы сделана скидка на посещение конференции, то почему они пересекаются по датам, так что нельзя посетить сразу всё без потерь?
— Школа — это камерное мероприятие на 100–150 человек, куда приезжают ведущие специалисты со всего мира и в течение пяти дней читают лекции. И возникает ситуация, когда в Петербурге на пять дней собираются светила мирового уровня, готовые что-то рассказывать. А в таком случае напрашивается решение организовать не только камерную школу, но и более масштабную конференцию.
Провести такую школу можно только летом, в июле, потому что среди этих специалистов есть действующие профессора ВУЗов, и они в другое время просто не готовы: у них студенты, дипломы, лекции и так далее. Формат школы — это пять будних дней. Известно, что летом на выходных люди любят куда-нибудь уезжать. Значит, конференцию мы не можем сделать ни в выходные до школы, ни в выходные после школы.
А если продлевать всё ещё на пару дней до или после выходных, то магическим образом пять дней пребывания специалистов в Петербурге превращаются в девять. И они к этому не готовы.
Поэтому единственное решение, которое мы нашли — это просто провести конференцию параллельно школе. Да, это порождает некоторые проблемы. Есть люди, которые хотят и на школу, и на конференцию, и им придётся пропустить часть лекций там или там. Хорошая новость в том, что всё это будет проходить в соседних залах, можно будет бегать туда-сюда. И ещё одна хорошая сторона в наличии видеозаписей, на которых позже можно спокойно посмотреть то, что пропустил.
— Когда два мероприятия проходят параллельно, у людей возникает вопрос «какое из них мне нужнее-то». Чего именно ожидать от каждого, и в чём различия?
— Школа — это чисто академическое мероприятие, классическая научная школа на несколько дней. Кто сам занимался наукой и имел какое-то отношение к аспирантуре, представляет, что такое академическая школа.
Обычно такие академические мероприятия не очень хорошо организованы в силу отсутствия ивентной экспертизы у людей, которые это делают. А мы всё-таки довольно опытные ребята, так что можем довольно грамотно всё сделать. Я думаю, что с организационной точки зрения SPTDC будет на голову выше любой научной или научно-практической школы, которую вы когда-либо видели.
Школа SPTDC — это такой формат, где каждая большая лекция читается две пары: «полтора часа — перерыв — полтора часа». Надо понимать, что в первый раз участнику может быть непросто: когда два года назад эта школа проводилась впервые, мне самому было непривычно, я несколько раз примерно в середине двойной лекции выключался, и потом уже трудно было понять, что происходит. Но это очень зависит от лектора: хороший лектор все три часа очень интересно рассказывает.
Конференция Hydra (Гидра) — более прикладное мероприятие. Там будет несколько светил науки, приехавших читать лекции на Школе: от Лесли Лэмпорта, чьи работы лежат в основе самой теории многопоточных и распределённых систем, до Мориса Херлихи, одного из авторов знаменитого учебника по concurrency «The Art of Multiprocessor Programming». Но на конференции мы попытаемся поговорить о том, как в реальности реализуются те или иные алгоритмы, с какими проблемами инженеры сталкиваются на практике, у кого что получается и не получается, почему одни алгоритмы применяются на практике, а другие нет. Ну и конечно, поговорим о будущем разработки многопоточных и распределенных систем. То есть дадим такой cutting edge: о чём сейчас говорит мировая наука, вокруг чего крутятся мысли ведущих инженеров, и как это всё это друг с другом стыкуется.
— Раз конференция более прикладная, то там будут не только академические светила, но и спикеры «из продакшна»?
— Однозначно. Мы пытаемся смотреть на всех «больших»: Google, Netflix, Яндекс, Одноклассники, Facebook. Есть специфические забавные проблемы. Например, все говорят: «Netflix — это распределённые системы, чуть ли не половина трафика США, очень круто», а когда начинаешь смотреть на их реальные доклады, статьи и публикации, наступает лёгкое разочарование. Потому что, хотя это безусловно мировой уровень и там есть cutting egde, его там меньше, чем кажется на первый взгляд.
Возникает интересная дилемма: можно позвать представителей больших именитых компаний, а можно позвать кого-то, уже известного нам. В реальности экспертиза есть и там, и там. И мы скорее пытаемся вытаскивать не «людей из очень крупных брендов», а очень крупных специалистов, конкретных людей.
Например, будет Мартин Клеппман, который в своё время навёл шороха в LinkedIn, а также выпустил хорошую книгу — пожалуй, одну из базовых книжек в области распределенных систем.
— Если человек работает не в Netflix, а в компании попроще, он может задумываться: «стоит мне на такую конференцию идти, или там всякие нетфликсы друг с другом разговаривают, а мне делать нечего?»
— Скажу так: когда я три с небольшим года работал в Oracle, самые потрясающие и интересные вещи я слышал на кухне и в курилках, когда там собирались коллеги, делающие те или иные куски платформы Java. Это могли быть люди из виртуальной машины, или из отдела тестирования, или из performance concurrency — например, Лёша Шипилёв и Серёжа Куксенко.
Когда они между собой начинали что-то обсуждать, я обычно просто слушал, открыв рот. Для меня это были поразительные и неожиданные вещи, о которых я даже не задумывался. Естественно, сначала я не понимал 90% того, о чём они говорят. Потом непонятного стало 80%. А после того, как я сделал домашнее задание и прочитал несколько книжек, это число сократилось до 70%. Я до сих пор не понимаю очень многого из того, о чём они между собой говорят. Но, сидя в уголке с чашкой кофе и подслушивая, я немного начал понимать, что происходит.
Поэтому, когда между собой разговаривают Google, Netflix, LinkedIn, Однокласники и Яндекс, это не значит, что это что-то непонятное и неинтересное. Наоборот, надо внимательно слушать, потому что это — наше будущее.
Конечно, есть и люди, которым это всё не надо. Если не хотите в этой теме развиваться, не надо идти на эту конференцию, вы там просто потеряете время. А вот если тема интересна, но в ней ничего не понимаете или пока только присматриваетесь — значит, надо приходить, потому что ничего подобного вы не найдёте нигде. Причём я думаю, что не только в России, но и в мире. Мы пытаемся сделать конференцию, которая будет не просто лидером по этой теме в России, а вообще номером один в мире.
Это не самая простая задача, но когда у нас есть такой потрясающий шанс собрать сильных спикеров со всего мира, то я многое готов отдать, чтобы это получилось сделать. Конечно, некоторые из тех, кого мы позвали на первую Гидру, не смогут приехать. Но я скажу вот что: мы никогда не начинали новую конференцию с таким мощным составом. Кроме, разве что, самого первого JPoint шесть лет назад.
— Хочется развить слова «это наше будущее»: тема позже затронет и тех, кто сегодня о ней не думает?
— Да, я уверен в этом. Поэтому мне кажется очень правильным начинать обсуждать её как можно быстрее. Скажем, теория многопоточности появилась довольно давно (в 70-х уже вовсю выходили работы), но долгое время они были уделом узких специалистов, пока в начале двухтысячных не появился первый пользовательский двухъядерный компьютер. А сейчас у нас всех многоядерные сервера, ноутбуки и даже телефоны, и это мейнстрим. Потребовалось около 10 лет, чтобы это стало массовым, чтобы люди поняли, что этот дискурс — не удел узкого круга специалистов.
И примерно то же самое мы сейчас наблюдаем с распределёнными системами. Потому что базовые решения вроде распределения нагрузки, обеспечения отказоустойчивости и тому подобного сделаны уже довольно давно, но что такое, например, распределённый консенсус или Paxos, знает очень мало людей.
Одна из важнейших задач, которые я ставлю перед этим мероприятием — больше и больше погружать инженеров в эту дискуссию. Надо понимать, что на конференциях не просто обсуждаются какие-то темы и решения, но и возникает тезаурус — единый понятийный аппарат.
Я вижу своей задачей создать площадку, на которой все желающие могут всё это обсуждать, делиться опытом и мнениями. Чтобы у нас с вами возникло единое понимание, что делает один алгоритм, что делает другой, какой из них лучше при каких условиях, как они друг с другом связаны и так далее.
Очень интересная вещь связана с той же многопоточностью. Когда наши друзья из Oracle (прежде всего, Лёша Шипилёв и Сергей Куксенко) стали активно рассказывать про перформанс и, в частности, про многопоточность, буквально через два-три года эти вопросы начали задавать на собеседованиях в компаниях, люди это начали обсуждать в курилках. То есть вещь, которая была уделом узких специалистов, вдруг стала мейнстримом.
И это очень правильно. Как мне кажется, мы помогли этим ребятам популяризовать всю эту проблематику, действительно важную, полезную и интересную. Если раньше никто не задумывался, как Java-сервер обрабатывает запросы параллельно, то теперь у людей хоть на каком-то уровне возникло понимание, как это всё работает. И это замечательно.
Задача, которую я вижу сейчас — примерно то же самое проделать с распределёнными системами. Чтобы все примерно понимали, что это такое, откуда растут ноги, какие там задачи и проблемы, чтобы это тоже стало мейнстримом.
У компаний огромный запрос на людей, которые что-то в этом понимают, а таких людей мало. Чем больше мы создаём вокруг этого контента и возможности научиться этому, чем больше мы даём возможностей людям задавать вопросы, которые витают в воздухе, тем больше у нас шансов как-то продвинуться в этом направлении.
Предыстория
— Конференция проходит впервые, а вот школа не в первый раз. Как это всё возникло и развивалось?
— Это интересная история. Два года назад, в мае 2017 года, мы сидели в Киеве с Никитой Ковалем (ndkoval), специалистом в области многопоточности. И он мне рассказал, что в Петербурге пройдёт «Summer School in practice and theory of concurrent computing».
Тема многопоточного программирования в последние три года моей инженерной карьеры была фантастически интересна. А тут выяснилось, что летом в Питер приезжают очень-очень известные люди, те же Морис Херлихи и Нир Шавит, по учебнику которых я учился. И к этому имели отношение многие мои знакомые — например, Рома Елизаров (elizarov). Я понял, что просто не могу пропустить такое мероприятие.
Когда стало понятно, что программа у школы 2017 года будет классная, возникла мысль, что лекции обязательно надо записывать на видео. У нас в JUG.ru Group было полное понимание, как должны записываться такие лекции. И мы вписались в SPTCC как ребята, которые сделали для школы видеосъёмку. В итоге все лекции школы лежат на нашем YouTube-канале.
Я стал общаться с Петром Кузнецовым, который был главным идеологом и организатором этой школы, и с Виталием Аксёновым, который помогал организационно всё это делать в Петербурге. Я понял, что это фантастически здорово и интересно и, наверное, очень плохо, что всего 100 участников могут прикоснуться к прекрасному.
Когда Пётр задумался, что надо снова делать школу (в 2018 году не было сил и времени, поэтому решил делать в 2019 году), стало понятно, что мы можем ему помочь, просто сняв с него все организационные вещи. Так и происходит сейчас, Пётр занимается контентом, а мы всем остальным. И это кажется правильной схемой: наверное, Петру интереснее программа, чем «где и когда все будут обедать». А мы хорошо умеем работать с залами, площадками и так далее.
В этот раз вместо SPTCC школа называется SPTDC, не «concurrent computing», а «distributed computing». Соответственно, примерно в этом и разница: в прошлый раз в школе не говорили про распределённые системы, а на этой будем про них активно говорить.
— Поскольку школа проходит не в первый раз, уже можно делать какие-то выводы из прошлого. Что получилось в предыдущий раз?
— Когда делалась первая школа два года назад, ожидалось, что будет академическое мероприятие, прежде всего интересное студентам. Причём студентам со всего мира, потому что школа только на английском языке, и думалось, что приедет существенное количество иностранных студентов.
По факту оказалось, что пришло очень много инженеров из больших российских компаний вроде того же Яндекса. Был Андрей Паньгин (apangin) из Одноклассников, были ребята из JetBrains, которые активно занимаются этой темой. В общем, там было много знакомых лиц из наших компаний-партнёров. Я совершенно не удивлён, прекрасно понимаю, почему они туда пришли.
Собственно, у организаторов были ожидания, что на Школе будут академические люди, а внезапно пришли люди из индустрии, и тогда мне стало понятно, что в индустрии есть спрос.
Если мероприятие, которое почти никак и нигде не продвигалось, с первого раза по щелчку пальцев собрало аудиторию взрослых людей, значит, на самом деле интерес есть. Мне кажется, запрос на эту тему назрел.
Морис Херлихи на встрече JUG.ru
— Помимо школы, Морис Херлихи в 2017-м выступил в Петербурге на встрече JUG.ru, рассказав про транзакционную память, и это немного ближе к конференционному формату. Кто тогда пришёл — те же люди, которые обычно на митапы JUG.ru приходят, или другая аудитория?
— Это было интересно, потому что мы понимали, что у Мориса будет общий доклад, а не специфичный для Java, и сделали чуть более широкий анонс, чем обычно делаем по своим подписчикам JUG-новостей.
Пришло очень много знакомых мне людей из сообществ, которые вообще не про Java: из .NET-тусовки, из JavaScript-тусовки. Потому что тема транзакционной памяти не относится к конкретной технологии разработки. Когда приезжает специалист мирового уровня рассказать про транзакционную память, упускать возможность такого человека послушать, задать ему вопросы — просто преступление. Это просто производит мощное впечатление, когда человек, по книжке которого ты учишься, к тебе приезжает и что-то тебе рассказывает. Просто фантастика.
— И какой был фидбэк по итогам? Не оказался ли для людей из индустрии подход слишком академическим и непонятным?
— Отзывы о докладе Херлихи были хорошими. Люди писали, что он очень просто и ясно излагает, что не ожидалось от академического профессора. Но надо понимать, что мы его не просто так позвали, это всемирно известный специалист с большим опытом выступлений и с бэкграундом из кучи книжек и статей. И, наверное, он во многом стал известным благодаря своему умению доносить материал до людей. Поэтому в этом ничего удивительного.
У него нормальный понятный английский, и он, конечно, здорово разбирается в том, о чём рассказывает. То есть ему можно задавать совершенно любые вопросы. В основном народ жаловался, что мы дали Морису на доклад слишком мало времени: два часа для такого мало, надо ещё как минимум два. Ну, что успели за два часа, то успели.
Мотивация
— Обычно JUG.ru Group занимается масштабными мероприятиями, а эта тема выглядит более узкоспециализированной. Почему решено было браться за неё? Есть готовность провести менее масштабное мероприятие, или и на такую тему может собраться много зрителей?
— Действительно, когда ты делаешь некое мероприятие и задаёшь некий уровень дискуссии, всегда встаёт вопрос, насколько массовая эта дискуссия. Какому количеству людей — десяти, ста или тысяче — это интересно. Возникает трейд-офф между массовостью и глубиной. Это совершенно нормальный вопрос, и его каждый решает по-разному.
Мне в данном случае хочется сделать мероприятие «под себя». В многопоточности я ещё что-то понимаю (на конференциях выступал с лекциями на эту тему, несколько раз студентам что-то рассказывал), а вот в распределённых системах я профан: читал некоторые статьи и видел несколько лекций, но даже ни одной полноценной книжки не прочитал.
У нас есть программный комитет, состоящий из экспертов в этой области и способный оценить точность докладов. А я со своей стороны пытаюсь сделать это мероприятие таким, на которое я со своим отсутствием экспертизы сам хотел бы пойти. Получится ли заинтересовать массовую публику, я не знаю. Наверное, на этом этапе это не самая главная задача этого мероприятия. Сейчас важнее сформировать наиболее сильную программу в сжатые сроки.
Наверное, сейчас я ставлю перед командой не задачу «собрать с первого раза тысячу человек», а «сделать, чтобы конференция появилась». Это может звучать не очень бизнесово и в чём-то наивно, хоть я и совсем не альтруист. Но я могу иногда позволять себе некоторые вольности.
Есть вещи поважнее денег и за пределами денег. Мы и так делаем большое количество классных масштабных мероприятий на тысячу человек и больше. Наши Java-конференции давно перевалили за тысячу человек, а теперь и другие мероприятия эту планку перепрыгивают. То есть вопрос того, что мы стали опытными и известными организаторами, уже не стоит. И, наверное, то, что мы на этих мероприятиях зарабатываем, даёт нам возможность реинвестировать в то, что интересно нам самим, и в данном случае — лично мне.
Делая это мероприятие, я иду вразрез с некоторыми принципами нашей организации. Например, обычно мы стараемся готовить конференции очень сильно заранее, а сейчас у нас очень сжатые сроки, и мы финализируем программу всего за месяц до самого мероприятия.
И ещё это мероприятие будет на 70-80% англоязычным. Здесь тоже всегда возникает дискуссия о том, надо быть ближе к народу (которому понятнее, когда большинство докладов на русском языке) или ко всему миру (потому что технический мир англоязычный). Обычно мы стараемся делать много докладов на русском. Но не в этот раз.
Более того, некоторых наших русскоязычных спикеров мы тоже будем просить рассказывать по-английски. Это в некотором смысле абсолютно антиюзерский и негуманный подход. Но надо понимать, что русскоязычной литературы по этой теме сейчас нет, и любой человек, который вообще этим интересуется, вынужден читать по-английски. А значит, как-то с английским способен разобраться. Если в случае с JavaScript, Java или .NET есть куча людей, которые не очень хорошо знают английский, но при этом могут классно программировать, то, наверное, распределённые системы — та область, в которой сейчас просто никак по-другому не научиться.
Мне очень хочется провести этот эксперимент: как будет восприниматься публикой в России англоязычное на 70–80% мероприятие. Зайдёт оно или нет? Мы не знаем этого заранее, потому что мы не делали такого никогда. Но почему бы не сделать? Скажем так: это один большой эксперимент, который я просто не могу не провести.
Программа школы SPTDC уже опубликована целиком, а в случае с Hydra уже известна заметная часть, и вскоре мы опубликуем разбор всей программы конференции.