341
8
장
배포
마이크로서비스 버전에 대한 호출 비율을 높이는 등 메트릭을 기반으로 호출을 자동으로 늘릴
수 있는 기능이 있다.
8.6.58.6.5
병렬 실행 병렬 실행
카나리아 릴리스를 사용하면 기능에 대한 요청이 이전 버전이나 새 버전 중 한 곳에서 처리된
다. 즉, 두 버전의 기능이 동일한 요청을 어떻게 처리하는지 비교할 수 없으며, 새 기능이 이전
버전의 기능과 정확히 동일한 방식으로 작동하는지 확인하려면 필요한 것이 있다.
병렬 실행을 사용하면 정확히 그렇게 할 수 있다. 즉, 동일한 기능의 서로 다른 두 구현을 나란
히 실행하고 기능에 대한 요청을 두 구현체로 보낸다. 마이크로서비스 아키텍처에서 가장 확실
한 접근 방식은 서비스 호출을 동일한 서비스의 서로 다른 두 버전으로 보내고 결과를 비교하
는 것이다. 다른 대안은 동일한 서비스 내에서 해당 기능 구현을 모두 공존시키는 것인데, 이렇
게 하면 비교하기 더 쉽다는 장점이 있다.
두 구현을 모두 실행할 때는 호출 중 하나의 결과만 원할 가능성이 높다는 점을 인식하는 것이
중요하다. 하나의 구현은 신뢰할 수 있는 출처로 간주된다. 즉, 현재 신뢰하는 구현이며 대개
기존 구현일 것이다. 병렬 실행으로 비교하는 기능의 특성에 따라 이 세밀한 차이를 신중하게
생각해야 할 수 있다. 예를 들어 고객에게
2
개의 동일한 주문 업데이트를 보내거나 송장을 두
번 지불하고 싶지 않을 것이다.
병렬 실행 패턴은 필자가 집필한 『마이크로서비스 도입, 이렇게 한다』 (책만,
2021
)의
3
장에