Sharing is Caring
Leveraging Open Source to�Improve Cortex & Thanos
Bartłomiej Płotka
@bwplotka
Marco Pracucci
@pracucci
@cortexmetrics
@ThanosMetrics
@bwplotka
@pracucci
A personal story…
@bwplotka
@pracucci
A personal story…
Open source is
not about technology
@bwplotka
@pracucci
A personal story…
Open source is
about people
@bwplotka
@pracucci
A personal story…
Open source is
collaboration
and giving back
@bwplotka
@pracucci
Hello!
Marco Pracucci
Software Engineer @ Grafana Labs
Cortex and Thanos maintainer
@bwplotka
@pracucci
Hello!
Bartłomiej Płotka
Principal Software Engineer @ Red Hat
Prometheus maintainer
Co-founder of Thanos
CNCF SIG Observability Tech Lead
@bwplotka
@pracucci
Two households, both alike in dignity
@bwplotka
@pracucci
Two households, both alike in dignity
In the beginning...
Push | vs | Pull |
NoSQL + Object Storage | vs | Object Storage |
Custom Indexing | vs | TSDB |
@bwplotka
@pracucci
Cortex & Thanos: Similarities
@bwplotka
@pracucci
But, competition kicks in...
@bwplotka
@pracucci
But, competition kicks in...
The soft competition with Thanos has been�a trigger to improve Cortex UX as well
@bwplotka
@pracucci
The rise of the Cortex blocks storage
@bwplotka
@pracucci
The rise of the Cortex blocks storage
Collaboration
over
Competition
@bwplotka
@pracucci
Meanwhile on Thanos side...
Object Storage
Blocks
Querier
Kubernetes US1
Compactor
upload
Gateway
+deduplication
@bwplotka
@pracucci
Thanos Receiver: A little bit of Push
Object Storage
Blocks
Querier
Kubernetes US1
Compactor
streaming
+deduplication
Gateway
Receiver
@bwplotka
@pracucci
Query Performance
@bwplotka
@pracucci
Query Performance
@bwplotka
@pracucci
Thanos Query Performance
Collaboration
over
Competition
@bwplotka
@pracucci
Collaboration time!
Collaboration is a
two-way street
@bwplotka
@pracucci
Collaboration time!
Collaboration
is tough
sometimes
@bwplotka
@pracucci
Collaboration time!
It’s very tempting to pick
the shortest path
@bwplotka
@pracucci
Collaboration time!
SUCCESSES
FAILURES
PRINCIPLES
PRACTICES
TECHNIQUES
Sharing is learning
@bwplotka
@pracucci
Collaboration time!
Collaboration
pays off
@bwplotka
@pracucci
Thanos bucket store and compactor
Cortex blocks storage is built on top of Thanos shipper, bucket store and compactor
querier-1
querier-2
querier-n
store-gateway-1
store-gateway-2
store-gateway-n
ingester-1
ingester-2
ingester-n
distributor-1
distributor-2
distributor-n
query-frontend-1
query-frontend-2
compactor-1
compactor-n
Using Thanos Compactor
Using Thanos Shipper
Using Thanos Bucket Store
@bwplotka
@pracucci
Cortex end-to-end testing framework
Easily write isolated end-to-end tests running in Docker
@bwplotka
@pracucci
Cortex query-frontend
Query parallelization and results caching support to any Prometheus API compatible backend
@bwplotka
@pracucci
Cortex caching strategies
Learning from Cortex caching strategies, we added memcached support to Thanos
TSDB Index�Cache
TSDB Chunks�Cache
Bucket Metadata�Cache
Thanos Store
@bwplotka
@pracucci
Thanos DNS-based service discovery
Easy to use DNS-based service discovery
@bwplotka
@pracucci
Cross project optimizations
Share optimization techniques learnings
Thanos:
@bwplotka
@pracucci
Cross project optimizations
Share optimization techniques learnings
Prometheus:
@bwplotka
@pracucci
More stress testing
More reuse = More ways to exercise the code!
@bwplotka
@pracucci
More brain power
It’s not just about features!
More developers =
@bwplotka
@pracucci
Summary
@bwplotka
@pracucci
Summary
@bwplotka
@pracucci
Future
“One does not change�a winning team”
@bwplotka
@pracucci
Thank You!
Any Questions?
@cortexmetrics
@ThanosMetrics
@bwplotka
@pracucci
Agenda: Story of two projects
@bwplotka
@pracucci
In the beginning: Cortex
Object Storage
(Chunks)
Query Frontend
Kubernetes US1
Distributor
streaming
Ingester
NoSQL
(Index)
Querier
@bwplotka
@pracucci
In the beginning: Thanos
Object Storage
Blocks
Querier
Kubernetes US1
Compactor
upload
Gateway
+deduplication
@bwplotka
@pracucci