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
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
67
Why Elixir?
desmondmonster
2
110
Recurring Tasks in Elixir
desmondmonster
0
640
Other Decks in Programming
See All in Programming
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
2k
ゲームの物理 剛体編
fadis
0
400
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
5.2k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
630
TestingOsaka6_Ozono
o3
0
270
AIエージェントの設計で注意するべきポイント6選
har1101
6
3.1k
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
170
チームをチームにするEM
hitode909
0
440
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.2k
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
200
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
520
Featured
See All Featured
For a Future-Friendly Web
brad_frost
180
10k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.9k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
37
Ruling the World: When Life Gets Gamed
codingconduct
0
120
Amusing Abliteration
ianozsvald
0
86
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
How to train your dragon (web standard)
notwaldorf
97
6.5k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
190
What the history of the web can teach us about the future of AI
inesmontani
PRO
0
390
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.2k
Designing Experiences People Love
moore
143
24k
How to Ace a Technical Interview
jacobian
281
24k
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