Skip to content

Init/centry#293

Merged
manNomi merged 2 commits intosolid-connection:mainfrom
manNomi:init/centry
Oct 29, 2025
Merged

Init/centry#293
manNomi merged 2 commits intosolid-connection:mainfrom
manNomi:init/centry

Conversation

@manNomi
Copy link
Copy Markdown
Contributor

@manNomi manNomi commented Oct 28, 2025

관련 이슈

  • resolves: #이슈 번호

작업 내용

  • 센트리 최신화 작업 진행

- Sentry를 프로덕션(NODE_ENV=production) 환경에서만 초기화
- tracesSampleRate를 1.0에서 0.3으로 조정 (성능 최적화)
- localhost 제거, 프로덕션 도메인만 tracePropagationTargets에 포함
- 테스트용 페이지 및 API 라우트 제거
@manNomi manNomi requested a review from wibaek as a code owner October 28, 2025 05:26
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Oct 28, 2025

📋 Walkthrough

Sentry 초기화 설정 파일 세 개(클라이언트, 엣지, 서버)가 프로덕션 환경 전용 조건부 가드로 감싸져 수정되었습니다. 각 파일에서:

  1. NODE_ENV === "production" 조건으로 초기화 로직 보호
  2. 기본 환경값을 "development"에서 "production"으로 변경
  3. 트레이스 샘플링 비율을 1.0에서 0.3으로 인하
  4. 클라이언트 설정에 브라우저 트레이싱 및 리플레이 통합 추가
  5. 서버 설정에 기본 개인정보(헤더, IP) 전송 활성화

🎯 Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

추가 검토 필요 영역:

  • sentry.client.config.ts의 browserTracingIntegration과 replayIntegration 설정 옵션 검증 (tracePropagationTargets, maskAllText, blockAllMedia 등)
  • 세 파일의 환경 변수 기본값 설정이 올바르게 적용되었는지 확인 (NEXT_PUBLIC_SENTRY_* 환경변수 우선순위)
  • 프로덕션 가드로 인한 개발/스테이징 환경에서의 Sentry 동작 변경 영향 범위

👥 Suggested reviewers

  • wibaek

Pre-merge checks and finishing touches

❌ Failed checks (3 warnings)
Check name Status Explanation Resolution
Title Check ⚠️ Warning PR 제목 "Init/centry"는 변경 사항의 실제 내용을 명확히 전달하지 못하고 있습니다. 제목이 과도하게 축약되어 있어 "Sentry 초기화 설정 업데이트"라는 주요 변경 의도를 이해하기 어렵습니다. 실제 변경 사항은 Sentry 설정 파일 3개에서 프로덕션 환경 전용 가드 추가, 샘플링 레이트 조정, 통합 기능 추가 등 상당한 규모의 구성 변경이 발생했으나, 제목만으로는 이를 파악할 수 없습니다. 코드 히스토리를 훑어보는 팀원이 이 PR의 목적을 즉시 이해하기 어려울 것 같습니다. PR 제목을 더 명확하고 구체적으로 수정하기를 권장합니다. 예를 들어 "Sentry 설정을 프로덕션 환경 전용으로 개선" 또는 "Sentry 초기화 및 샘플링 설정 업데이트"와 같이 변경하면 주요 변경 사항이 한눈에 들어올 것입니다. 축약된 용어나 모호한 표현보다 명확한 동작 설명이 필요합니다.
Description Check ⚠️ Warning PR 설명이 필수 항목들을 충분히 채우지 못해 평가 기준을 만족하지 않습니다. 1. "관련 이슈" 섹션에 실제 이슈 번호 없이 플레이스홀더 "#이슈 번호"만 남아있고, 2. "작업 내용"은 "센트리 최신화 작업 진행"이라는 매우 추상적인 한 줄로만 작성되어 있어 구체적인 변경 사항이 전혀 설명되지 않았습니다. 3. "특이 사항" 섹션이 전적으로 누락되었는데, 프로덕션 환경 가드 추가와 샘플링 레이트 변경 같은 중요한 구성 변경사항에 대한 설명이 필요합니다. 4. "리뷰 요구사항"은 선택사항이지만 이러한 변경들에 대한 리뷰 중점사항 안내가 있으면 도움이 될 것입니다. 다음 항목들을 추가하여 설명을 보완하기를 강력히 권장합니다. 1. 관련 이슈 섹션에 실제 GitHub 이슈 번호를 입력하고, 2. 작업 내용에 "3개의 Sentry 설정 파일에서 프로덕션 전용 초기화 가드 추가", "트레이스 샘플링 레이트를 1.0에서 0.3으로 조정", "브라우저 추적 및 리플레이 통합 추가" 등 구체적인 변경사항을 설명하며, 3. 특이 사항 섹션에 이러한 설정 변경이 에러 추적 및 성능 모니터링에 미치는 영향을 명시해주세요.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
sentry.client.config.ts (1)

9-11: 클라이언트 측 개인 정보 수집도 활성화되어 있습니다

서버 설정과 동일하게 sendDefaultPii: true가 설정되어 있어, 클라이언트 측에서도 사용자 정보를 수집합니다. 서버 설정 리뷰에서 언급한 프라이버시 정책 검토가 클라이언트 측에도 적용됩니다.

🧹 Nitpick comments (1)
sentry.client.config.ts (1)

17-21: 세션 리플레이 샘플링 비율을 검토해주세요

현재 설정:

  1. 일반 세션: 10% 녹화 (replaysSessionSampleRate: 0.1)
  2. 에러 세션: 100% 녹화 (replaysOnErrorSampleRate: 1.0)

고려사항:

  • 10%의 세션 녹화는 트래픽이 많은 서비스의 경우 상당한 양의 사용자 행동 데이터를 수집합니다
  • sendDefaultPii와 결합되면 개인 정보 수집 범위가 넓어집니다
  • Sentry 비용도 증가할 수 있습니다

권장사항:

  • 초기에는 5% (0.05) 정도로 시작하여 필요에 따라 조정
  • 에러 리플레이 100%는 디버깅에 유용하므로 유지 권장

필요시 샘플링 비율을 조정하려면:

-    replaysSessionSampleRate: 0.1, // 일반 세션의 10%
+    replaysSessionSampleRate: 0.05, // 일반 세션의 5%
     replaysOnErrorSampleRate: 1.0, // 에러 발생 시 100%
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cb905ec and f032f95.

📒 Files selected for processing (3)
  • sentry.client.config.ts (1 hunks)
  • sentry.edge.config.ts (1 hunks)
  • sentry.server.config.ts (1 hunks)
🔇 Additional comments (6)
sentry.server.config.ts (2)

6-23: 서버 사이드 Sentry 설정이 일관성 있게 구성되었습니다

엣지 설정과 동일한 패턴을 따르고 있어 유지보수가 용이합니다:

  1. 프로덕션 환경 가드: 개발 환경 노이즈 방지 ✓
  2. 샘플링 비율 30%: 비용과 가시성의 균형 ✓
  3. 디버그 모드 비활성화: 프로덕션 로그 클린 ✓

sendDefaultPii 옵션에 대한 프라이버시 검토만 완료되면 배포 준비가 완료됩니다.


12-14: sendDefaultPii 활성화로 인한 개인정보 처리 - GDPR 준수 필수

sendDefaultPii: true 설정은 사용자 IP 주소, 이메일/ID/사용자명, 쿠키, 요청 헤더 등 추가 개인정보를 Sentry로 전송합니다. EU 개인정보보호규정(GDPR) 준수를 위해 다음 사항들을 확인하고 구현해주세요:

  1. 법적 근거 및 계약 확인

    • 개인정보 처리의 법적 근거(동의/정당한 이익 등) 문서화
    • Sentry와 데이터 처리 부속약정(DPA) 체결 여부 확인
  2. 개인정보 최소화 설정

    • Sentry 프로젝트의 Security & Privacy 설정에서 민감한 헤더/필드 제외
    • 데이터 스크러빙(data scrubbing) 규칙 적용
    • IP 지리정보 수집 비활성화 또는 IP 익명화 구성
  3. 투명성 및 사용자 권리

    • 개인정보 처리방침에 Sentry를 통한 데이터 처리 내역 명시
    • 사용자 동의 프로세스 및 데이터 주체 권리 이행 절차 마련
  4. 위험 평가

    • 고위험 처리인 경우 개인정보 영향평가(DPIA) 수행
    • Sentry의 보안 인증(ISO/SOC 보고서) 확인
sentry.client.config.ts (3)

6-7: 클라이언트 측 환경 변수 설정이 올바릅니다

NEXT_PUBLIC_ 접두사를 사용하여 브라우저에서 접근 가능한 환경 변수를 올바르게 참조하고 있습니다:

  1. DSN: NEXT_PUBLIC_SENTRY_DSNSENTRY_DSN"" 순으로 폴백
  2. 환경: NEXT_PUBLIC_SENTRY_ENVIRONMENTSENTRY_ENVIRONMENT"production" 순으로 폴백

참고: NEXT_PUBLIC_ 접두사가 붙은 변수는 클라이언트 번들에 포함되어 브라우저에 노출됩니다. DSN은 공개되어도 안전하지만, 다른 민감한 정보는 이 패턴을 사용하지 않도록 주의해주세요.


32-35: 세션 리플레이 프라이버시 설정이 훌륭합니다!

사용자 프라이버시를 최우선으로 고려한 설정입니다:

  1. maskAllText: true: 모든 텍스트 콘텐츠 마스킹 ✓
    • 사용자 입력, 개인 정보, 민감한 데이터가 녹화되지 않음
  2. blockAllMedia: true: 모든 이미지/비디오 차단 ✓
    • 미디어를 통한 개인 식별 방지

이 설정으로 사용자 행동 패턴과 UI 상호작용은 추적하면서도 실제 콘텐츠는 보호됩니다. 세션 리플레이의 모범 사례를 따르고 있습니다.


25-29: tracePropagationTargets 설정이 실제 사용 도메인과 불일치 - 긴급 검증 필요

코드베이스 분석 결과, 다음과 같은 문제가 확인되었습니다:

  1. 실제 API 엔드포인트 vs 설정의 불일치

    • 실제 사용: https://api.stage.solid-connection.com (개발) 및 https://solid-connection.com (프로덕션)
    • 설정된 문자열: "solid-connection.com" → 이 패턴은 https://api.stage.solid-connection.com을 포함하는 모든 요청을 매칭
    • 설정된 정규식: /^https:\/\/(www\.)?solid[\-]?connection\.com/https://api.stage.solid-connection.com을 매칭하지 않음 (서브도메인 차단)
  2. 패턴 간 동작 차이의 보안 위험

    • 문자열 "solid-connection.com"은 URL에 해당 문자열이 어디든 포함되면 매칭 (예: https://fakesolid-connection.com)
    • 정규식은 정확한 도메인만 매칭 (더 안전)
    • 두 패턴을 함께 사용하면 의도하지 않은 도메인까지 추적될 가능성
  3. 필수 확인 사항

    • 스테이징 API 서브도메인 (api.stage.solid-connection.com)에 대한 트레이싱이 의도된 것인지
    • solidconnection.com (하이픈 없음)도 실제 운영 도메인인지
    • 보다 명확한 패턴으로 재구성이 필요한지 (예: ["solid-connection.com", "api.stage.solid-connection.com", /^https:\/\/(www\.)?solid[\-]?connection\.com/])
sentry.edge.config.ts (1)

7-20: 추가 검증을 위해 배포 설정과 Sentry의 빈 DSN 처리 방식을 확인하겠습니다.

Sentry 초기화 방식이 최고의 관행을 따르고 있습니다! 수정할 사항이 없습니다.

  1. 프로덕션 환경 보호: 프로덕션에서만 초기화하는 조건부 로직은 완벽합니다.

  2. 빈 DSN 처리는 안전합니다: Sentry SDK는 공식적으로 빈 DSN을 유효한 설정으로 받아들이며, 빈 DSN으로 초기화된 경우 SDK는 네트워크로 데이터를 전송하지 않습니다. 이는 설계된 대로의 동작이며, 개발 환경에서 불필요한 에러 리포팅을 방지하는 우아한 방식입니다.

  3. 샘플링 비율 30%: 성능 모니터링에 적절한 수준입니다.

  4. 디버그 플래그 비활성화: 프로덕션 환경에서 깔끔한 로그를 유지합니다.

@manNomi manNomi merged commit c6e207f into solid-connection:main Oct 29, 2025
1 check passed
@manNomi manNomi deleted the init/centry branch December 11, 2025 07:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant