서비스를 사용한다고 상호 결합이 분리된다는 것과 개발과 배포 독립성을 지원한다는 것은 일부만 맞는 말이다.
서비스 아키텍처?
시스템 아키텍처는 의존성 규칙을 준수하며 고수준의 정책을 저수준의 세부사항으로 분리하는 경계에 의해 정의된다. 따라서 단순히 애플리케이션의 행위를 분리하는 서비스는 아키텍처 관점에서 중요하지 않다.
서비스의 이점?
결합 분리의 오류
시스템을 서비스들로 분리하면서 얻게 되는 이점은 서비스 사이의 결합이 확실히 분리된다는 점이다. 그러나 사실 이는 완전히 맞는 말은 아니다. 서로 네트워크로 공유되는 데이터들이 있을 것이고 이 데이터에 결합된다.
개발 및 배포 독립성의 오류
대부분 서비스를 분리하면 각 서비스별로 팀을 꾸리고 개발하고 유지보수하며 배포할 수 있을 것이라고 생각하지만, 항상 그렇지는 않다. 결합 분리의 오류와 마찬가지로 데이터나 행위에서 결합되어 있다면 결합된 정도에 맞게 개발, 배포, 운영을 조정해야 한다.
횡단 관심사
아키텍처 경계가 서비스 사이에 있지 않다. 횡단 관심사를 처리하려면 서비스 내부는 의존성 규칙을 준수하는 컴포넌트 아키텍처로 설계해야 한다. 아키텍처 경계를 정의하는 것은 서비스 내에 위치한 컴포넌트다.