363
9
장
테스트
9.4.59.4.5
메타버전 메타버전
엔드투엔드 테스트 단계에서는 ‘
이러한 서비스들이 함께 작동한다는 것을 확인했다면 이들을 모두 이러한 서비스들이 함께 작동한다는 것을 확인했다면 이들을 모두
함께 배포하지 못할 이유는 없어함께 배포하지 못할 이유는 없어
’라고 생각하기 쉽다. 이 생각은 곧 ‘
전체 시스템을 위한 버전 번호전체 시스템을 위한 버전 번호
를 사용하는 건 어떨까?를 사용하는 건 어떨까?
’라는 대화로 이어진다. 브랜든 바이어스의 말을 인용하면 “지금
2
.
1
.
0
버전의 문제가 있어요.”가 된다.
여러 서비스에 대한 변경 사항을 함께 버전 관리
versioning
함으로써 서비스들을 한 번에 변경하고
배포하는 것을 허용하는 아이디어를 효과적으로 수용한다. 이 개념은 표준이지만, 이렇게 함으
로써 마이크로서비스의 주요 이점 중 하나인 다른 서비스와 독립적으로 배포할 수 있는 능력을
잃게 된다.
여러 서비스를 함께 배포하는 것을 수용하는 방식은 서비스가 결합되는 상황으로 이어지는 경
우가 너무 많다. 얼마 지나지 않아 잘 분리된 서비스가 다른 서비스와 점점 더 엉키게 되며, 자
체적으로 배포하려고 시도하지 않으므로 이를 눈치채지 못한다. 결국 많은 것이 뒤엉켜서 여러
서비스의 배포를 당장 조율해야만 하는 혼란에 빠지게 된다. 앞서 논의한 바와 같이 이러한 종
류의 결합은 하나의 모놀리식 애플리케이션 때보다 더 나쁜 상황을 초래할 수 있다.
이것은 정말 안 좋은 일이다.
9.4.69.4.6
독립적인 테스트 가능성 부족