
프론트엔드
iOS App Extension의 안정성 확보하기
두줄요약
App Extension은 별도 프로세스라 크래시와 실패를 놓치기 쉬워 별도 모니터링이 필요했습니다. 공유 컨테이너와 메인 앱 수집 구조로 경량 안정성 시스템을 구축했습니다.
문제 상황
- App Extension이 메인 앱과 분리 프로세스로 동작해 크래시와 기능 실패를 놓치기 쉬운 구조
- 푸시 알림, 위젯 등 사용자 실행이 적은 확장 영역은 테스트와 모니터링이 까다로운 사각지대
- Crashlytics, Sentry 같은 기존 도구도 Extension 환경에서는 수집 분리와 오버헤드 한계 존재
원인 분석
- 메인 앱 중심 개발로 Extension 예외 상황이 모니터링 우선순위에서 밀리는 구조
- Extension은 다음 실행 시점을 예측하기 어려워 일반적인 크래시 리포팅 흐름과 맞지 않음
- 메모리, CPU, 실행 시간 제약이 커 무거운 SDK 추가 자체가 안정성 부담
해결 방법
- Extension에서 예외, 시그널, stderr, 정상 종료 플래그를 직접 수집하는 경량 모니터링 시스템 구축
- 수집 데이터는 App Group 공유 컨테이너에 저장하고, 네트워크 전송은 메인 앱의 ErrorReporter가 담당
- 실행 횟수와 성공 횟수 차이, 비정상 종료 플래그로 크래시와 워치독 종료를 간접 추정
