Tuist TMA

GomHyeok·2024년 12월 30일
  • 기타 잡 정보 (TMA 는 원래 MicroFeatures 아키텍처였다..!)

TMA - The Modular Architecture

  • 간결한 API를 사용하여 상호 연결된 독립적인 기능을 구축하여 앱을 빌드하는 것
  • 빌드 및 테스트 주기를 최적화함.
  • DIP를 만족 → 구현체를 interface 뒤에 숨겨서 만족함
  • 5개의 target으로 조합됨

Interface : 기능의 공개 인터페이스와 모델을 포함하는 target

Feature(Source): 해당 feature의 공개 interface의 구현체가 포함된 target

Tests : 해당 feature의 unitTest, Integration Test등이 포함 된 target

Testing : Test나 Example에 사용할 수 있는 해당 feature의 테스트 더블 객체 등이 포함된 Target

Example : 해당 feature의 예제 앱을 만들어 놓을 수 있는 Target. → 특정 조건 등의 기능을 시험하기 위한 용도

장점

  1. 간결한 API
  • 단일 Target을 사용하여 코드에 암시적으로 의존성 구축이 쉬워짐
  • 공개 Interface모둘과 구현체 모듈위 분리로 feature 사용 방식 제어
  1. 소형 모듈(Divide and Conqure)
  • 기능을 분리하여 테스트하고 시도할 수 있음
  • 선택적인 컴파일을 하여 개발 주기가 빨라짐
  • 전체 앱의 컴파일은 작업의 맨 마지막에(기능 통합할 경우) 필요함
  1. 재사용성
  • 프레임워크, 라이브러리를 사용해 앱과 Extension(iMessage Extension, Today Extension, watchOS App) 다른 제품에서 코드 재사용이 간단하다.
  • 기존 Micro Feature를 결합, 추가하여 다른 서비스 구축할 수 있다.

목표 : 수평적 의존성 구조 구축(종속성)

  • 모듈이 다른 모듈에 종속되면 해당 인터페이스에 대하여 의존함
  • 모듈의 구현이 다른 모듈의 구현(구현 VS 인터페이스)에 결합되는 것을 방지함.
  • Interface의 변경 가능성이 낮아져 이를 기반으로 캐시를 구축하여 빌드 시간을 단축할 수 있다.
  • Interface에만 의존함으로 써 협업 시 구현을 기다릴 필요 없이 인터페이스를 사용할 수 있으므로 작업 속도와 개발 속도가 향상된다.
profile
github : https://github.com/GomHyeok/

0개의 댓글