Thirty-one sources, all fetched on 30 September 2026. Every one is a
repository artefact or a package registry record, which is both this page's strength and
its limit: see the note at the end of this section.
ADR
Sentry2022-07
RFC 0002: New Architecture
A living informational RFC naming the constraints on the pipeline: RabbitMQ near its
safe limit, pickle preventing non-Python task dispatch, buffers that require pickle and
cannot be filtered, and symbolication task durations spanning milliseconds to thirty
minutes.
Carry forwardThe serialization format, not the network, is what makes a monolith monoglot.
github.com/getsentry/rfcs/blob/main/text/0002-new-architecture.md
Source
Sentry2024-11
Taskbroker README
Describes the answer to RFC 0002's queue problem: Kafka for transport, a SQLite store
for inflight activations "to avoid head-of-line blocking, enable out-of-order execution
and per-task acknowledgements", and gRPC GetTask and
SetTaskStatus for workers.
Carry forwardWhen the log's offset model cannot express per-item completion, the broker needs its own durable state.
github.com/getsentry/taskbroker/blob/main/README.md
Source
Sentry2019 to 2026
sentry/tsdb/redissnuba.py
The dual-backend shim itself. A method specification table routes each time-series
call to Redis or to Snuba by read or write, with one entry bound to a function called
dont_do_this that raises NotImplementedError. Added
2019-02-28; a commit on 2026-08-25 removes "the dead Redis cmsketch frequency tables".
Carry forwardA shim is a routing table over two engines, and routing tables acquire exceptions faster than they lose them.
github.com/getsentry/sentry/blob/master/src/sentry/tsdb/redissnuba.py
Source
Sentry2013 to 2019
Backend directories: nodestore, tagstore, search, tsdb
Git history for four interface directories gives the add and delete date of every
engine: five node stores, four issue-search backends, four tag stores. Three of the
five node stores and two of the four search backends are gone.
Carry forwardA directory per engine behind one base class makes a migration a diff, and makes the retirement auditable years later.
github.com/getsentry/sentry/tree/master/src/sentry/nodestore
Incident fix
Sentry2025-01
arroyo#425, inc-1013: DLQ produce failure backlogs the consumer
"Right now, if the produce fails for any reason, the consumer backlogs, allow graceful
degradation instead." The shared consumer library's dead-letter path could stop the
pipeline it protects.
Carry forwardSpecify the behaviour when the error path is the unavailable component.
github.com/getsentry/arroyo/pull/425
Incident fix
Sentry2023-05
arroyo#237, INC-378: join blocks past its timeout
"Pool.join will block for more than timeout seconds if there is a task that takes more
than timeout seconds", made worse when the next step rejects messages and batches are
reprocessed. Fixed by terminating the pool.
Carry forwardVerify library deadlines under the overload they exist for, not under normal load.
github.com/getsentry/arroyo/pull/237
Incident fix
Sentry2026-06
snuba#8002, inc-2173: force a downsampled tier instead of rate limiting
Adds a killswitch that defaults queries to tier 8 rather than tier 1 during ClickHouse
overload, which the author acknowledges "will lead to a degraded performance for
customers" but prefers to aggressive rate limiting.
Carry forwardIf your data is tiered, resolution is a load-shedding lever. Build it before the incident.
github.com/getsentry/snuba/pull/8002
Incident fix
Sentry2026-05
snuba#7925, inc-2141: liveness check scoped to essential clusters
The liveness health check covered all ClickHouse clusters, so a non-essential cluster
outage removed serviceable capacity. Narrowed to essential clusters only.
Carry forwardA liveness probe should test only what justifies killing the process.
github.com/getsentry/snuba/pull/7925
Incident fix
Sentry2022-07
relay#1355, INC-181: events dropped at the edge
Envelopes with creates_event set true but carrying no event, notably
Unreal payloads, were dropped during metrics extraction in point-of-presence relays.
Carry forwardAt a boundary that may discard data, derive from the payload rather than trusting a descriptive flag.
github.com/getsentry/relay/pull/1355
Incident fix
Sentry2026-05
snuba#7945, INC-2179: out-of-range timestamps dropped at ingestion
Messages with timestamps outside the retention window are dropped on the EAP items and
accepted-outcomes topics; a companion change deletes stored data older than thirty days.
Carry forwardEnforce the partitioning key's assumptions at the ingestion boundary.
github.com/getsentry/snuba/pull/7945
ADR
Sentry2022-09
RFC 0042: GoCD succeeds Freight
The most candid document in the corpus. Freight "has been in maintenance mode for a
long time" because "primary contributors are no longer here", and a Freight schema
migration caused downtime because "no one knows what alembic is". ArgoCD, Tekton and
Argo Workflows are each rejected with a stated reason.
Carry forwardAn in-house tool's real expiry date is the departure of the people who wrote its migrations.
github.com/getsentry/rfcs/blob/main/text/0042-gocd-succeeds-freight-as-our-cd-solution.md
ADR
Sentry2023-10
RFC 0119: Rust in Sentry
Chooses a single internal bindings package over per-crate PyPI packages, because
"maintaining Python Bindings is itself a huge burden", public packages create SemVer
obligations, and publishing had been failing. Existing bindings are noted as
Sentry-specific with minimal external use.
Carry forwardPublishing your glue code publicly buys you compatibility obligations you did not want.
github.com/getsentry/rfcs/blob/main/text/0119-rust-in-sentry.md
ADR
Sentry2026-03
RFC 0157: Distroless base images
Approved decision to replace Debian-based images, on the grounds that standard bases
ship "hundreds of OS packages that the application itself never uses", each of which
still requires CVE triage.
Carry forwardThe maintenance cost of an unused dependency is triage, which is paid whether or not it is exploitable.
github.com/getsentry/rfcs/blob/main/text/0157-distroless-base-images.md
ADR
Sentry2022 to 2026
The RFC corpus itself
Sixty-four merged records from 2022-07-21 to 2026-09-25, with proposal numbers reaching
157. Volume peaks in 2023 and thins sharply afterwards, and the merged set is dominated
by SDK and product semantics rather than platform architecture.
Carry forwardRead a public RFC repository for what it omits: the decisions with the largest blast radius here were not recorded in it.
github.com/getsentry/rfcs/tree/main/text
Source
Sentry2016 to 2026
self-hosted docker-compose.yml
The single best instrument in this hunt. Mid-year snapshots give the container count
across the decade, and the arrival and departure commit of every service: Kafka,
ClickHouse, Snuba and Symbolicator on 2019-11-12, Relay on 2020-04-24, Taskbroker on
2025-06-11, object storage on 2025-09-13.
Carry forwardA project's deployment manifest, read along its history, is a dated architecture diagram nobody had to draw.
github.com/getsentry/self-hosted/blob/master/docker-compose.yml
Source
Sentry2019-11
self-hosted#220: make on-premise work for Sentry 10
The commit that takes the reference deployment from 7 containers to 23, introducing
Kafka, ZooKeeper, ClickHouse, the Snuba services and Symbolicator at once. Dated six
days after the switch to the Business Source License.
Carry forwardArchitectural specialisation shows up in the operator's cost first, and in one step rather than gradually.
github.com/getsentry/self-hosted/pull/220
Source
Sentry2025-09
sentry#100326: remove more celery related code, part three
"Continue from #100302 and #99677 and remove another chunk of celery related code.
Only one consumer and some settings remain." The deletion of celery.py,
ten years and five months after it was added.
Carry forwardRemovals arrive in numbered parts; budget the last twenty percent, which is where the odd callers live.
github.com/getsentry/sentry/pull/100326
Source
Sentry2025-09
self-hosted#3946: remove the worker and cron containers
The operational counterpart to the Celery deletion. The two containers present since
May 2016 leave the reference deployment, replaced by taskbroker, taskworker and
taskscheduler which arrived on 2025-06-11.
Carry forwardA queue replacement is finished when the old containers are gone, not when the new ones start.
github.com/getsentry/self-hosted/pull/3946
Source
Sentry2024-08
self-hosted#3263: migrate to ZooKeeper-less Kafka
Removes a stateful coordination service from a deployment that had reached 56
containers. Merged one day after the removal of Postgres change data capture and
wal2json.
Carry forwardDeleting a dependency is a capacity decision in a deployment measured by container count.
github.com/getsentry/self-hosted/pull/3263
Source
Sentry2024-08
self-hosted#3260: remove cdc and wal2json
Change data capture out of Postgres, and the logical decoding plugin behind it, leave
the reference deployment with no replacement service appearing in the compose file.
Carry forwardA capability can be removed rather than migrated; check whether the need survived the architecture that created it.
github.com/getsentry/self-hosted/pull/3260
Source
Sentry2025-09
self-hosted#3498: S3 node store with SeaweedFS
Event bodies move to an S3-compatible object store in the reference deployment, six
years after Bigtable became the hosted node store and a decade after the original
Postgres one.
Carry forwardThe last storage layer to move to object storage is usually the one holding opaque blobs, which is the one that should have moved first.
github.com/getsentry/self-hosted/pull/3498
Source
Sentry2021 to 2025
self-hosted/install/_min-requirements.sh
The installer's enforced floor: 3,800 MB hard and 7,800 MB soft with 2 cores in March
2021; 15,900 MB and 4 cores in August 2024, trimmed to 14,000 MB six days later; a
two-tier scheme from March 2025.
Carry forwardAn installer's minimum requirements file is a dated, honest record of what an architecture costs to run.
github.com/getsentry/self-hosted/blob/master/install/_min-requirements.sh
Source
Sentry2018 to 2026
Snuba README
States the origin directly: Snuba "was originally developed to replace a combination of
Postgres and Redis to search and provide aggregated data on Sentry errors", and has
since absorbed most time-series features. First commit 2018-03-01; a ClickHouse query
appears on day one.
Carry forwardThe service that replaces two stores tends to become the store for everything shaped like either.
github.com/getsentry/snuba/blob/master/README.rst
Source
Sentry2026-09
Snuba architecture overview
Gives the engine rationale and the consistency bargain: ClickHouse for "a good balance
of the real time performance Snuba needs", one writer per table, and "exactly once
semantics if we accept eventual consistency" through deduplicating table engines.
Carry forwardExactly-once via deduplication is a read-side property; it costs you freshness, not throughput.
github.com/getsentry/snuba/blob/master/docs/source/architecture/overview.rst
Source
Sentry2021 to 2026
Arroyo README
The consumer framework extracted as a library rather than a service: Kafka backends,
composable strategies such as RunTask, Filter,
Reduce and CommitOffsets, and a stream processor that
schedules work and controls consumer progress.
Carry forwardWhen consumers outnumber services, the reuse unit is a library with a strategy interface, not another service.
github.com/getsentry/arroyo/blob/main/README.md
Source
Sentry2018 to 2026
Relay README and repository history
"A service that pushes some functionality from the Sentry SDKs as well as the Sentry
server into a proxy process." First commit 2018-01-17 as smith, renamed
semaphore on 2018-05-09. The repository now carries explicit rules for AI
usage in a HOWTOAI.md.
Carry forwardMoving work to the edge is a licensing and trust decision as much as a latency one, which is why this component is the one with its own rules files.
github.com/getsentry/relay/blob/master/README.md
Registry
PyPI2012 to 2023
The server stopped being a Python package
371 releases of sentry from 2012-01-04 to 2023-07-25, ending at version
23.7.1. After that the product exists as a fleet of containers rather than something
installable with a package manager.
Carry forwardThe date your artefact stops being installable is the date your architecture stopped being a program.
pypi.org/project/sentry
Registry
PyPI2011 to 2026
raven and sentry-sdk, the client reset
187 releases of raven ending 2018-12-19; sentry-sdk starts
2018-07-26 and reaches 351 releases by 2026-09-28. The two overlap for five months.
Carry forwardA client rewrite is dated by the overlap window, and five months of overlap implies a hard break rather than a migration.
pypi.org/project/sentry-sdk
Registry
npm2013 to 2026
raven-js and @sentry/browser
88 versions of raven-js from 2013-12-20 to 2019-06-04; 750 versions of
@sentry/browser from 2017-12-07 to 2026-09-29. The browser SDK reset began
eighteen months before the Python one ended.
Carry forwardRelease cadence, counted per platform, shows which client ecosystem sets the pace of your protocol changes.
npmjs.com/package/@sentry/browser
Registry
PyPI2021 to 2026
sentry-arroyo releases
205 releases from 2021-06-29 to 2026-09-25, eighteen days after the repository's first
commit. A shared consumer framework versioned publicly while being used internally.
Carry forwardA library published on the first sprint is a commitment to compatibility; check whether you wanted that.
pypi.org/project/sentry-arroyo
Registry
PyPI2020 to 2026
sentry-relay bindings
93 releases from 2020-01-27 to 2026-09-23. These are the bindings RFC 0119 later
describes as a maintenance burden, which is the evidence that the RFC was describing
lived experience rather than anticipating a problem.
Carry forwardFour years of public releases is how long it took the binding cost to become a decision.
pypi.org/project/sentry-relay