Experience
Ahnlab Blockchain Company — Android Owner (Wallet Core)2023.01–Present
역할·Android Engineer (Owner)
범위·Wallet/Signing · 아키텍처 · 성능/품질
팀·Android 3 / 전체 8
서비스·멀티체인 Web3 Wallet 서비스
기여·아키텍처 개편 오너 · 성능/품질 지표 운영 · 서명 파이프라인/상태 모델 설계
- 품질 모니터링: Crash/ANR/Startup/Frame 지표 기반으로 문제를 탐지하고, 재현·수정·회귀 방지까지 릴리즈 단위로 운영.
- Web‑App 연동 설계: 서버 주도 콘텐츠(인증·약관)는 WebView로 유지하되, 인증 결과를 네이티브로 전달하는 인터페이스를 이벤트 기반 JS Bridge 콜백으로 설계하고, 세션 만료·앱 복귀 시 WebView 상태를 네이티브에서 재검증하고, 인증 실패 시 재인증 흐름으로 강제 전환하는 방식을 선택했습니다. 딥링크로 앱 내부 트랜잭션/지갑 화면에 안전하게 라우팅하고, 인증 완료 후 네이티브 상태가 갱신되지 않는 문제를 JS Bridge 콜백으로 해결.
- 멀티모듈 아키텍처 개편 오너십: 기능 간 의존성이 커지며 변경 영향 범위와 릴리즈 리스크가 증가하는 문제를 해결하기 위해, 전면 재작성 대신 기존 코드를 유지하며 점진 마이그레이션하는 전략을 선택했습니다. feature·domain·core 레이어 기준으로 모듈 경계와 의존성 방향을 재정립하고, 기능 플래그·단계적 배포로 릴리즈 연속성을 보장하며 적용 → 신규 기능 추가 속도와 릴리즈 안정성 개선.
- 성능/품질 지표 운영: 사용자 체감 이슈(“트랜잭션 거래내역 스크롤이 끊긴다”)를 계기로 JankStats/Trace로 계측하고, 리컴포지션 원인(상태 범위/불필요한 recomposition)과 렌더링 병목을 제거 → UI 성능 +30% (Jank frame 감소 기준), 리컴포지션 30% 감소(40→30). 동시에 릴리즈마다 메모리/크래시 지표를 추적해 메모리 −20%, 크래시 −20%, cold-start 40% 단축을 달성해 핵심 거래 흐름에서의 이탈 가능성과 운영 리스크를 함께 낮춤.
- 서명 파이프라인 설계: MPC + Android KeyStore + 생체인증 조합으로 키 관리/서명 정책을 설계하고, 클라이언트에서는 서명 연산만 수행하도록 역할을 제한. 인증/서명/전송 단계에서 실패 시 단계별 재시도 안내와 롤백 UX를 제공해 승인 실패율을 낮추고 거래 흐름 중단을 줄임.
- 품질 체계화: 테스트 커버리지 80% 달성 및 CI/CD 자동화로 릴리즈 품질 유지, 버그 −60%(이슈 트래킹 기준) 개선. 이를 통해 장애 대응 비용과 릴리즈 불확실성을 낮추고 팀의 개발 생산성을 높임.
스코프
지갑 코어/서명/온보딩/네트워크 레이어/성능 계측
역할
Android 오너(설계+구현) · 상태/흐름 설계 · 릴리즈 리스크 관리(플래그/단계 배포)
대표 성과
cold-start −40%
UI +30%
Crash −20%
Bug −60%
측정 기준
Firebase Performance(Startup/Trace) · Crashlytics(crash-free users) · JankStats(frame time/jank 감소율)
전/후
cold-start −40% · UI 성능 +30% · 메모리 −20% · 크래시 −20% · 버그 −60%
(릴리즈 전후 동일 기준으로 추적)
Appknot2018.12–2023.01
역할·Android Engineer
범위·모듈화/MVVM · 미디어 기능 · 네트워크 최적화
주요 기여·MVVM 도입 주도 · 공통 모듈 구축
역할/범위
신규 기능 개발 · 미디어/네트워크 최적화 · 모듈화/MVVM 도입 주도
- MVVM 아키텍처 도입·모듈화를 주도하여 다수 Android 앱의 화면/비즈니스 로직 책임을 분리하고 유지보수성과 기능 확장성을 개선.
- 실시간 미디어 기능(ExoPlayer 기반 영상 재생, PDF 뷰어 등)을 개발·출시하고, 안정적인 사용자 경험을 위해 로딩/재생 흐름을 개선.
- 네트워크 레이어 설계: RxJava 기반으로 비동기 API 레이어를 설계하고, Coroutines/Flow 전환을 주도하며 코드 가독성과 에러 처리 일관성을 개선.
- 공통 유틸/확장 모듈을 구축해 프로젝트별 중복 코드를 줄이고, 신규 기능 개발 및 코드 리뷰 효율을 개선.
Earlier Experience2016.06–2018.11
역할·Android Engineer
범위·소비자 앱 개발 · 실시간 스트리밍/미디어 파이프라인 프로토타이핑
- Earlier Experience: Wonderple/틸트코드 등 소비자 앱 개발·유지보수와 저지연 스트리밍/미디어 파이프라인 실험을 통해 Android UI·네트워크·앱 구조 실무 경험 축적.
Selected Projects
Klip (가상자산 관리 앱)2025.05–2025.08
역할·Android Engineer
기여·공통 모듈 재사용 주도 · 멀티체인 확장 · 릴리즈 가드(플래그/단계 배포)
서비스 규모·MAU 30K · DAU 3K · 다운로드 2M+
개발 리드타임·6주 → 2주 (−67%)
- 멀티체인 자산(BTC/Tron/Solana/EVM) 지원을 확장, 기존 UX를 유지하며 기능 추가.
- ABC Wallet 공통 모듈 재사용을 주도, 개발 리드타임을 6주 → 2주로 단축해 기능 출시 속도와 제품 확장 대응력을 높임.
- 백그라운드 서비스·기능 플래그를 도입, 점진 배포로 릴리즈 리스크를 최소화해 멀티체인 확장 과정의 운영 안정성을 높임.
Stack: Kotlin, Clean Arch, MVVM, Hilt, Coroutine/Flow, Retrofit, Room
ABC Wallet2024.03–2025.05
역할·Android Engineer (Owner)
기여·Signing/Tx UX · 상태/흐름 설계 · Compose 전환 · 성능/품질 계측
성과·첫 거래 3분 → 1분, DAU +26%, cold-start 40%↓
- 아키텍처 설계: 체인별 데이터 소스 처리 로직이 중복되고 화면 코드가 비대해지는 문제를 해결하기 위해 Repository/UseCase 패턴을 도입해 데이터 레이어를 분리했습니다. 거래 흐름처럼 상태 전이가 복잡한 화면은 단방향 상태 모델로 관리해 예측 가능성을 높였고, 상태 기반 렌더링에 적합한 Compose로 전면 전환했습니다.
- Platform Migration: 기존 React Native(v1) 기반 구조에서 Android 네이티브로 전환하며, 성능 병목·상태 관리·디버깅 한계를 해결하고 안정성과 개발 생산성을 개선했습니다.
- 문제 → 해결: 금융 거래는 되돌릴 수 없기 때문에 사용자는 옵션 선택 앞에서 실수를 두려워해 이탈했고, 전송 후에도 결과가 바로 보이지 않아 '내 거래가 성공했는지' 불안한 채로 기다렸습니다. 이 두 가지 불안 구간을 줄이기 위해 기본값·가드레일·보조 상태를 함께 설계했습니다:
- 거래 옵션 단순화: 불필요한 선택 단계를 줄이고, 실수에 대한 부담을 낮추는 기본값과 가이드를 제공
- 수수료 옵션 단순화: 즉시성 피드백을 강화해 '언제 전송되는지' 모르는 대기 불안 완화
- 승인 단계 단순화: 생체인증 연동으로 승인 단계를 간결하게 만들고 실패율을 낮춤
→ 첫 거래 3분 → 1분; DAU +26% (2.7k → 3.4k).
- 트레이스 기반 프로파일링으로 리컴포지션 30% 감소(40→30), 렌더링 성능 +30%, cold-start 40% 단축.
- 사전 계측으로 크래시율 −20% (1.9% → 1.5%)를 달성해 핵심 사용자 흐름의 중단 가능성을 줄임.
- 상태 신뢰성 개선: 거래 완료 직후 결과 확정이 지연되는 구간에서 사용자는 '내 돈이 잘 전송됐는지' 알 수 없어 앱을 반복 확인하거나 이탈했습니다. 앱 서버 캐시와 모바일 보조 상태를 활용해 사용자에게 먼저 진행 상태를 보여주고, 이후 서버와 최종 동기화하는 흐름을 설계해 결과 확인 지연으로 인한 이탈과 불안을 줄였습니다.
- 타팀 협업: 모바일/서버 간 상태 정의와 동기화 시점을 맞추기 위해 적극적으로 커뮤니케이션하며, 지연·불일치 상황에서도 사용자 경험이 깨지지 않도록 상태 응답 스펙과 동기화 타이밍을 서버팀과 문서화해 장애 대응 효율을 높임.
Stack: Kotlin, Compose, Coroutine, Room, Proto DS, Hilt, Retrofit, KeyStore, Biometric, JUnit/Espresso, Actions
JinModule2019.08–2022.08
역할·개발/유지 오너
성과·부트스트랩 80% 단축 (신규 프로젝트 기준)
적용처·내부 공통 모듈로 다수 프로젝트에 재사용
- 재사용 가능한 네트워킹·미디어 유틸을 구축, 신규 프로젝트 부트스트랩 80% 단축.
- Retrofit/ExoPlayer 컴포넌트 표준화로 코드 리뷰 효율 향상.
이코오롱 멤버십2020.11–2021.03
역할·Android Engineer
문제·리스트/페이징 체감 지연·ANR
성과·체감 로딩 2.3s → 1.3s (−43%), ANR 0.5% → 0.3%
- 커스텀 페이징·무한 스크롤을 최적화, 스크롤 끊김 해소 및 대량 데이터 로딩 시간 단축.
- GPS 매장 찾기와 배치 로딩을 도입, 대규모 사용자 환경에서 UX 안정화.
Stack: Kotlin, Coroutine, Room, Koin, LiveData/DataBinding, Retrofit/OkHttp, Moshi