Многие проекты являются срочными, из-за чего некоторые важные принципы выпадают из внимания. Это частая причина появления технического долга: «Мы знаем, что это плохо, но исправим это позже», а позже так и не наступает
Люди, дающие советы, постоянно превозносят преимущества слабо связанных систем, но можно ли проектировать системы, в которых ничто ни с чем не связано?
Исходя из зависимости между данными и сервисами Б и В, было бы разумно объединить эти сервисы, чтобы избежать задержек, повысить отказоустойчивость и исключить проблемы масштабируемости, связанные с взаимодействиями между этими сервисами
Общие классы в ss.survey по-прежнему будут считаться потерявшими идентичность, даже если содержат общий код. С помощью паттерна Упрощение иерархии компонентов эти общие классы должны быть перемещены в новый компонент ss.survey.shared, благодаря чему из подобласти ss.survey исчезнут классы без идентичности, как показано на рис. 5.10.
Декомпозиция на основе компонентов и тактическое ветвление — два распространенных подхода к разделению монолитных приложений. Декомпозиция на основе компонентов (component-based decomposition) предполагает применение различных паттернов рефакторинга в целях уточнения и извлечения компонентов (логических строительных блоков приложения) и формирования распределенной архитектуры поэтапным и контролируемым образом. Тактическое ветвление (tactical forking) включает создание копий приложения и удаление ненужных частей, что позволяет из остатков сформировать сервисы, подобно тому как скульптор создает прекрасное произведение искусства, отсекая от массива гранита или мрамора все ненужное
При переносе монолитных приложений на архитектуру микросервисов подумайте о возможности перехода к архитектуре на основе сервисов как промежуточного шага на пути к другим распределенным архитектурам.