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
Tuist, 도입은 했는데 그래서 Modular Architecture 는 어떻게 ...
Search
Wooseong Kim
October 17, 2023
Programming
0
340
Tuist, 도입은 했는데 그래서 Modular Architecture 는 어떻게 만들어 가나요?
Let'Swift 2023 에서 Tuist 기반으로 Modular Architecture 를 점진적으로 만들어 나가는 과정을 소개합니다.
Wooseong Kim
October 17, 2023
Tweet
Share
More Decks by Wooseong Kim
See All by Wooseong Kim
Modular Architecture w/ Tuist
innocarpe
0
540
Test-Driven-Development with ReactorKit in StyleShare
innocarpe
1
880
Async network logic testing using Protocol (Test Stub)
innocarpe
2
360
Developing iOS with Rx, MVVM
innocarpe
1
150
git + Pull Request + Code Review and Project Management with Agile
innocarpe
0
69
Online Board(Trello), Scrum(Pivotal Tracker), Kanban(JIRA Agile)
innocarpe
0
130
Android TV at Google Developers Summit
innocarpe
0
73
경북대도서관 스마트앱 최종발표
innocarpe
0
180
Other Decks in Programming
See All in Programming
Less waste, more joy, and a lot more green: How Quarkus makes Java better
hollycummins
0
100
型付き API リクエストを実現するいくつかの手法とその選択 / Typed API Request
euxn23
8
2.2k
GitHub Actionsのキャッシュと手を挙げることの大切さとそれに必要なこと
satoshi256kbyte
5
430
Laravel や Symfony で手っ取り早く OpenAPI のドキュメントを作成する
azuki
2
120
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
330
イベント駆動で成長して委員会
happymana
1
330
subpath importsで始めるモック生活
10tera
0
310
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
1
300
카카오페이는 어떻게 수천만 결제를 처리할까? 우아한 결제 분산락 노하우
kakao
PRO
0
110
Micro Frontends Unmasked Opportunities, Challenges, Alternatives
manfredsteyer
PRO
0
100
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
2
350
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Adopting Sorbet at Scale
ufuk
73
9.1k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
The Invisible Side of Design
smashingmag
298
50k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Embracing the Ebb and Flow
colly
84
4.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Designing for humans not robots
tammielis
250
25k
Happy Clients
brianwarren
98
6.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
Transcript
Tuist, بੑ ೮חؘ Ӓېࢲ Modular Architecture ח যڌѱ ٜ݅য оաਃ?
ӣࢿ - 29CM (Musinsa Inc.)
Contents • Why Tuist? • Final Goal - µFeatures Architecture
• Establishing the Foundation • Starting µFeatures-based development • Utilizing Feature App
Why Tuist?
None
Why Tuist? • Simplified project configuration (w/ Swift) • Improved
scalability for large projects • Enhanced collaboration among developers - Bene fi ts
Simplified project configuration (w/ Swift)
Improved scalability for large projects
Enhanced collaboration among developers
Final Goal - µFeatures Architecture https://docs.tuist.io/building-at-scale/microfeatures/
None
None
None
FeatureExample Feature FeatureTesting FeatureInterface FeatureTests
FeatureExample Feature FeatureTesting FeatureInterface FeatureTests
µFeatures Architecture Goals • Not aim for perfect architecture •
Aim for appropriate architecture
µFeatures Architecture Goals • Not aim for perfect architecture •
Aim for appropriate architecture So what is appropriate?
µFeatures Architecture Goals • Not aim for perfect architecture •
Aim for appropriate architecture 1. Maximizing build caching 2. Module-based development 3. Well-extracted dependencies
None
Final products
µFeatures
Shared logics for µFeature
Core logics for workspace
Foundations / Third Parties
None
Establishing the Foundation
None
None
None
None
None
Needs to split interface / implement modules
Needs to split interface / implement modules (especially Firebase..)
None
None
None
None
None
None
None
None
None
None
Focus on appropriate architecture 1. Maximizing build caching 2. Module-based
development 3. Well-extracted dependencies Again,
Starting µFeatures-based development
None
None
Abstract ViewController Factory
None
None
None
None
None
None
None
None
None
None
None
None
One more thing, for µFeatures
None
Utilizing Feature App
Utilizing Feature App 1. Rapid Feedback Cycle
Utilizing Feature App 1. Rapid Feedback Cycle • make review
and debugging faster
Utilizing Feature App 1. Rapid Feedback Cycle • make review
and debugging faster 2. Independent Development Environment
Utilizing Feature App 1. Rapid Feedback Cycle • make review
and debugging faster 2. Independent Development Environment • help focusing on the feature
Utilizing Feature App 1. Rapid Feedback Cycle • make review
and debugging faster 2. Independent Development Environment • help focusing on the feature 3. Concern - Dependency management in Feature App
Utilizing Feature App 1. Rapid Feedback Cycle • make review
and debugging faster 2. Independent Development Environment • help focusing on the feature 3. Concern - Dependency management in Feature App • requiring additional efforts to maintain
None
Summarize
None
None
None
Summarize • Design modularization milestone first • Focus on maximizing
build caching • Aim for appropriate architecture • Build µFeatures architecture gradually
Q & A
Thank you! Wooseong Kim - 29CM
[email protected]