Чистая архитектура на практике: перестаём ломать сервис при каждом релизе

У вас небольшой релиз. Вы меняете пару строк кода, выкатываете обновление - и через несколько минут сервис начинает отдавать странные ошибки. Баги появляются в местах, которые вы вообще не трогали.
Знакомо?
Обычно проблема не в конкретном изменении, а в архитектурной связанности системы: инфраструктурные детали начинают протекать в бизнес-логику, и зависимости между компонентами становятся слишком плотными.
Разберём это на примерах. Примеры будут псевдореальные, иначе статья быстро превратится в книгу.
Посмотрите на функцию загрузки инвойса:


















