Sentry — 개념, 원리 및 오류 수집

저자: IT Sectr 게시일: 2026-05-29 읽는 시간: 8 분

Sentry는 실시간 오류 추적 및 애플리케이션 성능 모니터링 플랫폼으로, 개발자에게 각 충돌의 전체 컨텍스트를 제공합니다. Sentry Documentation, 2025에 따르면, Sentry는 하루 100억 개 이상의 이벤트를 처리하며 iOS, Android, 웹 및 백엔드를 위한 90개 이상의 언어 및 프레임워크와의 통합을 제공합니다.

핵심 요점

  • Sentry는 90개 이상의 언어와 플랫폼을 지원하는 오픈 소스 오류 추적 및 성능 모니터링 플랫폼입니다.
  • Error events — 전체 스택 추적, 변수 값 및 장치 상태를 포함한 자동 예외 수집.
  • Breadcrumbs — 오류 발생 전의 사용자 작업 및 시스템 이벤트 순서.
  • Source maps — 프로덕션에서 읽을 수 있는 호출 스택을 복원하기 위한 축소된 코드 난독 해제.
  • Performance Tracing — 모든 서비스에 걸친 분산 추적을 통한 트랜잭션 실행 시간 모니터링.

개발에서 Sentry란

Sentry는 2012년에 설립된 오픈 소스 크래시 리포팅 및 성능 모니터링 플랫폼입니다. 개발자는 완전한 진단 컨텍스트(호출 스택, 충돌 시점의 변수 값, 오류 전 사용자 작업 순서, 환경 상태)와 함께 실시간으로 오류 알림을 받을 수 있습니다.

집계된 크래시 리포팅 서비스(Google Play Console, App Store Connect)는 통계 및 기본 그래프만 제공하는 반면, Sentry는 각 이벤트를 개별적으로 표시하며 오류 유형별 그룹화 및 앱 버전별 필터링이 가능합니다. Sentry의 Issue는 동일한 스택 추적을 가진 이벤트 그룹으로, 수천 개의 동일한 충돌에 묻히지 않고 완전한 컨텍스트로 근본 원인 해결에 집중할 수 있습니다.

Sentry(2025)에 따르면 Sentry SDK 도입 후 평균 오류 감지 시간이 30분에서 30초로 단축되고, 자동 breadcrumbs 및 환경 컨텍스트 덕분에 진단 시간이 60% 감소합니다. 이 플랫폼은 Airbnb, Microsoft, Instagram, PayPal을 포함한 전 세계 100,000개 이상의 조직에서 사용되며 매일 수십억 개의 이벤트를 처리합니다.

Sentry 아키텍처: SDK, Relay 및 이벤트 처리

Sentry 시스템은 세 가지 주요 구성 요소로 구성됩니다: 애플리케이션 측의 SDK, Relay(프록시 서버) 및 이벤트 처리 백엔드. Sentry SDK는 애플리케이션에 내장되는 라이브러리로, 예외를 가로채고 컨텍스트를 수집하여 JSON/HTTPS 프로토콜을 통해 Relay로 이벤트를 전송합니다.

Sentry Relay

Relay는 회사 인프라에 배포할 수 있는 중간 서버입니다. SDK에서 이벤트를 수신하고 규칙(PII 데이터, 불필요한 이벤트)에 따라 필터링하며 버퍼링한 후 Sentry SaaS 또는 자체 호스팅 인스턴스로 전달합니다. Relay는 낮은 지연 시간을 보장합니다 — 일반적인 이벤트 수신 시간은 500~1500ms입니다.

인바운드 데이터 필터

Sentry는 서버로 전송하기 전에 원치 않는 이벤트를 폐기하는 내장 필터를 제공합니다: 테스트 환경의 오류, 오래된 앱 버전의 오류, 동일한 지문의 중복 이벤트. Filtering은 일반적인 프로덕션 프로젝트에서 최대 70%의 데이터 볼륨을 절약하여 소비 비용과 장치 통신 채널 부하를 줄입니다.

iOS 및 Android용 Sentry SDK 설정

모바일 플랫폼용 Sentry SDK 설치는 5~10분이 소요되며 종속성 추가 및 DSN 키로 초기화가 필요합니다. DSN(Data Source Name)은 Sentry의 고유 프로젝트 식별자로, 이벤트를 보낼 위치를 지정합니다.

Android 설정

Android의 경우 Sentry는 Gradle 플러그인을 통해 자동 계측을 제공합니다. 플러그인은 컴파일 시 바이트코드를 수정하여 모든 Activity, Fragment 및 네트워크 호출에 래퍼를 추가합니다. Auto-instrumentation은 build.gradle에서 하나의 옵션으로 활성화되며 코드 변경 없이 애플리케이션 수명 주기에서 breadcrumbs를 얻을 수 있습니다.

kotlin
import io.sentry.Sentry

class App : Application() {
    override fun onCreate() {
        super.onCreate()
        Sentry.init { options ->
            options.dsn = "https://example@sentry.io/project"
            options.tracesSampleRate = 0.2
            options.enableAutoSessionTracking = true
        }
    }
}

코드는 Android 애플리케이션에서 Sentry SDK를 초기화합니다. tracesSampleRate = 0.2 매개변수는 세션의 20%에 대해 성능 추적을 활성화하고, enableAutoSessionTracking은 각 앱 실행 시 자동으로 세션을 생성합니다.

iOS 설정

iOS용 SDK는 CocoaPods, Swift Package Manager 및 Carthage를 지원합니다. 설치 후 SDK는 자동으로 NSException, 신호(SIGABRT, SIGSEGV) 및 Swift 오류를 가로챕니다. Sentry Cocoa SDK는 iOS 12+ 및 macOS 10.13+와 호환되며 Swift Concurrency(async/await) 및 URLSession의 자동 계측을 지원합니다.

swift
import Sentry

class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        SentrySDK.start { options in
            options.dsn = "https://example@sentry.io/project"
            options.enableAutoPerformanceTracing = true
        }
        return true
    }
}

Swift 코드는 자동 성능 메트릭 수집과 함께 Sentry SDK를 활성화합니다. enableAutoPerformanceTracing은 추가 코드 없이 화면 로드 시간 및 HTTP 요청 모니터링을 활성화합니다.

Breadcrumbs는 오류에 선행하는 이벤트의 시간순 시퀀스입니다. Sentry는 버튼 누름, 화면 전환, HTTP 요청 및 시스템 알림에 대해 자동으로 breadcrumbs를 기록합니다. 개발자는 비즈니스 로직에 대한 사용자 정의 breadcrumbs를 추가할 수 있습니다.

각 breadcrumb에는 타임스탬프, 이벤트 유형(navigation, http, ui, error), 카테고리 및 임의 데이터가 포함됩니다. 오류가 발생하면 지난 2~5분(구성 가능)의 모든 breadcrumbs가 이벤트에 첨부됩니다. 이 컨텍스트는 스택 추적 자체보다 더 중요한 경우가 많습니다: 개발자는 사용자가 제품을 선택한 후 “결제”를 클릭했고 그 후에 충돌이 발생했음을 확인할 수 있습니다. 기본 최대 breadcrumbs 수는 200개이며, 그 이후에는 가장 오래된 레코드가 자동으로 제거됩니다.

kotlin
Sentry.addBreadcrumb(
    Breadcrumb().apply {
        category = "payment"
        message = "User tapped Pay button"
        type = "user"
        level = BreadcrumbLevel.INFO
        data["amount"] = "19.99"
        data["currency"] = "USD"
    }
)

코드는 결제 시나리오에서 사용자 작업에 대한 사용자 정의 breadcrumb을 추가합니다. 이 작업 후에 오류가 발생하면 개발자는 Sentry에서 사용자가 19.99 USD 금액으로 “결제”를 클릭한 것을 확인하여 결제 흐름에서 문제를 신속하게 찾을 수 있습니다.

사용자 컨텍스트

Sentry는 이벤트에 사용자 정보(ID, 사용자 이름, 이메일)를 첨부할 수 있습니다. User context는 동일한 세션의 모든 이벤트와 함께 자동으로 전송되어 사용자별로 오류를 그룹화하고 특정 버그의 영향을 받은 사용자 수를 확인할 수 있습니다. 개인정보 보호정책을 준수하고 애플리케이션 정책에서 허용하지 않는 경우 개인 데이터를 전송하지 않는 것이 중요합니다.

Source maps 및 디버그 심볼

iOS 및 Android의 프로덕션 빌드에서 코드는 일반적으로 축소되거나 난독화됩니다. 처리가 없으면 오류 스택에 “UserViewModel.fetchData()” 대신 “a.b()”와 같은 이해할 수 없는 이름이 포함됩니다. Source maps(JavaScript) 및 debug symbols(iOS의 dSYM, Android의 ProGuard 매핑)은 읽을 수 있는 스택을 복원합니다.

Android의 경우 Sentry는 릴리스 빌드 중에 Gradle 플러그인을 통해 ProGuard 매핑 파일을 자동으로 업로드합니다. iOS의 경우 dSYM 파일을 업로드해야 하며, Sentry는 보관 중 자동 업로드를 위한 스크립트를 제공합니다. 디버그 심볼이 없으면 Sentry의 오류 스택이 개발자에게 쓸모없게 되므로 업로드 프로세스가 CI/CD 파이프라인의 필수 단계여야 합니다.

Sentry를 통한 성능 모니터링

2020 버전부터 Sentry에는 성능 모니터링(분산 추적을 통한 트랜잭션 실행 시간 메트릭 수집)이 포함되어 있습니다. Sentry의 Transaction은 측정 가능한 작업 단위입니다: 화면 로드, API 요청 실행, 백그라운드 작업 처리. 각 트랜잭션에는 하위 스팬이 포함되어 특정 단계 중 가장 오래 걸린 단계를 보여줍니다.

Sentry의 성능 모니터링은 오류 추적과 통합되어 있습니다: 트랜잭션이 오류로 종료되면 해당 스팬이 “error” 상태로 표시되고 개발자는 성능 메트릭에서 예외 세부 정보로 이동할 수 있습니다. Trace ID는 모든 이벤트(오류, 트랜잭션, breadcrumbs)를 단일 세션으로 연결하여 종단 간 분석을 제공하며, 단일 Sentry 대시보드에서 Issues 및 Performance 탭 간의 원활한 전환을 제공합니다.

Sentry Performance Benchmark(2024)에 따르면 성능 모니터링이 활성화된(10% 샘플링 속도) 애플리케이션은 장치에서 2~5% 더 많은 트래픽과 1~2% 더 많은 CPU 리소스를 소비합니다. 이 오버헤드는 수동 프로파일링에 비해 성능 진단 시간이 70% 단축되어 보상됩니다.

자주 묻는 질문

Sentry는 Firebase Crashlytics와 어떻게 다른가요?

Sentry는 더 많은 컨텍스트를 제공합니다: breadcrumbs, 사용자 정의 데이터, 오류와 성능 연결. Firebase Crashlytics는 기본 크래시 리포팅을 제공하는 무료 도구이지만 분산 추적 및 사용자 정의 breadcrumbs 계측 기능이 없습니다. Sentry는 심층 진단이 필요한 프로젝트에 적합합니다.

모바일 애플리케이션용 Sentry 비용은 얼마인가요?

Sentry는 월 5,000개 이벤트(오류 + 트랜잭션)의 무료 요금제를 제공합니다. 유료 Team 요금제는 사용자당 월 26달러이며 100,000개의 이벤트를 포함합니다. 대규모 프로젝트의 경우 무제한 볼륨과 맞춤 가격의 Business 요금제를 이용할 수 있습니다.

Sentry는 오류의 개인 데이터를 어떻게 처리하나요?

Sentry는 내장된 Data Scrubbing 메커니즘을 제공합니다: 저장 전에 이벤트에서 이메일, IP 주소, 신용 카드 및 기타 PII 데이터를 자동으로 제거합니다. 스크러빙 규칙은 정규식을 지원하는 웹 인터페이스 또는 Relay 구성에서 설정됩니다. 민감한 데이터가 사용자 장치를 떠나지 않도록 SDK 수준에서 스크러빙을 활성화하는 것이 좋습니다.

Sentry를 자체 서버에서 실행할 수 있나요?

네, Sentry에는 완전한 오픈 소스 자체 호스팅 버전이 있습니다. Self-hosted Sentry는 Docker Compose를 통해 배포되며 SaaS 버전의 모든 기능을 포함합니다. 필요한 최소 서버 구성: 4 vCPU, 16GB RAM, 이벤트 저장용 100GB 디스크 공간.

Sentry는 SwiftUI와 Jetpack Compose를 지원하나요?

네, Sentry SDK는 SwiftUI(iOS 13+) 및 Jetpack Compose(Android)를 완전히 지원합니다. SwiftUI의 경우 SDK는 렌더링 시간 측정과 함께 NavigationView 및 List에 대한 트랜잭션을 자동으로 생성합니다. Jetpack Compose의 경우 CompositionLocalProvider를 통해 Composables에 Sentry 컨텍스트를 전달하는 사용자 정의 통합이 필요합니다.

요약

  • Sentry는 100,000개 이상의 조직에서 사용하는 오픈 소스 오류 추적 및 성능 모니터링 플랫폼입니다.
  • 아키텍처는 장치 SDK, Relay 프록시 및 자체 호스팅 및 SaaS 배포를 지원하는 이벤트 처리 백엔드를 포함합니다.
  • Breadcrumbs는 오류 전 사용자 작업의 연대기를 제공하며 복잡한 버그 진단에 매우 중요합니다.
  • Source maps 및 dSYM은 난독화된 프로덕션 코드에서 읽을 수 있는 호출 스택을 복원합니다.
  • Performance Tracing은 오류 추적과 통합되어 단일 trace ID를 통해 시간 메트릭에서 오류 세부 정보로 이동할 수 있습니다.
  • Auto-instrumentation은 수동 코드 없이 Activity, ViewController, HTTP 요청 및 애플리케이션 수명 주기를 포함합니다.
  • 모든 프로덕션 애플리케이션에 Sentry 구현을 권장합니다: 무료 요금제는 월 5,000개 이벤트를 포함하며 중소 규모 프로젝트에 충분합니다.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기