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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Noah Kantrowitz
February 09, 2021
Programming
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Dagster & Geomagical
Noah Kantrowitz
February 09, 2021
More Decks by Noah Kantrowitz
See All by Noah Kantrowitz
The Long Hello World
coderanger
0
32
The Long Hello World (with notes)
coderanger
0
110
What Python Can Learn From Other Languages
coderanger
0
94
What Python Can Learn From Other Languages (with notes)
coderanger
0
230
Swiss Army Django: Small Footprint ETL (with notes) - DjangoCon US
coderanger
0
370
Swiss Army Django: Small Footprint ETL - DjangoCon US
coderanger
0
96
How to look at space: PyCon AU
coderanger
0
150
Swiss Army Django: Small Footprint ETL
coderanger
0
130
Swiss Army Django: Small Footprint ETL (with notes)
coderanger
0
110
Other Decks in Programming
See All in Programming
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
200
Agentic UI
manfredsteyer
PRO
0
200
Oxcを導入して開発体験が向上した話
yug1224
4
340
A2UI という光を覗いてみる
satohjohn
1
160
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
230
act1-costs.pdf
sumedhbala
0
120
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
120
OSもどきOS
arkw
0
590
Contextとはなにか
chiroruxx
1
380
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
The Language of Interfaces
destraynor
162
27k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Odyssey Design
rkendrick25
PRO
2
710
Scaling GitHub
holman
464
140k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
260
Paper Plane
katiecoart
PRO
1
52k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
For a Future-Friendly Web
brad_frost
183
10k
Building the Perfect Custom Keyboard
takai
2
800
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
750
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?