구조 변화에는 항상 대가가 있다

서비스 분리는 멋져 보이는 변화이지만, 무조건 좋은 방향이라고만 말할 수는 없다.

어떤 구조든 장점과 비용이 함께 온다.

중요한 것은 무엇을 얻었는지뿐 아니라, 무엇을 잃었는지도 같이 보는 것이다.

무엇을 얻는가

1. 역할 경계가 더 분명해진다

회원, 상품, 주문, 배송이 서로 다른 서비스로 나뉘면서 각 서비스가 어떤 책임을 가지는지가 더 또렷해진다.

이것은 구조를 읽을 때도, 기능을 수정할 때도 도움이 된다.

2. 실행 단위를 나눌 수 있다

하나의 애플리케이션이 아니라 여러 서비스로 나뉘면서, 기능을 독립된 실행 단위로 바라볼 수 있게 된다.

이것은 이후 배포와 운영 구조를 더 세밀하게 나눌 가능성을 열어 준다.

3. 모놀리식의 결합을 의식하게 된다

서비스 분리를 한 순간부터, 독자는 자연스럽게 “무엇이 어디 책임인가”를 따지게 된다.

즉, 서비스 분리는 코드 변화이기도 하지만 동시에 경계 의식을 학습하는 단계이기도 하다.

무엇을 잃는가

1. 호출이 복잡해진다

이전에는 같은 애플리케이션 안에서 끝나던 일이 이제는 HTTP 호출로 바뀐다.

즉, 네트워크 실패, 지연, 인증 전달, 부분 성공 같은 문제를 함께 생각해야 한다.

2. 디버깅과 테스트 시작이 어려워진다

chap00에서는 하나의 앱만 띄우면 됐다.