Обзор Java Day 2017

Java Day 2017

Рассказывает Екатерина Сенько

Здравствуйте уважаемые читатели блога. Недавно прошла летняя конференция Java Day. И я  бы хотела поделиться с вами своими впечатлениями о ней. Уже не первый  год разработчики из Беларуси и соседних стран собираются вместе, чтобы обогатить и расширить свои технические знания в области программирования.

В этом году конференция была разделена на 3 потока, включающих в себя 17 докладов и 2 воркшопа. Естественно, невозможно успеть везде и сразу, но можно выбрать наиболее интересные темы и время от времени перебираться из зала в зал.

Представляю вам краткий обзор всех просмотренных мной докладов. Надеюсь, какие-то темы окажутся для вас интересными, и вы просмотрите уже полные версии, когда они станут доступны для всех на ютубе.

 

Доклады

 

Первый доклад, о котором хочу вам рассказать, – это доклад от Philipp Krenn на тему Monitor Your Containers. Тема является весьма актуальной для меня, как для серверного разработчика. Разворачивая свое приложение на прод. сервере, никогда не знаешь, чего ожидать. Да и более того, из года в год требования к контейнерам неизбежно растут. Хочется просто быть всегда спокойным за их стабильность и быстродействие. Philipp Krenn рассказал о стеке инструментов Elastic, который предназначен для мониторинга веб систем. Был проведен обзор основных возможностей таких инструментов как Kibana, ElasticSearch, Logstash, Beats и Cloud, продемонстрировано их практическое применение. Думаю подобные инструменты полезно использовать для любого масштаба систем, особенно если у вас монолитное гигантское веб приложение, работающее с большими объемами данных и отвечающее всем требованиям быстродействия и качества. Подобные приложения без использования таких мониторинговых систем похожи на корабли без штурмана – вроде все идет по плану, но это не точно. 😉

 

elastic stack

После короткой кофе-паузы начался цикл лекций по языку Go от компании Juno. Цикл состоял из 3 докладов, повествующих о процессе разработки на Go с самых основ до полноценного приложения. В течение первых 45 минут аудитория слушала о том, какие типы данных есть в языке, зарезервированные слова, обработка ошибок, тестирования и прочие основные вещи.  Я, в принципе, надеялась услышать о плюсах и минусах языка, и в каких случаях лучше отдавать ему предпочтение в сравнении с Java и прочую информацию, которую трудно найти в книжках. По этому на два следующих доклада я не осталась. С другой стороны, если вы уже решили заняться Go, то этот цикл докладов будет вам полезен.

 

Снова вернувшись в 1 поток, я стала слушать доклад Advanced Search For Your Legacy Application от David Pilato. Этот доклад повествовал опять же об инструменте от Elastic, но уже с точки зрения быстрого поиска ElasticSearch. Elasticsearch — поисковый движок с json rest api, написанный на Java. Основная цель – совершение быстрого поиска в базе данных по нескольким критериям. На протяжении всего времени David Pilato в основном показывал, как внедрить инструмент ElasticSearch в приложение, как писать с его помощью Criteria запросы. Были продемонстрированы все детали, включая зависимости в pom файле. Меня впечатлила демонстрация работы конечной созданной системы. Выборки по миллиону записей происходила буквально в режиме онлайн. Задержки составляли доли секунд. Например если обычный INSERT запрос в PostgreSQL базе данных добавлял 1000 записей примерно за 30 секунд, то внедрение индексирования ElasticSearch сократило это время до 8 секунд. Потрясно!

 

Отойти от шока и поделиться впечатлениями с коллегами позволил перерыв на обед, на котором были поданы сендвичи, суп и десерты. А так же кофе и чай в неограниченном количестве. Идем дальше.

 

Доклад Session is dead – long live JWT от Hrvoje Crnjak раскрыл в себе суть технологии JSON Web Token, применяемой в качестве альтернативы аутентификации через cookies. Как правило токен – это случайно сгенерированная строка, с помощью которой создается сессия на сервере и по которой клиент может получать данные из базы, такие как id или email. JWT в свою очередь не просто случайная строка, а  подписанный объект JSON, содержащий в себе основные данные пользователя, как например тот же email. В этом случае контроль за токеном осуществляет уже сам клиент и использует его как ключ. Hrvoje Crnjak рассказал об основных моментах работы с JWT, показал наглядный пример и сравнил классических подход аутентификации с предлагаемым. Также дал несколько рекомендаций по поводу того, в каких случаях какой подход лучше использовать.

browser - server

 

Разбавить череду докладов о программировании удалось Кириллу Толкачеву со своим докладом “Curse of Spring Boot Test”. Вот бывает живешь себе спокойно, код пишется, проекты процветают и тут бац – тесты внезапно перестают работать. Но почему? Вроде ж все хорошо было. Именно эта тема затронута была в докладе. Что делать и на что обращать внимание, если все идет не как по маслу. Возможно дело в Spring аннотациях? Что скрывают под собой @SpringTest, @SpringBootTest и @SpringRunner? Кирилл продемонстрировал убедительный пример того, как легко можно заблудиться в трех соснах и надолго зависнуть над несуществующей проблемой. Что ж, иногда бывает полезно покопаться во внутренностях привычных технологий.

 

Ладно. Допустим мы уже написали супер-систему, интегрировали в нее всевозможные эластики, модные json токены и протестировали все вдоль и поперек. Но система превратилась в большой монолит, с которым уже не так просто справиться. Что делать в таком случае подробно объяснил Vladimir Dejanovic в докладе “Changing Wheels on Moving Car: From Monolith to Microservices by Using API’s”. Честно говоря, никогда не задумывалась о том, как большая система работающая с не менее масштабной базой данных может быть распилена на кусочки. А вот оказывается может. У микросервисов есть масса преимуществ по сравнению с монолитом:

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

Vladimir Dejanovic поделился своим опытом решения проблемы монолита и заставил меня задуматься. Представьте хотя бы как тяжело смотивировать команду разработчиков перекроить всю систему вдоль и поперек? А как это объяснить заказчику? Вот-вот.

 

В тот момент, когда я уже начала испытывать мигрень от объема информации со всех прослушанных докладов, на сцену выходит Арсений Кравченко и открывает презентацию на тему Intro to AI Buzzwords. “Искусственный интеллект? Нет, к такому меня жизнь не готовила” – читалось в глазах уставших слушателей. Я уже приготовилась к потоку математических функций, машинному обучению и прочих умных слов. Но все оказалось не так страшно. Арсений продемонстрировал нам основные возможности машинного обучения на примере популярных приложений и рассказал основные этапы обучения компьютера. Много картинок и пара шуток – то что нужно для завершающего доклада. Спасибо, Арсений, за поднятое настроение.

 

Заключение

 

Завершив официальную часть мероприятия, все дружно двинулись во двор The Space на афте-пати, на котором уже появилась возможность поделиться друг с другом впечатлениями и пообщаться с докладчиками. В целом, впечатления о конференции остались крайне положительные. JavaDay – это не только доклады о передовых технологиях, но и возможность пообщаться с единомышленниками, обменяться с ними знаниями и опытом, поучаствовать в конкурсах и повеселиться на афте-пати. Спасибо SoftTeco за предоставленную возможность посетить конференцию JavaDay. Приятно работать в компании, которая способствует профессиональному развитию своих специалистов. Также спасибо всем организаторам и докладчикам за высокий уровень организации и вклад в развитие Java сообщества в Беларуси.

Java Programmer

Java Programmer