Files
zellyy-finance/docs/sentry-setup.md
hansoo 8343b25439 feat: Stage 2 TypeScript 타입 안전성 개선 - any 타입 83개 → 62개 대폭 감소
 주요 개선사항:
- any 타입 83개에서 62개로 21개 수정 (25% 감소)
- 모든 ESLint 에러 11개 → 0개 완전 해결
- 타입 안전성 대폭 향상으로 런타임 오류 가능성 감소

🔧 수정된 파일들:
• PWADebug.tsx - 사용하지 않는 import들에 _ prefix 추가
• categoryUtils.ts - 불필요한 any 캐스트 제거
• TransactionsHeader.tsx - BudgetData 인터페이스 정의
• storageUtils.ts - generic 타입과 unknown 타입 적용
• 각종 error handler들 - Error | {message?: string} 타입 적용
• test 파일들 - 적절한 mock 인터페이스 정의
• 유틸리티 파일들 - any → unknown 또는 적절한 타입으로 교체

🏆 성과:
- 코드 품질 크게 향상 (280 → 80 문제로 71% 감소)
- TypeScript 컴파일러의 타입 체크 효과성 증대
- 개발자 경험 개선 (IDE 자동완성, 타입 추론 등)

🧹 추가 정리:
- ESLint no-console/no-alert 경고 해결
- Prettier 포맷팅 적용으로 코드 스타일 통일

🎯 다음 단계: 남은 62개 any 타입 계속 개선 예정

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 10:08:51 +09:00

5.2 KiB

Sentry.io 설정 가이드

1. Sentry 계정 생성

  1. Sentry.io에서 무료 계정 생성
  2. "Create Project" 클릭
  3. Platform: React 선택
  4. 프로젝트명: zellyy-finance
  5. 팀/조직 설정 (개인 계정 사용 가능)

2. DSN 및 설정 정보 획득

DSN (Data Source Name) 가져오기

  1. 프로젝트 생성 후 자동으로 표시되는 DSN 복사
  2. 또는 Settings > Projects > [프로젝트명] > Client Keys (DSN) 에서 확인
  3. 형식: https://[키]@[지역].ingest.sentry.io/[프로젝트ID]

Auth Token 생성 (소스맵 업로드용)

  1. Settings > Auth Tokens 메뉴 이동
  2. "Create New Token" 클릭
  3. 권한 설정:
    • project:read
    • project:write
    • org:read
  4. 토큰 이름: zellyy-finance-sourcemaps
  5. 생성된 토큰을 안전하게 보관

조직 및 프로젝트 정보 확인

  1. Settings > General Settings에서 조직명 확인
  2. Settings > Projects에서 프로젝트명 확인

3. 환경 변수 설정

개발환경 (.env)

# Sentry 모니터링 설정
VITE_SENTRY_DSN=https://your_actual_dsn@sentry.io/123456
VITE_SENTRY_ENVIRONMENT=development

# Sentry 빌드 관련
SENTRY_ORG=your_organization_name
SENTRY_PROJECT=zellyy-finance
SENTRY_RELEASE=zellyy-finance@1.0.0
SENTRY_DISABLE_SOURCEMAPS=true

프로덕션 환경 (Vercel, Netlify 등)

# Sentry 모니터링 설정
VITE_SENTRY_DSN=https://your_actual_dsn@sentry.io/123456
VITE_SENTRY_ENVIRONMENT=production

# Sentry 빌드 관련 (소스맵 업로드용)
SENTRY_ORG=your_organization_name
SENTRY_PROJECT=zellyy-finance
SENTRY_AUTH_TOKEN=your_auth_token_here
SENTRY_RELEASE=zellyy-finance@1.0.0
SENTRY_DISABLE_SOURCEMAPS=false

4. 소스맵 업로드 테스트

로컬에서 프로덕션 빌드 테스트

# 소스맵과 함께 프로덕션 빌드
npm run build:sentry

# 빌드 후 dist 폴더 확인
ls -la dist/
# *.js.map 파일들이 생성되었다가 Sentry 업로드 후 삭제되는지 확인

배포 환경에서 소스맵 확인

  1. Sentry 대시보드에서 Releases 메뉴 이동
  2. 최신 릴리즈 클릭
  3. Artifacts 탭에서 업로드된 소스맵 파일 확인

5. 에러 추적 테스트

개발환경에서 테스트

  1. 브라우저에서 F12 개발자 도구 열기
  2. Console에서 Sentry 테스트 버튼 클릭
  3. Sentry 대시보드에서 Issues 메뉴에서 테스트 에러 확인

프로덕션 에러 테스트

// 의도적으로 에러 발생시키기
throw new Error("프로덕션 테스트 에러");

6. 성능 모니터링 설정

Core Web Vitals 확인

  1. Sentry 대시보드에서 Performance 메뉴 이동
  2. Web Vitals 탭에서 LCP, FID, CLS 지표 확인
  3. 페이지별 성능 분석

커스텀 트랜잭션 추적

import { trackEvent, measurePerformance } from '@/lib/sentry';

// 사용자 행동 추적
trackEvent('transaction_created', { amount: 1000, category: 'food' });

// 성능 측정
const startTime = performance.now();
await expensiveOperation();
measurePerformance('expensive_operation', startTime);

7. 알림 설정

이메일 알림 설정

  1. Settings > Notifications 메뉴 이동
  2. Email 탭에서 알림 규칙 설정:
    • 새로운 이슈 발생 시 즉시 알림
    • 이슈 재발생 시 알림
    • 성능 저하 감지 시 알림

Slack 통합 (선택사항)

  1. Settings > Integrations 메뉴 이동
  2. Slack 통합 설정
  3. 알림받을 채널 설정

8. 릴리즈 추적

자동 릴리즈 추적

# 빌드 시 자동으로 릴리즈 생성 및 배포 기록
npm run build:prod
npm run deploy

수동 릴리즈 관리

# 새 릴리즈 생성
npm run sentry:release

# 배포 기록
npm run sentry:deploy

9. 보안 고려사항

민감한 정보 필터링

  • 이미 src/lib/sentry.ts에서 설정됨:
    • 비밀번호, 토큰 포함 에러 메시지 필터링
    • 로컬호스트 에러 필터링
    • 세션 재생에서 텍스트 마스킹

소스맵 보안

  • 프로덕션 빌드 후 로컬 소스맵 파일 자동 삭제
  • Sentry에만 저장되어 에러 디버깅 시 활용

10. 문제 해결

소스맵 업로드 실패

# Sentry CLI 설치 및 직접 업로드 테스트
npm install -g @sentry/cli
sentry-cli releases files $SENTRY_RELEASE upload-sourcemaps ./dist

에러 추적이 안 될 때

  1. DSN이 올바르게 설정되었는지 확인
  2. 네트워크 방화벽/브라우저 확장 프로그램 확인
  3. 개발자 도구 Network 탭에서 Sentry 요청 확인

성능 데이터가 수집되지 않을 때

  • tracesSampleRate가 0보다 큰지 확인
  • 프로덕션 환경에서는 샘플링 비율이 낮을 수 있음 (0.1 = 10%)

11. 비용 최적화

무료 플랜 한도

  • 월간 5,000 에러 이벤트
  • 10,000 성능 트랜잭션
  • 1개월 데이터 보존

샘플링 조정

// 개발환경
tracesSampleRate: 1.0,  // 100% 수집
replaysSessionSampleRate: 0.1,  // 10% 세션 재생

// 프로덕션환경  
tracesSampleRate: 0.1,  // 10% 수집
replaysSessionSampleRate: 0.05,  // 5% 세션 재생

이 설정으로 Sentry를 통한 포괄적인 에러 추적 및 성능 모니터링이 가능합니다.