I’m planning to migrate from Sentry version 9 to 10.
In Sentry v9 all data stored in the Postgres database. So it was the only data source I need to worry about to keep my installation state and data.
Now in version 10, there are a lot of new components, that require their own storage such as Redis, Kafka, Clickhouse, Symbolicator, Zookeeper.
Which of them require persistence volumes in order to keep Sentry state and data save over restarts, migrations, etc?
Which of them require ephemeral storage to process the runtime data and it’s safe to drop/lose such storage without data corruption or loss?
I plan to run the installation in K8s and have all components clustered/duplicated anyway, so there should be no single point of failure. I’m OK to lose a portion of incoming data in the case of a single component failure. However, I’d like to preserve the already collected data.
Please advise, what consequences will volume data loss have of these components for Sentry?
The essential bits for storing historical data would be Postgres and Clickhouse data volumes. All others are less important. That said Redis may have in-flight or pending jobs, Kafka (and Zookeeper) may have events yet to be processed or post-processed, and Symbolicator would hold processed minidumps or native crashes which may get lost or take extra resources to recreate.
@BYK thanks for the reply!
Is there documentation describing relations between microservices and their purpose in the Sentry landscape and what are they responsible for?
There was a doc for on-prime v9, but I can’t see it anymore. Will there be a doc for v10?
The relations are described by the docker-compose.yml file and their service dependencies (for this one, I believe yaml code is pretty readable and doesn’t need extra docs). Regarding the purposes, they are mostly about the new architecture and the following posts should shed some light: