Изначально «микро» в микросервисах понималось неправильно, подразумевая небольшой размер, а не четкие границы. Размер микросервиса менее важен, чем его независимость, владение данными и четкие контракты. Суть микросервиса — его автономность и способность разрабатываться и развертываться независимо. Концепция ограниченных контекстов предметно-ориентированного проектирования помогает определить естественные границы сервисов. Слишком мелкое разделение функциональности, например, моделирование рабочего процесса вместо предметной области, приводит к чрезмерно маленьким сервисам. Каждый сервис влечет за собой затраты на развертывание, сетевые издержки и операционную сложность. Признаками здоровой гранулярности микросервисов являются четкое владение предметной областью и независимая развертываемость. Закон Конвея подчеркивает, что гранулярность сервисов должна соответствовать структуре команд и схемам коммуникации. Часто лучше начинать с сервисов с более грубой гранулярностью и развивать их со временем по мере углубления понимания. В конечном итоге, «микро» в микросервисах относится к автономии и фокусу, а не только к небольшому размеру кода.
dev.to
Service Granularity: When Is a Microservice Really “Micro”?
