섀도 테스트
shadow testing
새 시스템을 실제 서비스 뒤에 몰래 붙여, 사용자 모르게 진짜 요청으로 성능만 검증하는 방법
쉽게 말하면
섀도 테스트는 새로 만든 시스템이나 새 버전을 실제 서비스 뒤편에 조용히 세워두고, 진짜 사용자 요청을 그대로 흘려보내면서 결과만 기록하고 비교해 보는 검증 방법이다.
비유하자면 연극의 언더스터디(대역 배우)와 비슷하다. 대역 배우는 무대 뒤에서 주연과 똑같은 타이밍에 대사를 읊어 보지만, 관객은 무대 위 주연만 보고 아무것도 눈치채지 못한다. 실제 대사는 여전히 주연이 하고, 대역의 연기는 극단 관계자만 지켜보며 잘하는지 판단한다. 섀도 테스트도 마찬가지다. 사용자에게 나가는 답은 여전히 기존 시스템이 만들지만, 새 시스템도 뒤에서 같은 요청을 받아 답을 만들어 보고, 그 결과는 사용자에게 전달되지 않은 채 조용히 저장되고 비교된다.
왜 이렇게 번거로운 일을 할까. 새 버전을 곧바로 사용자에게 내보냈다가 갑자기 엉뚱한 답을 내거나 느려지면 서비스 전체가 흔들릴 수 있기 때문이다. 실제 트래픽과 똑같은 조건에서 미리 문제를 잡아 두면, 정식으로 전환하는 순간의 위험을 크게 줄일 수 있다. 다만 새 시스템이 결제나 메시지 전송처럼 실제로 무언가를 실행해 흔적을 남기는 작업이라면, 그 부분만은 흉내만 내도록 따로 막아둬야 안전하다.
직접 해보기
새 버전을 도입하기 전 안전하게 검증하고 싶다면, AI 코딩 도구에 이렇게 요청해 볼 수 있다.
새로 만든 모델(또는 함수) 버전을 기존 버전과 나란히 실행하되, 사용자에게는 기존 버전의 응답만 돌려주고 새 버전의 응답은 로그 파일에만 기록하도록 코드를 짜줘. 두 응답을 비교할 수 있게 요청 ID도 같이 남겨줘.
