Fisher Lotto
동행복권 1등 당첨판매점 및 연금복권 분석 데이터를 제공하는 위치 기반 네이티브 Android 앱
정량적 검증 성과 지표
4-Module
모듈 아키텍처
app / presentation / domain / data
100%
CI/CD 자동화
GitHub Actions + Vercel Serverless
100% Public
공개 코드베이스
GitHub 공개 저장소 2개 (App + Backend)
프로젝트 배경
실무에서 즉시 도입하기 어려운 최신 Android 스택(Compose, Multi-module, MVI, Play Billing)과 클라우드 백엔드를 End-to-End로 직접 설계하고 실전 운영 역량을 검증하기 위해 기획한 1인 사이드 프로젝트입니다.
핵심 문제 및 기술적 제약조건
모바일 앱 내부의 복잡한 비즈니스 로직과 결제 영수증 검증, 푸시 알림 발송, OAuth 연동 같은 서버의 보안 책임을 명확히 분리해야 했습니다.
주요 개발 기능 및 기술 솔루션
01
순수 Kotlin domain 모듈 기반 Multi-module Clean Architecture & Orbit MVI
안드로이드 프레임워크 의존성이 없는 순수 Kotlin domain 모듈과 MVI 단방향 데이터 흐름 설계
문제 상황
QR 스캔, 구독 결제, 오픈뱅킹, 번호 추첨 등 복잡한 비즈니스 로직이 단일 화면에 뒤엉켜 상태 충돌 및 테스트 격리가 어려웠습니다.
해결 방법 & 로직
domain 모듈을 순수 Kotlin으로 격리하여 UseCase 인터페이스를 배치하고, Orbit MVI를 적용해 State(상태), SideEffect(1회성 이벤트), Intent(사용자 동작)를 단방향으로 통제했습니다.
결과 및 성과
비즈니스 로직과 UI 컴포넌트의 결합도를 낮추고 모듈 단위 독립적 유지보수성을 확보했습니다.
02
Google Play Billing 7.0 구독 결제 및 Next.js BFF 서버 실시간 검증
클라이언트에 민감 키를 노출하지 않고 BFF 서버를 통해 결제 영수증 위변조를 방지하는 결제 파이프라인
문제 상황
클라이언트 단에서 직접 결제 결과를 신뢰할 경우 결제 우회(Tampering) 및 영수증 조작 보안 취약점이 발생했습니다.
해결 방법 & 로직
Next.js App Router 기반 BFF 서버를 구축하고 Google Cloud Pub/Sub Webhook 및 Play Developer API를 연동하여 서버 사이드에서 실시간 구매 토큰 검증 및 구독 상태 갱신을 처리했습니다.
결과 및 성과
클라이언트에 민감 키를 두지 않는 안전한 End-to-End 결제 검증 파이프라인을 구축했습니다.
03
CameraX + ML Kit 기반 고속 QR 코드 분석 및 당첨 자동 대조
로또 용지의 QR 코드를 실시간 캡처하여 당첨 번호와 복수 회차 데이터를 자동 파싱하는 카메라 기능
문제 상황
저조도 환경이나 각도 왜곡 시 QR 바코드 디코딩 실패율이 증가하고 카메라 프레임 분석 중 UI 렌더링 스레드가 버벅이는 현상이 있었습니다.
해결 방법 & 로직
CameraX ImageAnalysis 유즈케이스와 Google ML Kit 바코드 스캐너를 결합하고, 백그라운드 Executor에서 실시간 URL 파싱 및 정규식 검증 엔진을 구동했습니다.
결과 및 성과
카메라 뷰파인더 딜레이 없이 0.1초 내 즉각적인 QR 인식 및 당첨 결과 오버레이 표시를 구현했습니다.
프로젝트 결과 및 성과
Android 앱부터 BFF 서버, 인증, 결제, 푸시, CI/CD까지 전 과정을 직접 설계하여 공개 GitHub로 확인 가능한 고완성도 서비스 구조를 구축했습니다.
성장 및 배운 점
모바일 서비스 개발에서는 클라이언트 기능 구현만큼이나 민감 키를 분리하고 서버와의 경계를 견고히 설계하는 것이 보안과 안정성의 핵심임을 배웠습니다.
기술 스택
검증 증거 및 공개 범위
공개 및 보안 가이드라인
GitHub 공개 저장소를 통해 전체 소스 코드와 API 설계를 확인할 수 있습니다.
검증 증거FisherLotto Android GitHub: https://github.com/E1jeong/FisherLotto
검증 증거lotto-sub-backend GitHub: https://github.com/E1jeong/lotto-sub-backend
검증 증거GitHub Actions CI/CD 파이프라인 및 Vercel 배포 내역