30.07 Собеседование и микросервисы
Andrey BeskrovnykhСильная связанность и общие библиотеки
Если несколько сервисов взаимодействуют с какой-то библиотекой. Если при этом происходят изменения в этой библиотеке, то потребуется внести правки в каждый из этих сервисов. Слабое связывание означает, что изменения внутреннего содержания сервера не затрагивает клиентов. Слабая связанность приводит к проблемам согласованности данных и выполнению запросов, в которых участвуют несколько сервисов. Ричардсон в своей книге выделяет два подхода к разделению приложения на сервисы: по бизнес возможностям (что бизнес делает?) и по проблемным областям (нужно вникать в суть DDD).
Разбиение приложения на сервисы
Нужно чтобы границы декомпозиции не плавали в последствии. Это важно еще и потому что согласно закону Конвея структурная декомпозиция приложения отзеркаливает структурную организацию компании.
При разбиении на микросервисы полезны принцип единой отвественности (SRP) и принцип согласованного изменения. Если какое-то бизнес-изменение затрагивает изменения в нескольких сервисах, значит у нас проблема с декомпозицией. Проблемы с разбиением.
– Согласованность данных между сервисами (распределенная транзакция)
– Божественный класс,
– Согласованность единого представления данных (ACID-транзакции)
– Латентность сети.
При проектировании внутренней ахитектуры отдельного микросервиса используются SOLID-принципы