Спор о джавистах, сплав на бревнах, эксперименты и микросервисы
У нас любят java-разработчиков.
Фронтендеры их хвалят и перенимают полезные инструменты, дизайнеры с особой любовью приносят макеты, а тестировщики ликуют, потому что все автоматизировано и жизнь — сахар (но об этом мы пока не рассказывали).
Еще мы иногда проводим java-митапы — собираем экспертов и просим их рассказать что-нибудь позабористей. Так и в этот раз — коллеги из Сбербанка, Одноклассников, Яндекса и Яндекс.Денег пришли на JavaJam и выложили сразу кучу подробностей о своей работе.
Под катом:
— Главное о логировании Java-приложений на примерах от Яндекса;
— Разработка инструмента на Low-code для UFS Сбербанка;
— Автоматизация экспериментов в Одноклассниках с помощью Kotlin DSL;
— Как в Яндекс.Деньгах сделали одну платформу для микросервисов вместо семи.
А еще там опрос о том, уместно ли называть java-разработчиков джавистами.
Когда игра слов выходит на новый уровень
Во описаниях всех видео на ютубе на всякий случай тоже встроены таймкоды с интересными моментами, если вы привыкли смотреть видео прямо там.
Руководство по сплаву на бревнах (Владимир Красильщик, Яндекс)
Важные понятия и подводные камни логирования Java-приложений на примерах разработчика Яндекса. Мы поговорим о главных понятиях в логировании Java-приложений, без которых не выжить ни одному разработчику.
Я приведу примеры неожиданного поведения приложений из-за хитросплетений логирования из собственной практики, а вы узнаете, как сделать жизнь с логами проще и веселее — насколько это возможно. Цель выступления — поделиться практиками, которые позволят забыть о логировании и заняться действительно интересными вещами.
1:20 — Почему я не вижу логи?
7:04 — Про Logger, Appender и их связь
13:40 — Универсальная Программная Архитектурная Диаграмма (УПАД)
15:14 — Баззворды из современного мира Java-логирования
20:13 — Неприятность 1 — Множественный binding
21:46 — Неприятность 2 — log4j или JUL без адаптера
25:09 — «Швейцарский» файловый аппендер logback
29:57 — Неприятность 3 — GWT
31:16 — Неприятность 4 — Hibernate 4.X.X+
34:06 — Неприятность 5 — Временная недетерминированность
37:07 — Разработка API
40:50 — Логирование в микросервисах и кластере
44:13 — Как это сделано в Яндекс.Маркете
50:36 — О безопасности в логировании
55:08 — Как забыть о логах и начать жить?
Model-Driven DevOps (Денис Васин, Сбербанк)
Вы наверняка знакомы с DevOps-культурой, которая объединяет специалистов по разработке и информационно-технологическому обслуживанию (Developement и Operations). Но мало кто слышал о платформе Low-code — она превращает участников связанных с ней проектов в Citizen Developers.
В докладе я расскажу о разработке инструмента на Low-code для UFS (Unified Front System) «Сбербанка». И отвечу на вопросы, которые обычно возникают у MDE-менеджеров. Например, как управлять версиями моделей, разделить сгенерированный и рукописный код или интегрировать собственный инструмент в стандартную DevOps-инфраструктуру.
01:05 — Время жизни финансового продукта раньше и сейчас
04:24 — Сбербанк изобрел свой Low-Code в «единой фронтальной системе»
12:16 — Родовые травмы Low-code
15:53 — Cовместная работа в корпоративной инфраструктуре
25:34 — Как подключать ручной код?
28:28 — Enterprise-архитектура развертывания
30:19 — Контроль качества функциональности
33:45 — Интеграция в Pipeline
36:13 — Переход от DevOps к Model Driven DevOps
Автоматизация экспериментов с помощью Kotlin DSL (Александр Тарасов, Одноклассники)
В большом проекте нельзя просто взять и сделать фичу доступной всем клиентам. Для плавного запуска мы проводим эксперименты, которые требуют вносить изменения вручную — и часто это ведёт к временным издержкам и ошибкам. Чтобы от них избавиться, мы решили автоматизировать подготовку и запуск экспериментов.
В докладе я расскажу, почему мы написали кастомный DSL и как Kotlin помог сделать его компактным и удобным. А ещё о том, какие проблемы нужно решить, чтобы всё работало, как вы задумали.
01:47 — Что такое эксперимент?
04:23 — Нельзя просто так взять и выкатить фичу
05:23 — Эксперименты нужны потому что…
07:38 — Проблемы с экспериментами
09:00 — Схема запуска эксперимента
10:39 — Концепт решения
11:25 — Демо
15:04 — На чем писать DSL
16:46 — А где же Kotlin и на чем еще писать DSL?
21:22 — «Кишки» DSL
23:46 — Как обеспечить безопасность
24:38 — Оптимизация DSL
29:31 — Kotlin Script
31:31 — И его проблемы
34:45 — Выводы + еще одно демо
38:29 — Итоги и что почитать по теме
Единая микросервисная платформа Яндекс.Денег (Василий Созыкин, Яндекс.Деньги)
В Яндекс.Деньгах мы уже шесть лет строим микросервисную архитектуру — дробим монолиты на мелкие сервисы и реализуем новые функциональности в виде отдельных компонентов.
Еще три года назад у нас было семь собственных платформ — четыре для Java и три для JavaScript-стека. Сопровождать всё это было дорого и сложно, а про автоматизацию и говорить не приходилось. Мы устали от такой жизни и создали единую платформу для Java-сервисов на основе стека Spring Boot.
Сегодня у нас всего две платформы, и для них силами разработки написано столько инструментов автоматизации, что процесс тестирования релизов и выкладывания их в продакшн у нас полностью автоматизирован. На пулреквестах теперь почти не бывает холиваров, так что можно быстро начать разработку в любом из 60 с лишним компонентов.
В докладе я расскажу, как мы улучшили процесс тестирования, покрыли большинство компонентов тестами минимум на 80% и как нам удалось всего этого достичь.
00:12 — Как не гнаться за кучей языков и платформ
01:02 — Что изменилось в Яндекс.Деньгах за три года
03:51 — Сначала платформ было две
05:29 — +1 платформа и 10 сервисов (все стало еще хуже)
08:32 — Паттерны сопровождения микросервисных систем
08:44 — Unified Build Instruments
12:11 — CI/CD as a code
15:06 — Busines-free common libraries
18:37 — Component testing
22:56 — Versioning test coverage limits
25:13 — Unified microservice platform
28:40 — 20 минут от мерджа до продакшена
А еще мы тут с ребятами из фронтенда поспорили, обижаются ли java-разработчики, если называть их джавистами. Ребята говорят, что нормально, а я сомневаюсь, хоть сам и не джавист.