Slide 1
Slide 1 text
Постоянный рефакторинг
архитектуры для
снижения уровня
сложности
Покрыть
архитектуру
тестами
Цель: (качественное описание цели актуальное для бизнеса)
Метрики (у каждого бизнеса свои, здесь примерные варианты):
– Снизить ТТМ на Х%
– Снизить входные требования к компетенции разработчиков, чтобы уменьшить стоимость
разработки на Х%
– Уметь масштабировать команду на Х за Y времени
– Х% новых сервисов создается из готовых компонентов
– Увеличить скорость изменения бизнес-процессов без потери качества (сейчас Х)
Балансирующие метрики (у каждого бизнеса свои, здесь примерные варианты):
– Не повышать ТТМ (сейчас Х)
– Не повышать стоимость разработки (сейчас Х)
– Не повышать стоимость сопровождения (сейчас Х)
– Не повышать стоимость онбординга с ростом системы (сейчас Х)
– Удержать качество на текущем уровне (сейчас Х)
Актуально для систем, которые
развиваются, то есть в них
вносятся изменения.
Неактуально для систем на
пассивной поддержке
Если в системе четко разграничена (описана, доступна и
100% актуальна) ответственность бизнес-компонентов и
принципы взаимодействия между ними,
то 1) разработчик внесет требуемое изменение, которое не
увеличит сложность системы (как измерить?), 2) сделает это
изменение быстро (отсылка к ТТМ), 3) упростится онбординг
новичков (насколько?), 4) упросится коммуникация с
бизнесом, 5) разработчик сможет точнее попадать в сроки,
потому что разработчик будет знать или быстро найдет в
какой компонент вносить изменения, кроме этого для него
изменение будет безопасно и предсказуемо по результату
Разработчик
Боли:
– Непонятно, в какую часть системы засунуть код
– Страшно вносить изменения
– Неясно куда бежать, если поломалось
– Давление бизнеса по срокам и качеству
– Сложно донести до бизнеса технические проблемы
– Долго и больно заходить на новый проект
– Долго и больно онбордить новых людей
– Ненавижу работать с говнокодом
Желания:
– Полный контроль над системой (бизнес-процесс и техническая часть)
– Я понимаю, почему сделано именно так, а не иначе
Руководитель проекта
Боли:
– Сложная коммуникация с технарями, они не слышат бизнес
– Несовпадение ожиданий соотношению оценки и сложности задачи (технари завышают оценку)
– Неясно, почему разработка замедляется
– Неясно, почему качество понижается
– Сложно выполнить KPI из-за просадки и непредсказуемости в технической части
Желания:
– Технари говорят на мое языке
– Технари попадают в сроки
– Технари не допускают ошибок в системе
– Могу легко расширить, сжать или поменять команду в короткие сроки
Визуализация
архитектуры для
коммуникации внутри
команды и с бизнесом
Описание ADR
(в том числе
тестами)
Если при внесении изменений можно быстро
протестировать архитектуру на актуальность и качество,
то 1) разработчик сможет узнать о проблема на этапе
написания кода, 2) потенциальные проблемы будут
выявлены до запуска продукта в прод, что сэкономит время
на поддержке, 3) новичку легко экспериментировать с новым
проектом (как в тесте, как и правильно),
потому что вносить изменение можно быстро и безопасно
Описать
архитектуру
кодом
Если будут готовые кубики на все типовые задачи (сервис получения
пользователей из CRM, работа с очередью, работа со всеми базами данных,
единая авторизация в экосистеме продуктов и так далее),
то 1) разработчик будет быстрее собирать бизнес-задачи, 2) совершать
меньше ошибок, 3) разработчик сможет точнее попадать в сроки,
потому что большая часть решений будет уже создана 1) с хорошим кодом
экспертом в предметной области, 2) протестирована многими проектами и 3)
есть у кого спросить в случае проблем
Негативные эффекты:
– Повышается стоимость управления общей библиотекой (время
согласования изменений, раскатка, высокий уровень разработчика для
поддержки общей библиотеки, нужен владелец библиотеки)
Выстроить процесс
создания и
сопровождения
кубиков в компании
Выстроить процесс
иннерсорса в
компании
Если на этапе описания задачи будет понятно за
счет каких компонентов ее сделать и какая часть
системы должна измениться,
то KPI по скорости и качеству релизов будут
выполняться,
потому что все риски будут видны до старта и
неопределенность сократиться
Маппинг
бизнес-процессов
на архитектуру
Сайт: http://картагипотез.рф
База знаний: https://github.com/Byndyusoft/hypothesismapping
Телеграм-канал: https://t.me/hypothesismap
Метод стратегического планирования для
проектирования следующего шага развития
Эта карта – пример того, как можно обосновывать
архитектурные задачи на уровне бизнеса
Максимум Слабо
Средне
Степень влияния / стоимости
3
2
1
1
1
1
2
2
Приоритеты расставлены
для примера и будут
зависеть от конкретной
ситуации в проекте 3
3
2
1
1