
프론트엔드
Mergeable libraries 로 29% 빠르게 앱 실행하기
두줄요약
29CM iOS 앱에 Mergeable libraries를 적용해 Release 빌드의 라이브러리 병합 문제를 해결했습니다. Sentry로 정량 측정한 결과 앱 시작 시간이 눈에 띄게 개선되었습니다.
문제 상황
- 29CM iOS 앱의 Cold Start 지표가 p50 약 1.5초, p90 약 2.3초로 다소 느린 상태
- 80개가 넘는 모듈과 다수의 Dynamic library 구조에서 시작 시간 개선 필요
원인 분석
- Release 빌드에서도 Dynamic library가 유지되어 앱 시작 시 로드·링크 비용 발생
- 정적 링크와 동적 링크의 장단점이 빌드 시간과 시작 시간에 각각 상충
해결 방법
- Xcode 15의 Mergeable libraries 도입으로 Debug는 Dynamic, Release는 Static처럼 병합되도록 구성
- Automatic 설정 실패 후 Manual 설정으로 전환하고, 간접 종속성에 병합 플래그와 Tuist 설정 반영
- Sentry와 otool로 결과를 검증하고 시작 시간 변화를 정량 측정
성능/운영 포인트
- Cold Start 약 400~500ms, Warm Start 약 180~250ms 개선
- 불필요한 심볼 제거용 -no_exported_symbols 옵션도 함께 적용
