개발 slecs

베타 런치를 위한 Sentry·Waitlist·문서 준비 완료

목차

6주차 끝, 베타 런치 준비를 선언하는 커밋을 머지했다.

한 커밋에 Sentry 설정, Waitlist 연동, README 문서화가 한꺼번에 들어온 걸 보면 "이제 외부에 열겠다"는 선언에 가까운 작업이었다. 기능 개발이 아니라 운영 가능한 상태로 올리는 작업 — 이런 커밋이 팀 입장에서 오히려 더 중요할 때가 많다.


왜 이 세 가지를 한 번에 묶었나

기능은 이미 있었다. 문제는 "배포했을 때 무슨 일이 일어나는지 볼 수 있느냐"였다.

베타 런치 준비를 점검할 때 내가 항상 보는 체크리스트가 있다.

  • 에러가 터졌을 때 우리가 먼저 알 수 있는가?
  • 유저가 접근할 수 있는 진입점(Waitlist)이 있는가?
  • 신규 팀원이나 외부 기여자가 프로젝트를 이해할 수 있는가?

Sentry, Waitlist, README — 각각이 딱 이 세 질문의 답이었다. 개별 PR로 쪼갤 수도 있었지만, 이 셋이 묶여야 "런치 레디"라는 상태가 완성된다고 봤기 때문에 하나의 맥락으로 묶었다. 코드리뷰 때도 "이게 왜 한 커밋이야"라는 코멘트가 나올 수 있는데, 이런 경우엔 상태 전환을 단위로 커밋을 묶는 게 맞다고 생각한다.


Sentry 설정 — client / server / edge 세 파일의 의미

변경 파일을 보면 sentry.client.config.ts, sentry.server.config.ts, sentry.edge.config.ts 세 파일이 모두 들어가 있다.

apps/web/
├── sentry.client.config.ts   # 브라우저에서 실행되는 에러 캡처
├── sentry.server.config.ts   # Node.js 런타임 (SSR, API Route)
├── sentry.edge.config.ts     # Edge Runtime (Middleware, Edge API)
└── next.config.js            # Sentry 플러그인 바인딩

Next.js 앱에서 Sentry를 붙일 때 이 세 진입점을 놓치는 경우가 생각보다 많다. 특히 Edge Runtime을 빼먹으면, Middleware 쪽에서 터지는 에러는 아예 잡히지 않는다. next.config.js에는 @sentry/nextjswithSentryConfig 래퍼가 들어가서 빌드 타임에 소스맵 업로드와 번들 설정을 처리한다.

파일 런타임 주요 역할
sentry.client.config.ts Browser CSR 에러, 성능 트레이싱
sentry.server.config.ts Node.js SSR, API Route 에러
sentry.edge.config.ts Edge Middleware, Edge Function 에러
next.config.js Build 소스맵 업로드, 번들 래핑

세 파일을 따로 두는 이유는 런타임마다 사용할 수 있는 API가 다르고, 샘플링 비율이나 integrations 설정도 환경별로 달리 가져가야 하기 때문이다. 예를 들어 Edge에선 Node.js 전용 integration을 쓸 수 없다.

// sentry.edge.config.ts 패턴 예시
import * as Sentry from "@sentry/nextjs";

Sentry.init({
  dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
  tracesSampleRate: 0.1, // Edge는 호출량이 많으므로 낮게
});

팀에서 Sentry를 처음 붙이는 경우라면, DSN을 환경변수로만 관리하고 .env.local에 절대 커밋하지 않는 것, 그리고 SENTRY_AUTH_TOKEN은 CI/CD 시크릿으로만 다루는 것 — 이 두 가지를 코드리뷰 체크리스트에 넣어두면 좋다.


README와 Waitlist — 개발 외적 런치 준비

README.md 업데이트는 커밋 메시지에서 "docs"로 표현됐는데, 베타 런치 시점의 README는 단순 문서가 아니다. 새 팀원이 온보딩하는 입구이기도 하고, 외부에서 프로젝트를 처음 보는 사람의 첫인상이기도 하다. 이 시점에 README를 정리하지 않으면 런치 이후에 "이거 어떻게 실행해요?"라는 질문이 계속 들어온다 — 경험담이다.

Waitlist는 아직 전체 공개 전에 관심 있는 사용자를 모아두는 장치다. 베타 단계에서 Waitlist 없이 바로 열면 감당하기 어려운 트래픽이 오거나, 반대로 피드백을 줄 수 있는 초기 유저 풀이 확보되지 않는다. 어느 쪽이든 리스크가 있다. Waitlist를 먼저 여는 건 "우리가 준비되는 속도에 맞춰 유저를 들여보내겠다"는 컨트롤이다.


6주 스프린트의 끝, 런치 레디란 무엇인가

Week 6라는 태깅이 눈에 띈다. 6주 동안 쌓아온 결과물이 이 커밋 하나로 "외부에 보여줄 수 있는 상태"가 됐다는 선언이다.

팀 리딩 입장에서 "런치 레디"를 판단할 때 내가 보는 기준은 이렇다.

  • 관측 가능성: 에러와 이상 징후를 실시간으로 볼 수 있는가 (→ Sentry)
  • 진입 제어: 유저 유입을 제어할 수 있는가 (→ Waitlist)
  • 지식 외재화: 팀 외부도 이 프로젝트를 이해할 수 있는가 (→ README)
  • 롤백 가능성: 문제가 생겼을 때 빠르게 되돌릴 수 있는가

마지막 항목이 이번 커밋엔 명시적으로 안 보이지만, 앞의 세 가지가 갖춰졌다는 건 그 자체로 팀의 대응 속도를 높여준다. Sentry 알림이 오는 시점부터 우리는 유저보다 먼저 문제를 알 수 있다.

6주의 결과물을 이 세 줄짜리 커밋 메시지가 담고 있다. 그게 좋은 커밋이라고 생각한다.

끝.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.