박우찬

iOS Engineer · 5년차

핀다에서 대출 비교 서비스의 iOS 개발과 운영을 담당하고 있습니다. 앱의 구조와 성능을 꾸준히 개선하고, 운영 문제는 데이터를 기반으로 원인을 분석하여 해결하고 있습니다.

woozzaang@gmail.com

약 40MB 한도조회 1회당 메모리 누수 제거
약 25% 앱 실행 직후 평균 요청 시간 단축
95% Sentry 최다 fatal 이벤트 중 오탐 비율 규명

Experience

(주) 핀다

금융상품 팀 · iOS Engineer

2022.08 - Present

운영 안정성·성능 개선

  • 외부 SDK의 retain cycle을 규명하고 벤더에 수정안을 전달해 SDK 개선을 이끌었습니다. 수정된 SDK를 적용해 한도조회 1회당 약 40MB의 메모리 누수를 제거하고, Instruments로 동일 시나리오를 반복해 검증했습니다.
  • Sentry 최다 fatal 이슈였던 WatchdogTermination의 90일 이벤트 388건을 전수 분류해 95%가 오탐임을 규명하고, 오탐원을 제거해 실사용자 OOM을 기준으로 회귀를 감지할 수 있는 지표로 정상화했습니다.
  • Instruments 계측으로 중복 생성되던 URLSession 인스턴스 26개를 확인한 뒤 단일 공유 인스턴스로 통합해, 앱 실행 직후 57개 Task 기준 평균 요청 시간을 약 25%(529.77→395.61ms) 단축했습니다.

차세대 API 전환과 대출 비교 서비스 개발·운영

MAU 58만, 누적 한도조회 2,600만 회 규모의 대출 비교 서비스를 개발·운영하며 주택담보대출·사업자 대출과 국민은행 전용관 등 상품·제휴 채널별 가심사 플로우를 추가·개선했습니다.

  • 40개 차세대 API를 연동한 50여 개 신규 화면을 기존 화면과 병존시키고 신구 경로 선택을 진입 계층에 격리해, 서버 A/B 비율에 따라 점진적으로 전환하고 레거시로 되돌릴 수 있도록 구현·검증해 배포했습니다.
  • 여러 화면에 걸쳐 이어지는 대출 신청 플로우의 상태를 값 타입 Context로 관리하고, 화면 전환 정책을 Reactor의 Destination으로 열거해 상태 전달과 화면 출구를 코드에서 추적할 수 있게 했습니다.
  • 서버 DTO가 도메인·화면 계층까지 그대로 전파되던 구조를 분리하고, 앱 도메인 모델과의 변환 책임을 Repository 경계에 고정해 화면 계층의 DTO 직접 의존과 중복 매핑을 제거했습니다.

앱 구조·개발 환경 개선

화면과 SDK 의존성을 분리하고, UI 개발·검증 과정과 빌드 성능을 개선했습니다.

  • 담당 35개 화면을 Tuist 모듈로 분리하고 샘플 데이터를 주입하는 Example 앱을 구성해, 전체 앱 실행 없이 화면을 개발·검증하도록 했습니다.
  • 63개 MVC·MVVM 기반 화면을 ReactorKit 기반 MVI 구조로 전환해, 화면마다 달랐던 상태 관리와 이벤트 처리 방식을 공통 흐름으로 통일했습니다.
  • 타입 검사 병목을 찾고 코드 구조를 개선하여 클린 빌드 시간을 20% 단축했습니다.
  • MMP 연동에 어댑터 패턴을 적용해 SDK 직접 의존을 분리하고, AppsFlyer에서 Airbridge로의 교체에 대응할 수 있는 구조를 마련했습니다.

WebKit 기반 Native-Web 연동 경험

FE팀과 협업해 하이브리드 앱의 Native-Web 메시지 처리 기준과 화면별 Native 기능 노출 범위를 정리했습니다.

  • 공통·화면 전용 JavaScript handler의 노출 경계를 정의·문서화하고, 미사용 handler 25개를 제거해 불필요한 Native 기능 호출 경로를 줄였습니다.
  • Sentry에서 WKUIDelegate completionHandler 호출 누락으로 발생한 WebKit 크래시를 분석하고, JavaScript alert/confirm 처리에 call-once guard를 적용해 완료 콜백이 정확히 한 번 호출되도록 수정했습니다.

오누이

Product 팀 · iOS Engineer

비대면 과외 iPad 앱 설탭의 서비스 개발 및 운영 대응을 담당했습니다.

2021.12 - 2022.07