Конец этой недели, 11 и 12 мая, я провел в Москве на конференции Application Developer Days 3 (ADD-3). Поэтому решил написать отчет сразу по горячим следам. Я побывал на этой конференции впервые, хотя порывался съездить и в прошлом году. В этот раз я был с докладом на тему облачной разработки, но об этом позже.
Лететь из Киева мне пришлось в одиночку, потому что никто из знакомых туда не собирался. Это немного расстроило. Возможно, причиной стала высокая стоимость участия и отсутствие дефицита в мероприятиях в самой Украине, к чему мы сами сильно прикладываем руки. Так или иначе, проснувшись в 4:40 утра, я отправился в дальний путь. Благодаря разнице во времени, даже не смотря на ранний рейс, на открытие и первый доклад я не успел. По дороге позавидовал москвичам за наличие аэроэкспресса из аэропорта, потолкался как пингвин в метро, очередной раз порадовался тому, что живу в Киеве.
На конференции сразу же бросилось в глаза небольшое количество участников. Везде были свободные места и создавалось ощущение, что просто многие не добрались вовремя. Благодаря этому конференция получилась какая-то домашняя. Не было толкучек, очередей, попыток пробиться в переполненный зал и прочих атрибутов больших конференций.
Стоит отметить очень высокий уровень места проведения – Международный Информационно-Выставочный Центр «ИнфоПространство». Все было отлично – качественные микрофоны, звук, мониторы для показа презентации, трибуны для докладчиков, удобные стулья. Отдельно порадовали вкусный обед и кофе паузы. Было вдоволь всего, а сервис не вызывал нареканий.
Я еще отметил для себя удивительную вещь. Атмосфера и участники очень сильно отличались от украинских мероприятий. У нас обычно народ жалуется на трудную жизнь в аутсорс-проекте, невозможность внедрения новых технологий, редко когда люди хвастают своими навыками сразу в нескольких языках программирования. На ADD-3 я тут и там встречал людей, которые знают Python, C++ (обязательно), Java и периодически играются с Erlang. На конференции практически не освещались подходы к разработке, все доклады были техническими, некоторые на чересчур узкие темы. Маловато было выступлений на тему архитектурных решений в распределенных и высоконагруженных системах, слабовато были представлены современные NoSQL решения и разработка клиентских приложений. Это еще одно отличие от Украины – у нас эти темы очень популярны.
Теперь о докладах, на которых мне удалось побывать. Начал я с доклада Дмитрия Лазаренко«Облачные платформы Java: как они устроены и чем отличаются». Сразу объединю свои впечатления с посещением его второго доклада «Облачная платформа Jelastic c точки зрения конечных пользователей: проблемно-ориентированный подход». Для меня оба доклада были очень похожими и мало что дали из новой полезной информации. Нам постоянно намекали или говорили прямо как крут Jelastic, хотя без масштабирования уровня данных, возможности менять некоторые характеристики без рестарта и некоторых других возможностей Jelastic может сгодиться разве что небольшим проектам. Хотелось бы больше деталей о том, как это реализовано внутри, но докладчик постоянно ссылался на отсутствие у него подобных знаний. А некоторые вещи выглядели на презентации как «чудо» в Java мире. Я был бы рад узнать, как они победили некоторые насущные для Java проектов проблемы, чтобы применить это на практике.
Следующим в моем списке был доклад Константина ДаниловаБиблиотеки и фреймворки для построения клаудов. Краткий вывод – слишком сложно! Рассказ был о низкоуровневых инструментах и приемах, в то время как половина аудитории вообще не понимала для чего это все нужно. В итоге, слышал много отзывов, что было мало что понятно.
Дальше я отправился на доклад Артура Орлова«DVCS как конвейер IT-производства». Доклад был очень живой и мне понравился. Докладчик представил несколько моделей использования VCS в проектах разного типа и показал, как распределенные системы Git и Mercurial помогают справиться с проблемами легче и эффективнее. Подискуссировали на тему полезности команды ‘rebase’ и несет ли она потенциальный вред, а также можно ли работать без роли branch maintainer и кто тогда несет ответственность.
Следующим был Александр Долгарев с докладом «Сравнение AMQP и ZeroMQ». В качестве реализации протокола AMQP рассматривался RabbitMQ. С ним я знаком и мы давно запланировали переход на него с текущего JMS провайдера, как только сделаем надежный механизм поиска и перепосылки потерянных сообщений. ZeroMQ показался очень интересным. Это «socket на стероидах». Многое надо писать самому руками, но очень быстрое и гибкое взаимодействие между отправителем и получателем следует из самой технологии.
Дальше настала моя очередь поделиться знаниями об облачной разработке на AWS в моем докладе «Разработка распределенных приложений на AWS». Я был очень удивлен такому небольшому количеству участников в зале. Потом узнал, что параллельно выступал человек-легенда в мире разработчиков России – Дмитрий Завалишин. Он, к слову, получил первый приз за лучший доклад по голосованию участников. Надеюсь, я не подвел тех, кто выбрал мой доклад. Еще минут 20 после доклада я отвечал на вопросы участников и никто не разбегался на кофе. Пересказывать доклад смысла нет. Вот презентация, а скоро сделаю из нее слайдкаст:
С последнего доклада я ушел погулять по городу и заселиться в отель. Усталость и ранний утренний подъем давали о себе знать, поэтому на следующий день я решил выспаться и не пойти на первый доклад. Тем более, что Андрей Бреслав будет у нас в гостях 19 мая на JEEConf, а остальные доклады мне не особо были интересны.
Первым докладом во второй день конференции я посетил «Картография в Windows Phone» от Александра Сороколетова и Алексея Страха. Ребята приехали из Минска и я их хорошо знаю. Доклад был очень легкий и приятный. Я для себя узнал в каком формате хранятся карты у современных провайдеров, а также как устроены картографические сервисы. Оказалось, что написать свое приложение с картами внутри очень-очень просто, по крайней мере на базе Windows Phone 7.
После обеда я реально разрывался. На всех трех сценах были интересные доклады. Я все таки выбрал доклад Романа Елизарова«Пишем самый быстрый хэш для кэширования данных». Доклад немного разочаровал – я ожидал больше стратегий по кэшированию, выявлению мест для потенциального применения кэшей и, возможно, существующих решений. А весь доклад свелся к тому, что для реализации быстрых алгоритмов надо читать Кнута (совет от КЭПа), а еще при определенных обстоятельствах (когда ключ является частью самого значения) можно сделать свою реализацию классической мапы с прямой адресацией. Да, она будет давать очень быстрый get, но часто очень медленный put. Вопрос в том, какому количеству участников реально нужно тратить время на подобную реализацию. Ведь у 99.9% гораздо больше времени уходит на вычитывание самого объекта из памяти, чем на поиск его в кэше. Есть естественно критические приложения, где это очень важно, но их мало.
Дальше я снова разрывался, но выбрал доклад Вадима Цесько«Потоковая обработка данных с помощью модели акторов (Actor Model)». Я уже не раз присматривался к этой модели и ее реализации – Akka. Очень хотелось посмотреть, как люди в большой компании применяют ее на практике. Первая половина доклада все больше подталкивала меня к внедрению, но вторая половина вернула в реальный мир. Обработка ошибок, ненадежная доставка сообщений, возможные падения по памяти либо блокировки из-за ограниченного размера почтовых ящиков, неявные дедлоки и т.д. Еще сильно тормозящим фактором является применение именно в Java. Там далеко не все так красиво как в Scala, а ради этого переводить проект на сравнительно новый язык безумно. Но доклад был очень интересным, с множеством примеров и детальным описанием модели.
Потом я отправился на доклад Дмитрия Грошева«Обработка ошибок — общие соображения и грязные подробности». По-моему докладчик перемудрил с избавлением от исключений – система получилась очень сложная и не работает в общем случае. А так в очередной раз потерли тему нужны ли исключения, вред от возвращения null, панацея ли unchecked исключения.
Я возлагал большие надежды на доклад Александра Чистякова«Практический опыт использования некоторых современных решений репликации MySQL». Тема мне особенно интересна, потому что без репликации в облачной разработке никуда, а мы постоянно выдумываем свои костыли для MySql. Да и база у нас измеряется терабайтами. Доклад был очень живым и интересным. Видно, что докладчику очень наболело и он делился своими попытками сделать адекватное решение. Я записал себе несколько новых идей. Жаль, что заключением доклада было «адекватного способа делать надежную репликацию нет». Так доклад заканчивать нельзя. Даже мы придумали некоторые решения, которые вроде как работают.
Последим докладом я выбрал «Как готовить MySQL» от Андрея Аксенова. Доклад будет очень полезен тем, кто начинает работать с MySql или на собеседовании не может толком объяснить как настроить InnoDB. Небольшая, но очень важная тема, четкий детальный анализ с примерами из жизни, живое выступление. Обязательно рекомендую пересмотреть доклад на видео, а также проверить все настройки в своем проекте.
Это был последний доклад на конференции. Дальше закрытие, розыгрыш призов и слова благодарности всем-всем-всем. Я не рассказал о соревнованиях в программировании роботов, но деталей не знаю – зашел только один раз поглазеть.
В целом, конференция получилась интересная. Не все темы для меня были актуальны, но тут на всех не угодишь. Ждите видео и обязательно уделите время на просмотр выбранных докладов. Спасибо всем, кто пришел на мой доклад, не смотря на интересные выступления на других сценах. Очень рад, что получил опыт «погружения» в такую атмосферу и общения с новым интересными людьми. Приглашаем разработчиков из России к нам в гости на XP Days Ukraine и JEEConf!