간편결제 앱 장기 운영
결제가 잦은 모바일 결제 앱을 맡아 기능을 만들고 오래 운영했습니다. 예전 개발 언어로 쓰인 코드를 기존 동작은 그대로 둔 채 새 구조로 옮기면서, 결제 요청부터 실패 · 재시도까지의 흐름을 함께 유지했습니다. 결제 앱은 작은 오류 하나가 곧 사용자의 신뢰 문제가 됩니다. 작업은 코드 전환, 결제 흐름, 카메라 서류 제출, 다국어, 앱 오류 수집과 수정에 걸쳐 있습니다.
돌아가는 결제 앱을 멈추지 않고 옮긴 코드 전환
모바일 결제 앱은 예전 개발 언어로 쓰인 코드 위에서 돌고 있었고, 이 코드를 지금의 개발 언어 중심 구조로 옮겼습니다. 실제로 결제가 오가는 서비스라 기존 동작은 그대로 두고, 새 기능 개발과 유지보수가 쉬워지는 방향으로 코드의 경계를 정리해 나갔습니다. 옮기는 동안에도 결제는 계속 일어나므로, 배포는 보수적으로 하고 바뀐 부분 주변을 매번 다시 확인했습니다.

결제 요청에서 재시도까지 상태를 놓치지 않는 결제 흐름
모바일 결제는 결제 요청, 인증, 결과 처리, 실패 응답, 재시도로 이어지는 흐름입니다. 이 흐름을 구현하고 유지보수하면서, 단계마다 생길 수 있는 예외와 상태 처리를 세심하게 점검했습니다. 결제 앱에서는 작은 오류 하나도 사용자의 신뢰를 바로 흔들기 때문입니다.

카메라 서류 제출과 언어마다 같은 뜻의 안내
모바일 결제 앱에는 카메라로 서류를 찍어 제출하는 기능이 있습니다. 촬영 권한, 찍힌 이미지의 품질, 업로드 상태, 실패 처리까지 실제 사용 환경에서 생기는 흐름을 고려해 구현하고 유지보수했습니다. 사용자층이 넓어 화면 문구는 여러 언어로 정리했고, 결제 · 인증 · 오류 메시지처럼 뜻이 정확해야 하는 문구는 언어마다 어긋나지 않는지 화면 흐름과 함께 확인했습니다.

앱 오류를 모아 원인부터 고친, 비정상 종료 거의 0의 운영
운영 중인 모바일 결제 앱의 오류는 오류 수집 도구로 모아 지켜보고, 원인을 추적해 빠르게 고쳤습니다. 운영 기간 동안 앱이 비정상 종료되는 비율을 거의 0에 가깝게 유지했습니다. 같은 기반 위에서 돌던 다른 결제 앱과 함께 운영하며, 원격으로 이슈를 공유하고 수정 범위를 정리했습니다.

이 작업의 포인트
기존 동작을 지키며 옛 코드를 새 구조로 옮긴 전환
결제 요청 · 인증 · 실패 · 재시도까지 이어지는 결제 흐름 유지보수
앱 오류를 모아 고쳐 비정상 종료를 거의 0에 가깝게 유지한 운영
인사이트
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…



