사이드프로젝트 slecs

이커머스 결제 앱 빌드 파이프라인 보안·성능 일괄 정비

목차

v3.1 릴리스 정리: 보안·성능·배포 설정을 한 번에 손봄

이커머스 결제 플랫폼 모바일 빌드 v3.1 작업하면서 빌드 스크립트, 난독화 규칙, 버전 메타, gitignore 4종 세트를 같이 갈아엎었음. 한 번에 묶은 이유는 단순함 — 셋 중 하나만 건드리면 나머지가 무조건 어긋남.

.gitignore 부터 정리

처음에 잡힌 추적 누락 파일들 보고 좀 멘붕왔음. 로컬 키스토어, 빌드 산출물, IDE 캐시가 다 올라가 있었음. 정리 기준은 단순하게 잡았음.

  • 로컬 환경에 종속된 파일: 무조건 제외
  • 빌드 산출물: 제외 (재현 가능하니까)
  • 서명 관련 비밀: 절대 제외 + 이미 추적 중이면 git rm --cached 로 빼기
  • 팀원 IDE 설정: 공통 부분만 남기고 개인 워크스페이스는 제외

추적 중인 비밀 파일을 단순히 .gitignore 에만 추가하면 의미 없음. 한 번 커밋된 건 히스토리에 남으니까 별도로 처리해야 함.

빌드 스크립트 — 릴리스/디버그 분리가 핵심

기존엔 디버그/릴리스가 한 덩어리로 묶여 있어서 디버그 빌드에도 난독화가 도는 어이없는 구성이었음. 분리하니까 디버그 빌드 시간이 체감 30% 이상 줄음.

구분 디버그 릴리스
난독화 off on
리소스 축소 off on
로그 strip off on
서명 디버그 키 릴리스 키스토어(로컬 미포함)

릴리스 서명 정보는 로컬 환경 변수로 주입받게 바꿈. 키스토어 경로/비번이 스크립트에 박혀있으면 여러 사람이 빌드할 때 무조건 사고남.

난독화 규칙에서 제일 자주 깨졌던 것

리플렉션 쓰는 직렬화 라이브러리들이 늘 발목 잡음. 모델 클래스가 통째로 사라지면 런타임에 NPE 폭탄. 규칙 잡을 때 체크한 항목:

  • 직렬화 모델: 필드명 보존
  • 콜백 인터페이스: 시그니처 보존
  • 네이티브 호출 진입점: 메서드 보존
  • 결제대행사 SDK: 공식 가이드의 keep 규칙 그대로 반영

특히 결제 SDK 쪽은 마음대로 줄이면 거래 응답 파싱이 깨져서 결제 자체가 안 됨. 한 번 데여본 뒤로는 SDK 문서 keep 규칙을 통째로 복붙하는 게 정신건강에 이로움.

버전 메타 json — 의외로 핵심

원격 강제 업데이트 트리거 용도. 필드 구성은 단순하게 유지함.

{
  "minVersion": "3.1.0",
  "latestVersion": "3.1.0",
  "forceUpdate": false,
  "noticeUrl": "..."
}

forceUpdate 를 진영별로 쪼개고 싶은 욕심이 생겼지만 참았음. 분기 늘리면 운영 중에 사고 확률만 늘어남. 한 줄 토글이 제일 안전함.

회고

세 가지를 같이 묶은 게 정답이었음. 보안·성능·배포는 전부 빌드 파이프라인 한 점에서 만나서 따로 PR로 쪼개면 중간 상태가 무조건 깨짐. 디버그/릴리스 분리, 난독화 keep 규칙 표준화, 버전 메타 단순화 — 이 세 줄로 요약 가능.

다음

댓글 0

첫 댓글 달아줘.