Sentry uses a transactional outbox pattern for eventually consistent operations. When a model changes, an outbox row is written inside the same database transaction. After the transaction commits, the outbox is drained — firing a signal that triggers side effects such as RPC calls, tombstone propagation, or audit logging.
The most common use case is cross-silo data replication: a model saved in the Region silo produces a RegionOutbox that, when processed, replicates data to the Control silo (or vice versa via ControlOutbox). But the pattern is general — outboxes work for any operation that should happen reliably after a transaction commits, even within a single silo.
There are two outbox types corresponding to the two directions of flow:
Sentry에서 아웃박스 기반의 최종적 일관된 작업을 생성하고 유지 관리하기 위한 가이드입니다. 사일로 간 데이터 복제에 가장 일반적으로 사용되지만 단일 사일로 지연 부작용, 감사 로깅, 이벤트 팬아웃 등 최종 일관성이 필요한 모든 곳에 적용 가능합니다. "보내는 편지함 추가", "보내는 편지함 복제 추가", "사일로를 제어하기 위해 모델 복제", "지역에 모델 복제", "보내는 편지함 범주 추가", "보내는 편지함 신호 수신기 쓰기", "보내는 편지함 디버그", "보내는 편지함 처리 안 함", "데이터 복제 안 함", "보내는 편지함 테스트", "보내는 편지함을 사용하도록 모델 마이그레이션", "보내는 편지함 데이터 채우기", "보내는 편지함 병합", "ReplicatedRegionModel", "ReplicatedControlModel", "OutboxCategory", "OutboxScope" 또는 "outbox_runner". 모델 믹스인, 카테고리 등록, 신호 수신기, 테스트, 채우기 및 디버깅 워크플로를 다룹니다. 출처: getsentry/sentry.