[iOS] 멀티모듈? ( 모듈 아키텍처 )

김재형_LittleTale·2025년 5월 19일

들어가기에 앞서

이번 시간에는 멀티 모듈에 대해서 알아보는 시간을 가지려고 합니다.
왜 요즘 회사들이 멀티 모듈화를 하려고 하는지..?

무엇을 고려하고 짜야 할지 먼저 알아보고 다음 시간엔 멀티 모듈화를 기존
프로젝트를 변경하는 작업을 진행해 보려고 합니다.

✅ 멀티모듈이란?

기존: 하나의 Xcode 프로젝트에 모든 코드가 들어 있는 Monolithic 구조

멀티모듈: 기능을 의미 있는 단위로 나누어 각각을 독립적인 모듈(framework) 로 구성

멀티 모듈화를 왜 하는데?

1. 빌드 시간 단축

단일 모놀리식 구조에서는 코드 한 줄만 바뀌어도 전체가 리빌드 해야 했어요.
즉, 단순한 오류를 수정하더라도 전체를 빌드해야하기에 빌드 시간이 길어지는
문제가 발생하였었죠.

모듈화하면 변경된 모듈만 빌드하면 되므로 전체 빌드 시간이 줄어듭니다.
특히 대규모 앱에서 해당 문제가 더욱 커지겠죠? 즉 앱이 클수록 이점이 따르는 방법이다.
라고 생각하면 좋을것 같아요

2. 코드 구조의 명확한 분리 (Separation of Concerns)

Feature, Domain, Core, Design 등 역할을 분리함으로써,

  • 역할 간 책임 구분
  • 의존성 흐름 제어

예: Feature → Domain → Core만 접근 가능하도록 아키텍처 계층 구분이 쉬움

다른 이유도 존재는 하는데 실제 적용해보고 생각이 맞을때 수정하겠습니다.

모듈화를 어떻게 분리하는가?

Feature, Domain, Core, Design 으로 분리가 되는데
어떤 기준인지 약간 모호해서 요번에 어떻게 분리할건지 적어 보려고 합니다.

출처: 뱅크샐러드

출처: 뱅크샐러드

Feature

UI와 화면에 대한 로직을 담당하는 모듈
즉, UI 흐름, 화면전환 등을 담당합니다.
-> 하나의 화면, 기능을 담당하는 모듈로 만들어볼 예정입니다.

Domain

비즈니스 로직, 유즈케이스, 프로토콜 등을 포함하는 계층으로 보여요
UseCase, Model, Repository Protocol, DTO 등 포함
API 로직과 내부 Core로직을 묶어서 Feature에서 사용할 수 있도록 하는거죠.

Data

만약 Data 레이어까지 분리한다면
UseCase, Model, Repository Protocol, DTO 등 포함하고 Domain을 인터페이스화 한다고
생각하면 될것 같아요

Core 혹은 Shared

네트워크나, 키체인이나, HealthKit, 디자인 등
다양항 도메인에서 동유하고, 기술 구현을 포함하는 단이다. 라고
저는 정의하고 작업을 해볼 것 같아요.

Tuist 에서 말한 나눈 기준

  • Example: (옵션) 데모 앱
  • Tests: (옵션) 테스트
  • Testing: (옵션) 테스트를 위한 목업
  • Implement: 구현부
  • Interface: 인터페이스

마무리하며

자...! 정의는 된 것 같아요
이제 나눠볼 시간이 온것 같습니다.
Tuist 편에서 뵙죵 ㅎㅎ

profile
IOS 개발자 새싹이, 작은 이야기로부터

0개의 댓글