
프론트엔드
AttributedString 구조로 풀어낸 대규모 iOS 설정 시스템
두줄요약
LINE iOS의 대규모 서비스 설정 시스템을 AttributedString 구조를 참고해 재설계한 사례를 소개했습니다. 타입 안전성, 동시성, 디버그 오버라이드, 테스트 대역을 함께 개선했습니다.
문제 상황
- LINE iOS의 서비스 설정 시스템이 성장하며 단일 파일 선언, 순환 의존, 불완전한 추상화, 스레드 안전성 부재, 디버그 오버라이드 부재, 테스트 대역 난립 문제가 누적
- 수백 개 설정 키와 수십 개 모듈이 얽히며 문자열 기반 설정 관리가 한계에 도달
구조와 흐름
- Foundation의 AttributedString 설계에서 타입 안전한 키 정의, 스코프 그룹화, dynamic member lookup, 값 컨테이너 구조를 참고
- 키를 모듈별로 선언하고, 스코프와 동적 멤버 라우팅으로 타입 추론이 이어지도록 구성
- 참조 타입 서비스는 OSAllocatedUnfairLock과 Swift 6 Sendable 체크로 동시성 안전성 확보
해결 방법
- ConfigurationKey에 이름, 기본값, 디코드/인코드 책임을 모아 삼중 기본값과 반복 디코딩 제거
- Value 타입을 문자열/JSON 직렬화 가능 타입으로 분류해 공통 구현 제공
- 디버그 오버라이드와 MockConfigurationService를 시스템에 내장해 QA와 테스트 편의성 개선
적용해볼 점
- 타입 안전한 설정/메타데이터 설계에 AttributedString식 스코프와 라우팅 패턴 적용 가능
- 도메인별 키 정의와 직렬화 책임 분리를 통해 모듈 경계와 유지보수성 개선 가능