Конец этой недели, 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!