
161
5
장
진화하는 아키텍처 토폴로지
재사용성이 높은 코드일수록 사용성은 떨어진다.
다시 말해, 코드의 사용성은 코드의 재사용성과 반비례하는 경우가 많다. 재사용 가능한 코드
를 작성하는 개발자는 최종적으로 그 코드를 사용하게 될 다른 개발자들을 고려해야 한다. 따
라서 무수히 다양한 코드 사용 방식을 수용하는 기능을 일일이 추가할 수밖에 없다. 이런 방식
으로 장래를 보장
future
-
proofing
하기 위해 작성한 코드는 더 이상 하나의 목적으로 사용하기 어렵다.
마이크로서비스는 코드 재사용을 자제하며 커플링보다
중복을 선호하는 철학을 따른다.
재사용
은 커플링을 의미하며, 마이크로서비스는 커플링을 극한까지 해체한 아키텍처다. 그러나 마이
크로서비스의 진정한 목표는 중복 코드를 늘리는 것이 아니라 도메인 내부의 엔티티들을 서로
격리하는 것이다. 공통 클래스를 공유하는 서비스는 더 이상 독립적일 수 없다. 마이크로서비
스에서
Checkout
과
Shipping
은 내부에서 자신만의 방식으로
Customer
를 표현한다. 만약 두
서비스가 고객 정보를 매개로 협업한다면 관련 정보를 서로에게 전달해야 한다. 마이크로서비
스 아키텍트는 두 서비스의 각기 다른
Customer
버전을 조정하고 통합하려 하지 않는다. 재사
용성을 활용해 얻는 이득은 허상에 불과하며 그로 인한 ...