Sentry는 실시간 오류 추적 및 애플리케이션 성능 모니터링 플랫폼으로, 개발자에게 각 충돌의 전체 컨텍스트를 제공합니다. Sentry Documentation, 2025에 따르면, Sentry는 하루 100억 개 이상의 이벤트를 처리하며 iOS, Android, 웹 및 백엔드를 위한 90개 이상의 언어 및 프레임워크와의 통합을 제공합니다.
핵심 요점
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는 애플리케이션에 내장되는 라이브러리로, 예외를 가로채고 컨텍스트를 수집하여 JSON/HTTPS 프로토콜을 통해 Relay로 이벤트를 전송합니다.
Relay는 회사 인프라에 배포할 수 있는 중간 서버입니다. SDK에서 이벤트를 수신하고 규칙(PII 데이터, 불필요한 이벤트)에 따라 필터링하며 버퍼링한 후 Sentry SaaS 또는 자체 호스팅 인스턴스로 전달합니다. Relay는 낮은 지연 시간을 보장합니다 — 일반적인 이벤트 수신 시간은 500~1500ms입니다.
Sentry는 서버로 전송하기 전에 원치 않는 이벤트를 폐기하는 내장 필터를 제공합니다: 테스트 환경의 오류, 오래된 앱 버전의 오류, 동일한 지문의 중복 이벤트. Filtering은 일반적인 프로덕션 프로젝트에서 최대 70%의 데이터 볼륨을 절약하여 소비 비용과 장치 통신 채널 부하를 줄입니다.
모바일 플랫폼용 Sentry SDK 설치는 5~10분이 소요되며 종속성 추가 및 DSN 키로 초기화가 필요합니다. DSN(Data Source Name)은 Sentry의 고유 프로젝트 식별자로, 이벤트를 보낼 위치를 지정합니다.
Android의 경우 Sentry는 Gradle 플러그인을 통해 자동 계측을 제공합니다. 플러그인은 컴파일 시 바이트코드를 수정하여 모든 Activity, Fragment 및 네트워크 호출에 래퍼를 추가합니다. Auto-instrumentation은 build.gradle에서 하나의 옵션으로 활성화되며 코드 변경 없이 애플리케이션 수명 주기에서 breadcrumbs를 얻을 수 있습니다.
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용 SDK는 CocoaPods, Swift Package Manager 및 Carthage를 지원합니다. 설치 후 SDK는 자동으로 NSException, 신호(SIGABRT, SIGSEGV) 및 Swift 오류를 가로챕니다. Sentry Cocoa SDK는 iOS 12+ 및 macOS 10.13+와 호환되며 Swift Concurrency(async/await) 및 URLSession의 자동 계측을 지원합니다.
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개이며, 그 이후에는 가장 오래된 레코드가 자동으로 제거됩니다.
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는 동일한 세션의 모든 이벤트와 함께 자동으로 전송되어 사용자별로 오류를 그룹화하고 특정 버그의 영향을 받은 사용자 수를 확인할 수 있습니다. 개인정보 보호정책을 준수하고 애플리케이션 정책에서 허용하지 않는 경우 개인 데이터를 전송하지 않는 것이 중요합니다.
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 파이프라인의 필수 단계여야 합니다.
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는 더 많은 컨텍스트를 제공합니다: breadcrumbs, 사용자 정의 데이터, 오류와 성능 연결. Firebase Crashlytics는 기본 크래시 리포팅을 제공하는 무료 도구이지만 분산 추적 및 사용자 정의 breadcrumbs 계측 기능이 없습니다. Sentry는 심층 진단이 필요한 프로젝트에 적합합니다.
Sentry는 월 5,000개 이벤트(오류 + 트랜잭션)의 무료 요금제를 제공합니다. 유료 Team 요금제는 사용자당 월 26달러이며 100,000개의 이벤트를 포함합니다. 대규모 프로젝트의 경우 무제한 볼륨과 맞춤 가격의 Business 요금제를 이용할 수 있습니다.
Sentry는 내장된 Data Scrubbing 메커니즘을 제공합니다: 저장 전에 이벤트에서 이메일, IP 주소, 신용 카드 및 기타 PII 데이터를 자동으로 제거합니다. 스크러빙 규칙은 정규식을 지원하는 웹 인터페이스 또는 Relay 구성에서 설정됩니다. 민감한 데이터가 사용자 장치를 떠나지 않도록 SDK 수준에서 스크러빙을 활성화하는 것이 좋습니다.
네, Sentry에는 완전한 오픈 소스 자체 호스팅 버전이 있습니다. Self-hosted Sentry는 Docker Compose를 통해 배포되며 SaaS 버전의 모든 기능을 포함합니다. 필요한 최소 서버 구성: 4 vCPU, 16GB RAM, 이벤트 저장용 100GB 디스크 공간.
네, Sentry SDK는 SwiftUI(iOS 13+) 및 Jetpack Compose(Android)를 완전히 지원합니다. SwiftUI의 경우 SDK는 렌더링 시간 측정과 함께 NavigationView 및 List에 대한 트랜잭션을 자동으로 생성합니다. Jetpack Compose의 경우 CompositionLocalProvider를 통해 Composables에 Sentry 컨텍스트를 전달하는 사용자 정의 통합이 필요합니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.