뱅크샐러드 iOS, 모듈 구조 개선으로 개발 효율 UP!
Shared 모듈의 비대화로 인해 의존성 문제 발생, 모듈 분리 결정
Constant, SwiftExtension, DIContainer 등 독립 모듈로 분리하여 코드 재사용성 향상
의존성 역전 원칙 적용, DataInterface 모듈 분리로 유연한 구조 확보
Shared 모듈 분리의 기술적 배경
초기 단일 모듈 구조는 개발 속도를 높였지만, 코드베이스 증가로 Shared 모듈의 역할 모호성이 발생했다. 구체적으로, Live Activity 기능 도입 과정에서 SwiftUI와 SwiftConcurrency 사용으로 인해 기존 Shared 모듈의 의존성 문제가 심화되었다. 따라서, 모듈 분리를 통해 각 모듈의 독립성을 확보하고, 코드의 재사용성을 높였다.
의존성 역전 원칙(DIP) 적용의 효과
DataInterface 모듈 분리를 통해 Data 레이어의 유연성을 확보했다. 기존에는 Data 모듈이 인터페이스를 가지고 있어, 데이터 출처 변경 시 Domain 모듈 수정이 불가피했다. DIP 적용 후, Domain 모듈은 DataInterface에 의존하여 Data 모듈의 구현 변경에 독립적으로 대응할 수 있게 되었다. 따라서, 확장성과 유지보수성을 동시에 개선했다.
모듈 구조 개선, 실전 적용 가이드
모듈 분리 시, 사용하지 않는 코드 제거 및 책임 분리를 우선적으로 진행한다. 구체적으로, 각 모듈의 역할을 명확히 정의하고, 의존성 주입(DI)을 통해 결합도를 낮춘다. 따라서, 새로운 기능 추가 시 기존 모듈에 미치는 영향을 최소화하고, 코드의 재사용성을 높일 수 있다. 또한, 모듈 생성 자동화 도구 도입을 고려하여 개발 생산성을 향상시킨다.