'배포됨'이 '동작함'은 아니야
deploy 작업이 성공이면 코드가 런타임에 닿았다는 뜻이야. 런타임이 제대로 동작하는지는 완전히 다른 문제지. 스모크 테스트가 바로 그걸 확인해 줘.
뭘 검사할까
- 상태 확인 엔드포인트 —
/health가 방금 배포한 빌드 SHA와 일치하는 200 응답을 반환하는지 확인해. - 핵심 사용자 플로우 하나 — 로그인, 프로필 가져오기, 로그아웃. 최소한의 '앱이 살아있나' 확인 정도면 돼.
- 외부 연동 — DB 쿼리, 캐시 적중, 서드파티 API 핑.
- 에셋 URL — 메인 페이지가 예상한 제목과 CSS 번들 해시를 포함한 HTML을 반환하는지 봐.
스모크 테스트는 어디에 들어갈까
- 배포 전: 스테이징 배포 작업 후, 프로덕션 배포를 시작하기 전에 스테이징에서 스모크 테스트를 돌려.
- 배포 후: 프로덕션 배포 직후 프로덕션에서 스모크 테스트를 돌려. 실패하면 롤백 워크플로를 실행해.
스모크 테스트 vs 풀 e2e
스모크 테스트는 빠르고(60초 이하) 서비스가 살아있는지 확인하는 용도야. 풀 엔드투엔드 테스트는 더 느리고(5~30분) 현실적인 조건에서 동작을 검사하지. 둘은 역할이 달라. 스모크 테스트는 배포 게이트 역할을 하고, e2e는 야간에 돌려.