Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
1
82
Adventures in Umbrella App Design
An Experience Report on wacky things I've tried when building Umbrella projects.
Desmond Bowe
September 29, 2017
Tweet
Share
More Decks by Desmond Bowe
See All by Desmond Bowe
Parameter Validation in Phoenix Apps
desmondmonster
0
46
Phoenix LiveView
desmondmonster
0
48
How I Deploy at Crevalle
desmondmonster
0
66
Why Elixir?
desmondmonster
2
110
Recurring Tasks in Elixir
desmondmonster
0
640
Other Decks in Programming
See All in Programming
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
170
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
6
3k
connect-python: convenient protobuf RPC for Python
anuraaga
0
400
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
380
20 years of Symfony, what's next?
fabpot
2
350
AIコーディングエージェント(skywork)
kondai24
0
160
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.3k
251126 TestState APIってなんだっけ?Step Functionsテストどう変わる?
east_takumi
0
310
ローターアクトEクラブ アメリカンナイト:川端 柚菜 氏(Japan O.K. ローターアクトEクラブ 会長):2720 Japan O.K. ロータリーEクラブ2025年12月1日卓話
2720japanoke
0
730
React Native New Architecture 移行実践報告
taminif
1
150
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
260
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
Mobile First: as difficult as doing things right
swwweet
225
10k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
We Have a Design System, Now What?
morganepeng
54
7.9k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Bash Introduction
62gerente
615
210k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
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