이번 시간에는 멀티 모듈에 대해서 알아보는 시간을 가지려고 합니다.
왜 요즘 회사들이 멀티 모듈화를 하려고 하는지..?
무엇을 고려하고 짜야 할지 먼저 알아보고 다음 시간엔 멀티 모듈화를 기존
프로젝트를 변경하는 작업을 진행해 보려고 합니다.
기존: 하나의 Xcode 프로젝트에 모든 코드가 들어 있는 Monolithic 구조
멀티모듈: 기능을 의미 있는 단위로 나누어 각각을 독립적인 모듈(framework) 로 구성
단일 모놀리식 구조에서는 코드 한 줄만 바뀌어도 전체가 리빌드 해야 했어요.
즉, 단순한 오류를 수정하더라도 전체를 빌드해야하기에 빌드 시간이 길어지는
문제가 발생하였었죠.
모듈화하면 변경된 모듈만 빌드하면 되므로 전체 빌드 시간이 줄어듭니다.
특히 대규모 앱에서 해당 문제가 더욱 커지겠죠? 즉 앱이 클수록 이점이 따르는 방법이다.
라고 생각하면 좋을것 같아요
Feature, Domain, Core, Design 등 역할을 분리함으로써,
- 역할 간 책임 구분
- 의존성 흐름 제어
예: Feature → Domain → Core만 접근 가능하도록 아키텍처 계층 구분이 쉬움
Feature, Domain, Core, Design 으로 분리가 되는데
어떤 기준인지 약간 모호해서 요번에 어떻게 분리할건지 적어 보려고 합니다.



출처: 뱅크샐러드
UI와 화면에 대한 로직을 담당하는 모듈
즉, UI 흐름, 화면전환 등을 담당합니다.
-> 하나의 화면, 기능을 담당하는 모듈로 만들어볼 예정입니다.
비즈니스 로직, 유즈케이스, 프로토콜 등을 포함하는 계층으로 보여요
UseCase, Model, Repository Protocol, DTO 등 포함
API 로직과 내부 Core로직을 묶어서 Feature에서 사용할 수 있도록 하는거죠.
만약 Data 레이어까지 분리한다면
UseCase, Model, Repository Protocol, DTO 등 포함하고 Domain을 인터페이스화 한다고
생각하면 될것 같아요
네트워크나, 키체인이나, HealthKit, 디자인 등
다양항 도메인에서 동유하고, 기술 구현을 포함하는 단이다. 라고
저는 정의하고 작업을 해볼 것 같아요.
자...! 정의는 된 것 같아요
이제 나눠볼 시간이 온것 같습니다.
Tuist 편에서 뵙죵 ㅎㅎ