💡 핵심 인사이트
섀도우 배포(Shadow Deployment, 다크 론칭)는 신버전 V2 서버를 라이브 띄워놓긴 하지만, 고객에게 화면을 보여주지는 않고 기존 구버전(V1)으로 들어오는 전 세계의 엄청난 "진짜 고객 트래픽"을 몰래 거울처럼 복사(Mirroring)해서 V2 서버 뒤통수에 때려 박으며 스트레스 테스트만 진행하는 궁극의 심해 실험 기법입니다.


Ⅰ. 테스트 환경(QA)의 명확한 한계

배포 전에 아무리 QA팀이 테스트 서버(Staging)에 모여서 열심히 클릭을 해봐야, 테스트 환경과 실제 라이브 환경(Production)은 하늘과 땅 차이입니다.

  • 테스트 환경에는 고작 초당 10번의 요청이 오지만, 블랙프라이데이 운영 서버에는 **초당 10만 번의 미친 트래픽(부하)**이 쏟아집니다.
  • 유저들이 요상한 특수문자나 이모티콘을 검색창에 치는 '미친 데이터 엣지 케이스'는 인간 테스터가 절대 상상으로 재현할 수 없습니다. 결국 "진짜 리얼 고객 데이터와 트래픽"을 먹여봐야만 서버가 안 터질지 100% 확신할 수 있습니다.

Ⅱ. 섀도우 배포의 흑마법 (트래픽 미러링)

고객을 희생양(카나리아)으로 쓰지 않으면서도 진짜 트래픽을 먹여보는 기적의 해결책입니다. (주로 AWS 넷스위치나 Nginx, Istio 등의 프록시 레벨에서 지원합니다.)

  1. V2 서버의 잠행: 엔지니어가 신버전 V2 서버를 라이브 구역에 띄웁니다. 하지만 고객의 라우터는 V1으로만 향하게 세팅합니다.
  2. 트래픽 복제 (Mirroring/Shadowing): 라우터(로드밸런서)에게 흑마법을 겁니다. "고객이 V1 서버에 HTTP 결제 요청을 쏘면, 그 요청 데이터를 토씨 하나 안 틀리고 똑같이 복사(Mirror)해서 몰래 숨어있는 V2 서버에도 던져버려!"
  3. 응답의 버림 (Mute): V2 서버는 쏟아지는 진짜 10만 건의 트래픽을 맞으며 피 터지게 연산(DB 조회, CPU 폭발)을 수행합니다. 그런데 V2 서버가 계산을 다 끝내고 내뱉는 결괏값(응답)은 라우터가 그냥 휴지통에 쿨하게 버려버립니다. 고객 화면에는 오직 100% 안전한 V1 서버의 결괏값만 무사히 보입니다.

Ⅲ. 섀도우 배포의 장점과 한계

장점 (Zero Risk 스트레스 테스트)

고객은 내가 실험 쥐가 된 줄도 모릅니다. 단 1의 오류도 겪지 않습니다. 반면 SRE 엔지니어는 뒤에 숨겨진 V2 서버의 모니터를 보며, "아! V2 코드에 진짜 10만 트래픽을 부어보니 메모리 누수가 나서 10분 만에 서버가 뻗어버리네!"라는 엄청난 실전 데이터(버그)를 안전하게 획득할 수 있습니다.

단점 (인프라 파탄과 DB 꼬임)

  1. 돈이 엄청 듭니다: V1과 똑같이 거대한 트래픽을 받아내야 하므로 V2 서버도 엄청난 크기로 빵빵하게 켜둬야 합니다.
  2. DB 스키마 지옥 (★가장 큰 문제): 조회(GET) 요청은 10번 복사해서 때려도 문제가 없지만, 게시글 등록(POST)이나 돈 결제(INSERT) 요청을 똑같이 복사해서 V2에 던져버리면? V2가 물고 있는 DB에 실제로 결제가 2번 긁히는 미친 부작용이 터집니다. 따라서 복제된 트래픽이 운영 DB를 훼손하지 않도록 가짜 DB(Mock)나 철저한 분리 격벽 세팅이 필수라 난이도가 최상급입니다.

📢 섹션 요약 비유: 섀도우 배포는 전투기 파일럿 훈련에 쓰는 **'시뮬레이터 콕핏'**입니다. 실제 전투(V1)에 투입된 교관의 비행 데이터(트래픽)가 신입 조종사(V2)가 탄 시뮬레이터 화면에 똑같이 쏟아집니다. 신입 조종사는 땀을 뻘뻘 흘리며 조종간을 당기다 미사일에 맞아 추락하지만(버그 발생), 이는 가짜 시뮬레이터(응답 버림)이므로 실제 전투기(고객 화면)는 아무 일 없이 교관의 조종대로 평화롭게 날아가는 궁극의 안전 무중단 테스트 기법입니다.