[ADR][가상] 아키텍처 의사 결정 기록: Xcode 프로젝트 생성 도구 선택하기 Tuist vs XcodeGen
01 May 2023
Contents:
Xcode 프로젝트 생성 도구 선택하기 - Tuist vs XcodeGen
작성일 : 2023-05-01
작성자 : 안정민
상태
-
수락됨(Accepted)
-
프로젝트 생성을 잘 관리할 수 있는 새로운 도구를 사용할 수 있게 된다면 다시 논의합니다.
배경
프로젝트가 커짐에 따라 프로젝트 파일 충돌, 결합도 증가, 빌드 시간 증가, 작성한 코드의 결과 확인의 어려움 등이 있습니다. 별도의 프로젝트, 라이브러리로 코드를 분리하여 프로젝트의 운영, 유지보수성과 확장성을 높이려고 합니다. 그러나 이런 작업은 반복적이고 복잡한 작업일 수 있으며, 실수할 가능성이 있습니다.
- 자동화된 프로젝트 생성 도구를 사용하여 안정적으로 모듈을 만들 수 있는 환경을 구축하길 원합니다.
- 모듈, 데모앱, 테스트 등을 지원해줄 수 있는 구조를 고려하고 싶습니다.
결정
요구 사항을 신중하게 고려하고 평가한 후 프로젝트 생성을 위해 선호하는 도구로 Tuist를 선택하기로 결정했습니다.
이유
Tuist와 XcodeGen 모두 Xcode 프로젝트를 생성하는데 널리 사용되는 도구이며, 둘 다 장단점이 있습니다. 프로젝트 요구 사항과 팀 전문성을 신중하게 고려한 후 다음과 같은 이유로 Tuist를 사용하기로 결정했습니다.
- 사용 용이성 : Tuist는 Swift 언어로 Manifest를 작성할 수 있어, 해당 파일을 읽고 이해하기 쉬우므로 개발자가 Tuist에 심층적인 지식 없이도 프로젝트를 생성할 수 있습니다. 또한, Mach-O에 따라 프레임워크, 라이브러리의 Embed 설정 및 의존성 관리를 Tuist는 쉽게 관리해줄 수 해줍니다.
- 확장성 : Tuist는 최소한의 구성으로 복잡한 프로젝트 구조를 쉽게 관리할 수 있으므로 여러 대상과 종속성이 있는 대규모 프로젝트에 적합합니다.
- 가시화 : Tuist에서 모듈 간의 의존성 그래프를 다양한 포맷으로 지원하여 분석하여 모듈 간의 의존성 정리하는데 적합합니다.
XcodeGen도 자체적인 이점이 있는 훌륭한 도구이지만 Tuist가 우리 프로젝트의 특정 요구 사항에 더 적합하다고 생각합니다.
결과 및 영향
Tuist를 개발 프로세스에 통합하려면 몇 가지 추가 설정 및 구성이 필요합니다.
- Tuist 구성 파일 생성 및 유지 관리, 개발자가 도구에 익숙해지도록 시간 필요
- 새 도구를 수용하기 위해 기존 작업 흐름을 수정하는 작업
- Tuist 기반 코드 이전 비용 검토
결론
우리는 Tuist 사용의 이점이 이러한 초기 비용을 능가하고 궁극적으로 보다 확장 가능하고 유지 가능한 프로젝트 구조로 이어질 것이라고 판단됩니다.
노트
- 카카오뱅크
- 당근마켓
- 29CM
- Mercari
- 에어비앤비
- MIXI
- mitene
- Slack
- Trendyol
- 쿡패드
- Just Eat
- Depop
- The Washington Post
- Badoo
- Spotify
- Wayfair
- Capital One
- Article
- 모듈식 iOS 가이드
- iOS Architecture Patterns for Large-Scale Development
- 인프라 지속성 계층 디자인
- [Swift] Bastard Injection의 문제점, 혹은 의존성 반전의 원리에 대해서 또는 needle이라는 DI 컨테이너 소개