Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Dagster & Geomagical
Search
Noah Kantrowitz
February 09, 2021
Programming
0
160
Dagster & Geomagical
Noah Kantrowitz
February 09, 2021
Tweet
Share
More Decks by Noah Kantrowitz
See All by Noah Kantrowitz
What Python Can Learn From Other Languages
coderanger
0
53
What Python Can Learn From Other Languages (with notes)
coderanger
0
140
Swiss Army Django: Small Footprint ETL (with notes) - DjangoCon US
coderanger
0
210
Swiss Army Django: Small Footprint ETL - DjangoCon US
coderanger
0
53
How to look at space: PyCon AU
coderanger
0
98
Swiss Army Django: Small Footprint ETL
coderanger
0
83
Swiss Army Django: Small Footprint ETL (with notes)
coderanger
0
77
Minimum Viable Kubernetes
coderanger
0
35
Minimum Viable Kubernetes (with notes)
coderanger
0
420
Other Decks in Programming
See All in Programming
ワンバイナリWebサービスのススメ
mackee
10
7k
がんばりすぎないコーディングルール運用術
tsukakei
1
120
イベントソーシングとAIの親和性ー物語とLLMに理解できるデータ
tomohisa
1
160
「MCPを使ってる人」が より詳しくなるための解説
yamaguchidesu
0
460
【TSkaigi 2025】これは型破り?型安全? 真実はいつもひとつ!(じゃないかもしれない)TypeScript クイズ〜〜〜〜!!!!!
kimitashoichi
1
290
tsconfigのオプションで変わる型世界
keisukeikeda
1
120
REST API設計の実践 – ベストプラクティスとその落とし穴
kentaroutakeda
2
290
Language Server と喋ろう – TSKaigi 2025
pizzacat83
2
590
技術的負債と戦略的に戦わざるを得ない場合のオブザーバビリティ活用術 / Leveraging Observability When Strategically Dealing with Technical Debt
yoshiyoshifujii
0
160
eBPFを用いたAIネットワーク監視システム論文の実装 / eBPF Japan Meetup #4
yuukit
3
530
try-catchを使わないエラーハンドリング!? PHPでResult型の考え方を取り入れてみよう
kajitack
3
190
Doma で目指す ORM 最適解
nakamura_to
1
160
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
38
1.8k
Documentation Writing (for coders)
carmenintech
71
4.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.3k
Art, The Web, and Tiny UX
lynnandtonic
298
21k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
KATA
mclloyd
29
14k
We Have a Design System, Now What?
morganepeng
52
7.6k
GraphQLとの向き合い方2022年版
quramy
46
14k
4 Signs Your Business is Dying
shpigford
183
22k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Agile that works and the tools we love
rasmusluckow
329
21k
Transcript
Geomagical & Dagster Dagster Community Meeting
Noah Kantrowitz > @kantrn - coderanger.net > Principal Ops @
Geomagical > Part of the IKEA family > Augmented reality with furniture
Our Product
Starting Point > Celery & RabbitMQ > Each operation as
its own daemon > celery.canvas > Custom DAG compiler
Design Goals > Keeping most of the solid structure >
Improved DAG expressiveness > Low fixed overhead, compatible with autoscaling > More detailed tracking and metrics
Dagster > Met all our requirements for structural simplicity >
DAG compiler was a bit limited but growing fast > Highly responsive team Dagster > No execution setup that met our needs
But dagster_celery? > Solid and pipeline code commingled > Single
runtime environment > Hard to build a workflow around at scale
But dagster_k8s? > Fine for infrequent or non-customer facing tasks
> Do not put kube-apiserver in your hot path > No really, I mean it
None
Autoscaling > KEDA watching RabbitMQ > Zero-scale: only Dagit and
gRPC daemons > task_acks_late = True > worker_prefetch_multiplier = 1
Remote Solids > Independent release cycles for each Solid >
Can run multiple versions in parallel > Testing in isolation
Writing A Remote Solid app = SolidCelery('repo-something') @app.task(bind=True) def something(self,
foo: str) -> str: return f'Hello {foo}'
Proxy Solids @celery_solid(queue='repo-something') def something(context, item): output = yield {
'foo': item['bar'], } item['something'] = output yield Output(item)
Workflow > One git repo per Dagster repo > main.py
which holds "default" Pipeline > solids.py which defines proxy Solids > Misc other pipelines for testing and development
CI/CD Briefly, since this is its own rabbit hole >
Buildkite > kustomize edit set image > ArgoCD
Downsides > Slow cold start > No feedback during long
tasks > New and exciting bugs
How It's Going > Happy with overall progress > Still
dropping some tasks at load > Plan to move forward looks good
Future Plans > Async execution support > Events from solid
workers > Pipeline-level webhooks > Predictive auto-scaling? K8s Operator?
Can I Use This? Kinda sorta geomagical/dagster_geomagical
Thank You Questions?