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
92
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
56
Phoenix LiveView
desmondmonster
0
61
How I Deploy at Crevalle
desmondmonster
0
70
Why Elixir?
desmondmonster
2
120
Recurring Tasks in Elixir
desmondmonster
0
650
Other Decks in Programming
See All in Programming
数百円から始めるRuby電子工作
tarosay
0
160
Go 1.27 における memory allocation の高速化
andpad
0
240
バグを直したら useEffect が消えた
colorful12
2
590
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
410
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
700
FDEが実現するAI駆動経営の現在地
gonta
2
290
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
710
テーブルをDELETEした
yuzneri
0
140
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
690
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
160
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
630
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.8k
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
370
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
73
41k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Color Theory Basics | Prateek | Gurzu
gurzu
0
420
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Optimizing for Happiness
mojombo
378
71k
Leo the Paperboy
mayatellez
8
2.1k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Tell your own story through comics
letsgokoyo
1
1k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
480
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