ХабрПостыНовостиМегапосты?

Внести массовые изменения в микросервисы, автоматизировать код-ревью и сберечь нервы команде

Представьте ситуацию — ваше задание на работе изменить формат логирования. Сначала всё кажется просто. Ровно до того момента, пока все эти изменения не нужно вносить в 80+ микросервисах… И так легкая на первый взгляд задача превращается в длинную и рутинную. Что можно с этим делать?

Или вот еще задачка — какими фичами можно обеспечить скорость, качество и удобство code review?

Обо всём этом рассказывают Java-разработчики ЮMoney в своих докладах. Добавляйте в закладки или смотрите прямо сейчас. Видео с таймкодами уже ждут под катом.





Automate it! Внесение типовых изменений в микросервисы


Вита Комарова, старший Java-разработчик
Эксперт рассказывает, как запустить массовые изменения, поддерживать стандарты и сберечь нервы всей команды

1:03 О микросервисной архитектуре в ЮMoney и не только
2:17 Задача – изменить формат логирования. Что нужно сделать?
3:00 Разделяем работу по командам: плюсы и минусы
4:02 Примеры массовых изменений
4:34 Решение – автоматизация
4:47 Шаги раскатки изменений
6:05 Реализация автоматизации: о роботе Modernizer
8:09 Что такое Flow? Различные сценарии патчинга
8:58 Что умеет Modernizer? Техническая реализация
10:26 Результаты работы
10:57 Контроль патча
12:34 Путь задачи после merge
13:15 Давайте автоматизируем тестирование
14:40 Про Automerge и автоматизация релиза
16:13 История глазами разработчика
17:42 Итоги: жизнь до и после Modernizer
20:18 В чем секрет нашего успеха?
21:42 Наши выводы и советы команды ЮMoney




Автоматизация код-ревью. Два года спустя


Григорий Скобелев, Java-разработчик
Два года назад мы начали процесс улучшения код-ревью. Мы хотим заглянуть в прошлое и поделиться результатами работы — покажем эволюцию системы код-ревью, наиболее и наименее востребованную функциональность и расскажем, как улучшенная система повлияла на нашу работу.

1:31 О бэкенде в ЮMoney, наши инструменты
3:29 О чем пойдет речь в докладе
5:12 О code review и зачем его улучшать
7:25 Код-ревью на словах и на деле. Личный опыт
10:07 Система и функциональность код-ревью. Фичи ЮMoney
10:30 Скорость
14:42 Качество
18:47 Удобство
24:22 Топ фичей в код-ревью
25:07 План доработок




Все доклады с большой ИТ-конференции ЮMoneyDay. На подходе материалы про SQL, DevOps, фронтенд, PM, тестирование и мобильную разработку.

@NataliaZheltova
11.12.2020 15:04 UTC
Первоисточник

Комментарии

@kost
11.12.2020 22:47 UTC
0
Как описывается то, что собственно должен сделать Modernizer?
Например, «добавить .nnnnnn к формату времени в файле log4j.conf». Как это конкретно описано?

У нас масштаб меньше, я пишу скрипты на bash, которые обходят все репозитории, менят что-то в файлах, и коммитят.

14.12.2020 09:18 UTC
+1
У нас патчи описываются на java (как и весь modernizer).
Скрипты тоже вариант.
А java у нас используется по нескольким причинам:
1) весь остальной код на java, все разработчики в компании ее знают, т.е. поддерживать сможет каждый
2) modernizer выглядит как обычная библиотека и имеет такую же сборку и релизный цикл как библиотека, что тоже удобно в поддержке.
@zeldigas
15.12.2020 14:46 UTC
0

Доклад очень интересный, но жалко что часть про патчи действительно была опущена. Очень хотелось бы технических подробностей, как это делали: свелось ли это к условному наивному патч файлу (да, который можно автоматически применить гитом) за счет обозначенной унификации в сервисах или все же изменение представляет собой более сложный структурный поиск по коду и его модификацию.


Выглядит что эта часть содержат наибольшую "добавленную стоимость" по сравнению с распространенными системами типа dependabot/renovate.

17.12.2020 16:39 UTC
0
Спасибо!
Патчи выходят простыми, за счет унификации, Вы правы.

Уточню, что сначала происходит clone репозитория. Т.е. modernizer получает доступ к коду в директории, указанной при clone.
А затем уже отрабатывает код на java.

Например, если говорить о кейсе из доклада (этакий псевдокод для наглядности):
1) найдем файл:
Path log4jConfig = resolve(log4j.xml);
2) прочитаем:
List content = Files.readAllLines(log4jConfig);
3) найдем нужную строку и сделаем в ней замену:
lineOfContent.replace("HH:mm:ss", "HH:mm:ss.nnnnnnnnn");
17.12.2020 19:09 UTC
0

Понятно, спасибо большое! Было бы круто иметь что-то подобное в виде опен сорс проекта, чтобы не переизобретать велоспеды заново, но это так — мечты :).


Наверное, последний вопрос — реализацию отслеживания зависмостей вы тоже делали силами modernizer'а? Если да, то какие плюсы для себя видели по сравнению с тем же renovate который можно on-premise развернуть (ну кроме опять же унификации инструмента хоть и ценой поддержки своей собственной реализации)?

17.12.2020 19:24 UTC
0
Да, с зависимостями работаем тоже через modernizer.
Основные причины:
1) у нас уже есть modernizer :) Добавлять пусть и небольшую поддержку второго инструмента не хочется.
2) важнейшая часть modernizer — создание задач в jira. Удобно, что одним инструментом покрывается весь цикл внесения массовых изменений.
3) возможность кастомизировать modernizer и добавлять нужную именно нам функциональность.