Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Sustainable SPAs with Strategic Design: A Wonderful Friendship?
Manfred Steyer
PRO
May 19, 2022
Programming
0
140
Sustainable SPAs with Strategic Design: A Wonderful Friendship?
Manfred Steyer
PRO
May 19, 2022
Tweet
Share
More Decks by Manfred Steyer
See All by Manfred Steyer
Angular‘s Future without NgModules: Architectures with Standalone Components @enterJS
manfredsteyer
PRO
0
230
Beyond Micro Frontends: Frontend Moduliths for the Enterprise @enterjs2022
manfredsteyer
PRO
0
170
Angular-basierte Micro Frontends mit Module Federation @API Summit
manfredsteyer
PRO
0
110
Beyond Micro Frontends: Frontend Moduliths for the Enterprise @wad2022
manfredsteyer
PRO
0
130
Micro Frontends with Module Federation: Beyond the Basics @codecrafts2022
manfredsteyer
PRO
0
260
Rethinking Auth for SPAs and Micro Frontends: Easy and Secure With Gateways
manfredsteyer
PRO
0
160
Micro Frontends with Module Federation: Beyond the Basics @jax2022
manfredsteyer
PRO
1
340
Enterprise Angular: Frontend Moduliths with Nx and Standalone Components @jax2022
manfredsteyer
PRO
0
380
Angular's new Standalone Components: How Will They Affect My Architecture? @iJS London 2022
manfredsteyer
PRO
0
450
Other Decks in Programming
See All in Programming
Deep Dive Into Google Zanzibar and its Concepts for Authorization Scenarios
dschenkelman
1
130
設計ナイト2022 トランザクションスクリプト
shinpeim
11
2k
NEWT.net: Frontend Technology Selection
xpromx
0
250
オブジェクト指向で挫折する初学者へ
deepoil
0
160
How we run a Realtime Puzzle Fighting Game on AWS Serverless
falken
0
250
Terraform Plan/Apply結果の自動通知
ymmy02
0
280
Power Automateドリブンのチームマネジメント
hanaseleb
0
190
インターン生・新卒向け、学校でもっと教えてほしいITエンジニア基本スキル
nearme_tech
0
130
Web API連携でCSRF対策がどう実装されてるか調べた / how to implements csrf-detection on Web API
yasuakiomokawa
2
420
CSE360 Tutorial 07
javiergs
PRO
0
100
CakePHPの内部実装 から理解するPSR-7
boro1234
0
200
GitHub Actions を導入した経緯
tamago3keran
1
430
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
404
21k
How New CSS Is Changing Everything About Graphic Design on the Web
jensimmons
213
11k
The Invisible Customer
myddelton
110
11k
It's Worth the Effort
3n
172
25k
Streamline your AJAX requests with AmplifyJS and jQuery
dougneiner
127
8.5k
Atom: Resistance is Futile
akmur
255
20k
Adopting Sorbet at Scale
ufuk
63
7.6k
WebSockets: Embracing the real-time Web
robhawkes
57
5.2k
Visualization
eitanlees
125
11k
Teambox: Starting and Learning
jrom
123
7.7k
GitHub's CSS Performance
jonrohan
1020
420k
The Language of Interfaces
destraynor
148
20k
Transcript
@ManfredSteyer ManfredSteyer Manfred Steyer, ANGULARarchitects.io Sustainable SPAs with Strategic Design
A Wonderful Friendship?
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer Manfred Steyer
@ManfredSteyer
@ManfredSteyer Strategic Design Tactical Design
@ManfredSteyer Strategic Design Tactical Design
@ManfredSteyer
@ManfredSteyer Example e-Procurement System e-Procurement System
@ManfredSteyer Catalog Catalog Approval Approval Specification Specification Ordering Ordering Example
Sub-Domains
@ManfredSteyer
@ManfredSteyer Workspace
@ManfredSteyer Advantages No version conflicts No burden with distributing libs
@ManfredSteyer Creating a Workspace npm install -g @angular/cli ng new
workspace cd workspace ng generate app my-app ng generate lib my-lib ng serve --project my-app ng build --project my-app
@ManfredSteyer Moving back and forth Npm Registry
@ManfredSteyer https://nrwl.io/nx
@ManfredSteyer Visualize Module Structure
@ManfredSteyer Creating a Workspace npm install -g @angular/cli npm init
nx-workspace myworkspace cd workspace ng generate app my-app ng generate lib my-lib ng serve --project my-app ng build --project my-app
@ManfredSteyer
@ManfredSteyer Catalog Catalog Ordering Ordering Shared Shared Feature Feature Feature
Feature Feature Feature Feature Feature Feature Feature UI UI UI UI UI UI UI UI UI UI UI UI UI UI UI UI UI UI Domain Domain Domain Domain Domain Domain Domain Domain Domain Domain Domain Domain Util Util Util Util Util Util Util Util Util Util Util Util Enterprise Monorepo Patterns, Nrwl 2018: https://tinyurl.com/y2jjxld7 @ManfredSteyer Shared Kernel (if really needed) & other libs Smart Comp. Dumb Comp.
@ManfredSteyer Catalog Catalog Ordering Ordering Shared Shared Feature Feature API
API Feature Feature Feature Feature Feature Feature Feature Feature UI UI UI UI UI UI UI UI UI UI UI UI UI UI UI UI UI UI Domain Domain Domain Domain Domain Domain Domain Domain Domain Domain Domain Domain Util Util Util Util Util Util Util Util Util Util Util Util @ManfredSteyer
@ManfredSteyer Catalog Catalog Ordering Ordering Shared Shared Feature Feature API
API Feature Feature Feature Feature Feature Feature Feature Feature UI UI UI UI UI UI UI UI UI UI UI UI UI UI UI UI UI UI Domain Domain Domain Domain Domain Domain Domain Domain Domain Domain Domain Domain Util Util Util Util Util Util Util Util Util Util Util Util @ManfredSteyer
@ManfredSteyer Application Domain Model Infrastructure Application Domain Model Infrastructure Isolate
your domain! Domain Domain e. g. data access Use case specific facades, state management (optional) Entities, biz logic
@ManfredSteyer Alternatives to layering • e. g. Hexagonal Architecture, Clean
Architecture • Anyway: We need to restrict access b/w libraries
@ManfredSteyer DEMO
@ManfredSteyer • • • •
@ManfredSteyer
@ManfredSteyer Booking Booking Boarding Boarding Shared Shared Feature Feature Feature
Feature Feature Feature Feature Feature Feature Feature … … … … … … … … … … … … … … … … … … @ManfredSteyer Flight App Flight App Deployment Monolith
@ManfredSteyer Booking Booking Boarding Boarding Shared Shared Feature Feature Feature
Feature Feature Feature Feature Feature Feature Feature … … … … … … … … … … … … … … … … … … Booking App Booking App Boarding App Boarding App Microfrontends
@ManfredSteyer Booking Booking Boarding Boarding Shared Shared Feature Feature Feature
Feature Feature Feature Feature Feature Feature Feature … … … … … … … … … … … … … … … … … … Booking App Booking App Boarding App Boarding App Option 1: One Monorepo Monorepo
@ManfredSteyer Booking Booking Boarding Boarding Shared Shared Feature Feature Feature
Feature Feature Feature Feature Feature Feature Feature … … … … … … … … … … … … … … … … … … Booking App Booking App Boarding App Boarding App Option 2: One Repo per Domain Publish shared libs seperately via npm Repository n Repository 2 Repository 1
@ManfredSteyer Free eBook ANGULARarchitects.io/book Updated for Module Federation and Alternatives
• • • • •
None
@ManfredSteyer d Slides & Examples Remote and In-House http://softwarearchitekt.at/workshops