모듈 구조를 개선해 더 나은 뱅크샐러드 iOS 앱 개발하기
핵심 내용
뱅크샐러드 iOS 팀이 의존성 역전 원칙을 적용해 Shared 모듈을 제거하고 모듈 간 결합도를 낮췄다.
자세히 보기
뱅크샐러드 iOS 챕터는 서비스 기능 증가로 인한 코드 복잡도 급증을 해결하기 위해 프로젝트의 모듈 구조를 개선하고 있다. 초기 단일 모듈에서 분리된 구조는 확장 과정에서 Shared 모듈이 과도하게 커지고 불필요한 의존성을 유발하는 문제를 겪었다.
Shared 모듈 분리 및 의존성 최소화
기존 Shared 모듈은 Manager, Helper 등 모호한 이름으로 불필요한 코드까지 포함해 거대해졌다. 이를 해결하기 위해 미사용 코드를 제거하고, Constant, SwiftExtension, DIContainer 등 명확한 목적의 작은 모듈로 분리했다. 각 모듈이 독립된 앱처럼 가볍게 동작하도록 의존성을 최소화하는 것이 목표다.
의존성 역전 원칙 적용
클린 아키텍처를 적용해 Domain 레이어와 Data 레이어를 분리했으나, Data 레이어의 인터페이스가 Data 모듈 내부에 위치해 향후 통신 방식 변경 시 문제가 예상됐다. 이에 따라 DataInterface 모듈을 별도로 생성해 명세를 분리하고, Domain과 Data 모듈 모두 이 인터페이스에 의존하도록 구조를 재설계했다.
구현체 접근 제한 및 DI 도입
구현체의 접근 제한자를 모듈 내부로 제한하고, 외부에서 직접 생성하던 부분을 의존성 주입(Dependency Injection) 방식으로 변경했다. 상속을 통한 기능 확장은 **합성 관계(Composition over Inheritance)**로 전환해 구현체에 대한 직접 의존을 제거했다. 이를 통해 gRPC 도입이나 클라이언트 캐싱 등 향후 변화에 유연하게 대응할 수 있는 기반을 마련했다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.