우리가 모듈화를 할 수 밖에 없었던 이유
by chanju · 50 things on NewTwos
- 왜 모듈화를 시작했는가?
- 비즈니스의 성장과 함께 코드량 증가
- 비즈니스의 성장과 함께 요구되는 리소스 증가
- 리소스 = iOS 개발자
- 개발자 증가 > 코드 증가 > 빌드 시간 증가 > 유지보수 비용 증가, 근무시간 증가
- 악순환…
- 파일이 증가하면서 Xcode도 힘들어해
- 인수 목록이 너무 길어서 발생하는 에러가 생김
- 파일이 많아지기 때문
- 파일이 많아지거나 경로가 깊어질수록 발생할 수 있음
- 선택과 집중
- 데모 타겟을 따로 만들기 (임시 방편)
- 프로젝트시 모듈을 생성 (러닝 커브)
- 모듈화 최신 현황
- 2020년 43개 모듈을 시작으로
- 2022년에는 153개, 2023년은 319개 모듈이 생성됨
- 2022년에 모듈화 결정
- 빌드 속도의 개선
- 빌드 시스템의 개선에 맞춰 작업이 필요
- Task, Framework, App 단위로 의존성이 생김
- 의존성 그래프로 특정 작업이 얼마나 걸리는지 판단할 수 있음
- 병렬로 처리하더라도 의존에 따른 처리는 순차적으로 진헹되어야 함
- 샘플앱 빌드를 통한 생산성 강화
- 특정 기능에 도달하기까지 많은 과정과 데이터가 필요하다면
- 모듈화를 통해 별도의 샘플앱을 빌드 가능함
- 모듈 기준 정의하기
- RIB 아키텍처 사용
- 의존성을 명확하게 주입하는 RIB은 모듈화에 많은 도움이 됨
- 가장 적절함을 찾는 과정일 뿐 정답은 없음
- 빌드 프로세스의 이해
- 프로젝트 전반의 의존성 관계 이해
- 모듈 구조 정의하기
- Tuist templates를 사용
- Framework
- InterfaceFramework
- Dynamic vs Static
- Link에 대한 이해 필요
- Static libraries
- 앱 바이너리에 복사
- 앱을 빌드하는데 걸리는 시간에 영향
- Dynamic libraries
- 복사되지 않지만 앱 실행 시 로드되면서 실행속도에 영향
- Mergeable libraries
- 새로 나온 개념
- 모듈화에 대한 회고
- 접근 제어자를 잘 써야 함
- Open, Public
- Public은 모듈 내
- 레퍼런스를 찾기 어려움
- 많은 러닝 커브가 있었음