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
Adventures in Umbrella App Design
Search
Desmond Bowe
September 29, 2017
Programming
82
1
Share
Adventures in Umbrella App Design
An Experience Report on wacky things I've tried when building Umbrella projects.
Desmond Bowe
September 29, 2017
More Decks by Desmond Bowe
See All by Desmond Bowe
Parameter Validation in Phoenix Apps
desmondmonster
0
47
Phoenix LiveView
desmondmonster
0
48
How I Deploy at Crevalle
desmondmonster
0
68
Why Elixir?
desmondmonster
2
110
Recurring Tasks in Elixir
desmondmonster
0
650
Other Decks in Programming
See All in Programming
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
150
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
1.2k
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
280
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
1.2k
見せてもらおうか、 OpenSearchの性能とやらを!
shunta27
1
160
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
180
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
8
3.8k
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
490
Geminiをパートナーに神社DXシステムを個人開発した話(いなめぐDX 開発振り返り)
fujiba
0
130
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
5.2k
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
240
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
100
Featured
See All Featured
Balancing Empowerment & Direction
lara
5
1k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.5k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
240
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Code Review Best Practice
trishagee
74
20k
[SF Ruby Conf 2025] Rails X
palkan
2
880
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
Crafting Experiences
bethany
1
100
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
420
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
We Are The Robots
honzajavorek
0
210
Transcript
Adventures in Umbrella App Design Desmond Bowe NYC Elixir Meetup
September 28, 2017
Elixir Training • Basics • OTP • Design / Architecture
EMPEX Founder
☂ "Umbrella projects are used to build applications that run
together in a single repository.” - elixirlang.org
☂ my_app/ _build/ config/ deps/ lib/ my_app/ my_app.ex log/ priv/
test/ mix.exs mix.lock _build/ apps/ my_app/ config/ deps/ lib/ my_app/ my_app.ex log/ priv/ test/ mix.exs mix.lock photo_service/ config/ deps/ mix.exs mix.lock Normal App Umbrella App
☂ Calling Functions Across Apps ☠
Should I Use One?
Experience Report Twig Crevalle
Example 1: Twig Infrastructure • landing site • admin site
• backoffice Needs • share assets across web frontends • web frontends need data from different services
Twig 1st approach • 3 phoenix applications • separate assets
app apps/ admin/ assets/ landing/ mother_brain/
Twig • share js, css, images • assets app is
styleguide • hard to share templates • redundant dependencies • painful upgrades
Twig 2nd approach • all web apps in single OTP
app apps/ mother_brain/ site/ config/ web/ admin/ assets/ landing/ controllers/ views/ endpoint.ex router.ex web.ex
None
Twig • share js, css, images • assets app is
styleguide • easy to share templates • streamlined dependencies • simpler authentication • configuration • file organization is important to reduce cognitive load
Example 2: Crevalle Infrastructure • many distinct user-facing apps with
individual datastore Needs • easily spin up new projects • reuse functionality • bird’s eye view of company
Crevalle Approach • each project is its own app •
shared functionality (e.g. image processing, authentication) is extracted to its own app apps/ chitta/ crux/ oauth/ postfactor/ pulse/ config/ lib/ web/
Crevalle • easy to create/deploy projects • simple integration testing
• deploy entire company platform at once
Crevalle if your entire company is an umbrella app, your
company’s individual services are their own OTP apps • teams work on specific app • apps are individually deployed to appropriate hardware • monolith + services • no more issues of internal API versions, data serialization
Anti-Patterns extracting all services to their own app because Boundaries
Rules of Thumb for OTP apps • it has its
own datastore • it has particular resource needs (eg high CPU load) • shared functionality
successful Elixir application design means thinking in terms of Applications
successful Elixir application design means thinking in terms of Applications
we are still figuring this out.
successful Elixir application design means thinking in terms of Applications
we are still figuring this out. join us at the bar!
thanks. @desmondmonster