본문으로 이동
레고처럼 조립하는 토스 앱
문서

레고처럼 조립하는 토스 앱

이준석/송범근 · 토스 · 토스 기술 블로그

원본 보기

소개

수많은 서비스를 담고 있는 대규모 iOS 앱에 어울리는 아키텍처는 무엇일까요? 프로젝트 간의 의존성과 모듈 간의 결합도를 낮춰, 더 효율적인 서비스 개발, 관리를 이뤄낸 과정을 소개합니다.

AI 핵심 요약

수백 개의 서비스가 들어간 토스 iOS 앱은 기존 계층 구조에서 Feature 모듈 간 의존성이 복잡해지고 순환 참조와 구조 파악의 어려움을 겪었다. 이를 해결하기 위해 각 서비스를 Feature, Interface, Testing, Tests, Example의 다섯 모듈로 나누는 Microfeatures 아키텍처를 도입하고, 서비스 간에는 구현체가 아닌 Interface에 의존하도록 바꿨다. 대규모 모듈 분리 과정의 작업량과 충돌을 줄이기 위해 Tuist 템플릿과 Scaffold를 활용했으며, iOS 챕터 전체가 전환에 참여했다. Example 앱은 전체 앱보다 빠르게 기능과 UI를 확인하고 사내에 배포할 수 있어 개발 및 협업에도 도움이 됐다.

  • 서비스 간에는 구현 모듈 대신 공개 인터페이스를 제공하는 모듈에 의존하게 해 결합도를 낮출 수 있다.
  • Microfeatures는 기능, 인터페이스, 테스트용 코드, 테스트, 예제 앱을 분리해 서비스 단위로 관리한다.
  • Tuist의 Stencil 템플릿과 Scaffold를 활용하면 반복적인 모듈 생성 작업을 자동화할 수 있다.
  • Example 앱은 필요한 기능만 빌드해 UI를 빠르게 확인하고, 디자이너·기획자와 결과물을 공유하는 데 유용하다.