T
TechInsights
목록으로
FrontEnd•2023. 11. 22.

모듈 구조를 개선해 더 나은 뱅크샐러드 iOS 앱 개발하기

뱅크샐러드
뱅크샐러드 Engineering Team
모듈 구조를 개선해 더 나은 뱅크샐러드 iOS 앱 개발하기

핵심요약

원문 보기

뱅크샐러드 iOS 프로젝트의 모듈 구조 개선 과정을 다루며, 과도하게 커진 공용 코드 모듈을 분리하고 의존성 역전 원칙을 적용하여 더욱 유연한 아키텍처를 구축한 사례를 소개합니다.

뱅크샐러드 iOS 모듈 구조 개선: 유연하고 확장 가능한 아키텍처 구축

기존 모듈 구조의 문제점과 개선 필요성

  • 초기 단일 모듈에서 기능 확장으로 인한 코드 복잡도 증가 및 무분별한 의존성 문제 발생.
  • Shared라는 모호한 이름의 거대 공용 코드 모듈이 비대해져 불필요한 내부/외부 코드 의존성 유발.
  • Data 레이어가 자체 인터페이스를 소유하여 향후 통신 방식(REST, gRPC)이나 데이터 출처(캐시, 서버)에 따른 모듈 분리 시 의존성 역전 원칙 위배 및 모듈 간 불필요한 의존 문제 예상.

거대 Shared 모듈의 효율적 분리 전략

  • Live Activity 기능 도입을 계기로 SwiftUI/SwiftConcurrency 기반의 새로운 모듈이 기존 공용 코드의 최소 부분만 필요로 하는 상황 발생.
  • 사용하지 않는 코드 제거 및 특정 모듈 코드 이전을 통해 유효 코드만 남기는 준비 작업 수행.
  • 독립 가능한 기능 식별 후, Constant, SwiftExtension, DIContainer와 같은 명확한 목적의 소규모 모듈로 분리하여 의존성 경량화.
  • 최종적으로 Shared 모듈을 완전히 제거하고 각 기능의 독립성을 강화하는 것을 목표로 지속적인 분리 진행.

의존성 역전 원칙(DIP)을 통한 Data 레이어 유연성 확보

  • 클린 아키텍처 적용으로 Domain과 Data 레이어를 분리했으나, Data 레이어가 **인터페이스(명세)**를 함께 소유하는 구조적 한계 노출.
  • Data 모듈 내 구현체의 접근 제한자 변경 및 합성(Composition) 방식을 활용하여 구현체에 대한 직접적인 의존성 제거.
  • DataInterface라는 추상화된 별도 모듈을 생성하여 명세를 이동시키고, Domain 및 Data 모듈이 DataInterface에만 의존하도록 재설계.
  • 이로써 Data 모듈 분할 시 발생할 수 있는 모듈 간 불필요한 의존성 문제를 해결하고, 유연하고 확장 가능한 아키텍처 기반 마련.
#FrontEnd#Architecture
뱅크샐러드
뱅크샐러드

뱅크샐러드 Engineering Team

기술 인사이트를 전달하는 공식 채널

You might also like

View all
아이지에이웍스 AI 에이전트 클레어: Amazon Bedrock 기반 Text-to-SQL/Chart 에이전트로 이룬 데이터 분석 혁신

아이지에이웍스 AI 에이전트 클레어: Amazon Bedrock 기반 Text-to-SQL/Chart 에이전트로 이룬 데이터 분석 혁신

100년 가는 프론트엔드 코드, SDK

100년 가는 프론트엔드 코드, SDK