원래, 마이크로서비스에서 "micro"는 명확한 경계보다는 작은 크기를 의미하는 것으로 오해되었습니다. 마이크로서비스의 크기는 독립성, 데이터 소유권, 그리고 명확한 계약보다 덜 중요합니다. 마이크로서비스의 본질은 자율성과 독립적으로 개발 및 배포될 수 있는 능력입니다. 도메인 주도 설계(Domain-Driven Design)의 경계 컨텍스트(bounded contexts) 개념은 자연스러운 서비스 경계를 식별하는 데 도움이 됩니다. 도메인 대신 워크플로우를 모델링하는 것처럼 기능을 너무 세분화하면 지나치게 작은 서비스로 이어집니다. 각 서비스는 배포, 네트워크 오버헤드, 그리고 운영 복잡성에 비용을 발생시킵니다. 건강한 마이크로서비스 세분화의 징후에는 명확한 도메인 소유권과 독립적인 배포 가능성이 포함됩니다. Conway의 법칙은 서비스 세분화가 팀 구조 및 커뮤니케이션 패턴과 일치해야 함을 강조합니다. 이해도가 깊어짐에 따라 시간이 지남에 따라 더 거친 세분화된 서비스로 시작하여 진화시키는 것이 종종 더 좋습니다. 궁극적으로, 마이크로서비스에서 "micro"는 단지 작은 코드 크기가 아니라 자율성과 집중을 의미합니다.
dev.to
Service Granularity: When Is a Microservice Really “Micro”?
