레거시 결제 앱 현대화
카드 결제와 여러 결제 수단을 모바일에서 처리하는 결제 앱의 기능 개발과 유지보수를 오래 맡았습니다. 같은 기반 위에서 돌던 다른 결제 앱과 함께 운영하면서, 이 앱의 요구에 맞는 화면과 결제 흐름을 반영했습니다. 결제 서비스는 빨리 만드는 것보다 기존 결제가 계속 맞게 도는지 반복해 확인하는 일이 더 중요합니다. 작업은 결제 상태 처리, 카메라 서류 제출, 다국어 안내, 앱 오류 관리에 걸쳐 있습니다.
성공 · 실패 · 대기가 한눈에 갈리는 결제 결과
모바일 결제 앱의 핵심 흐름은 결제 요청, 인증, 결과 확인, 오류 응답 처리입니다. 이 흐름을 안정적으로 유지하면서, 결제 결과는 성공 · 실패 · 대기 세 상태를 분명히 나눠 보여 주게 했습니다. 대기를 실패로, 실패를 성공으로 잘못 읽으면 사용자는 같은 결제를 다시 하거나 결제가 끝난 줄 알고 자리를 뜨게 됩니다.

권한에서 재시도까지 끊기지 않는 카메라 서류 제출
모바일 결제 앱은 사용자가 서류를 카메라로 찍어 앱에서 바로 제출하게 합니다. 카메라 권한 요청, 촬영 결과 확인, 업로드 실패, 재시도까지 운영 중에 생길 수 있는 예외를 함께 관리하며 이 흐름을 구현하고 유지보수했습니다. 어느 단계에서 멈춰도 사용자가 다음에 할 일을 알 수 있게 하는 것이 기준이었습니다.

결제 · 인증 오류 안내를 언어마다 다시 읽은 문구
모바일 결제 앱은 사용자층이 넓어 화면과 안내 문구를 여러 언어로 제공합니다. 다국어 화면과 문구를 적용하면서, 결제와 인증 과정의 오류 메시지는 따로 골라 확인했습니다. 기준은 번역이 맞는지보다, 메시지를 읽은 사용자가 다음에 무엇을 해야 하는지 바로 아는지였습니다.

같은 기반의 두 결제 앱에서 공통 오류와 개별 오류를 나눈 대응
운영 중 모바일 결제 앱이 비정상 종료되는 문제는 오류 수집 도구로 지켜보고, 장애로 번질 수 있는 지점부터 우선순위를 매겨 고쳤습니다. 이 결제 앱은 같은 기반 위에서 돌던 다른 결제 앱과 함께 운영했고, 두 앱에 공통인 문제와 한쪽에만 있는 문제를 나눠 대응했습니다. 결함을 허용하지 않는 결제 서비스라, 운영하는 동안 비정상 종료 비율을 매우 낮게 유지했습니다.

이 작업의 포인트
성공 · 실패 · 대기를 헷갈리지 않게 나눈 결제 상태 표시
권한 · 업로드 실패 · 재시도까지 챙긴 카메라 서류 제출
같은 기반의 두 결제 앱에서 공통 오류와 개별 오류를 나눈 품질 관리
인사이트
GA4 client_storage: 'none'은 정말 쿠키를 막을까?
두 달 전 이 블로그에 「GA4 쿠키 없이 쓰기」라는 글을 썼습니다. clientstorage: 'none' 으로 쿠키 저장을 끄고, 자체 분석이 쓰던 익명 ID 를 clientid 로 넘기면 쿠키 0개로 GA4 를 쓸 수 있다는 내…
GA4 Measurement Protocol: gtag.js 없이 서버에서 이벤트 보내기
랜딩 페이지의 전송량을 파일 단위로 쪼개 보다가, 가장 큰 파일이 우리 코드가 아니라는 것을 알았습니다. Google Analytics 의 gtag.js 였고, 방문 한 번에 176KB 를 받고 있었습니다. 페이지 전체가 1,094K…
중소 제조업 AI 도입 순서: DX를 먼저 끝내야 할까?
공장을 가진 중소·중견 제조기업 16만여 곳 가운데 스마트공장을 도입한 곳은 19.5%입니다. 회사가 작을수록 이 비율은 더 떨어집니다. 중소벤처기업부가 2025년 4월에 낸 제1차 스마트제조혁신 실태조사 결과입니다. 그림: 기업 규…
Next.js loading.tsx와 404: 버튼이 화면보다 먼저 살아나게 하기
관리 화면 왼쪽 위에 사이드바를 접고 펴는 ☰ 버튼이 있습니다. 폭 하나 바꾸는 버튼인데, 대시보드에서 누르면 2초 넘게 아무 반응이 없었습니다. 레이아웃만 바꾸는 일이 왜 이렇게 오래 걸리는지부터 들여다봤습니다. Next.js 16…



