Netcoins

암호화폐 거래소 · iOS, Android · 캐나다

Netcoins는 캐나다 암호화폐 거래소입니다. Speer의 클라이언트였고, 저는 React Native로 회원가입(온보딩)과 자산 이체 화면을 맡았습니다.

역할
회원가입·자산 이체 담당
기간
2021–2025
플랫폼
iOS, Android
기술 스택
React Native · TypeScript · Node.js · PostgreSQL · Redis
게시일
수정일
netcoins.com 홈페이지netcoins.com에 나온 Netcoins 앱 홈 화면. 포트폴리오 금액과 잔고가 보입니다.
거래소의 공식 웹사이트 netcoins.com입니다.

배경

회원가입은 새 사용자가 가장 먼저 보는 화면이고, 자산 이체는 실제로 돈이 움직이는 곳입니다.

제약 조건

실제 돈을 다루다 보니 재시도를 조심하게 됐습니다.

서버는 이체를 끝냈는데 응답이 휴대폰까지 돌아오지 못할 때가 있습니다. 앱은 그걸 알 수 없으니 같은 요청을 다시 보냅니다.

문제

기존 회원가입·이체 화면은 로딩 시간이 더 길었습니다.

멱등성 키가 없으면 서버는 재시도된 이체와 새 이체를 구분할 수 없습니다.

바꾼 점

두 화면 모두 새로 만들었습니다.

모든 이체 요청에 멱등성 키를 붙였습니다. 이미 처리한 키로 요청이 다시 들어오면, 서버는 돈을 다시 옮기지 않고 처음 결과를 돌려줍니다.

앱서버POST /transferIdempotency-Key응답 유실같은 키로 재시도같은 키라서 처음 결과를 반환
다이어그램같은 이체 요청이 두 번 전송된 경우입니다. 멱등성 키 덕분에 서버가 재시도를 알아봅니다.

결과

재시도가 일어나도 돈이 두 번 나가지 않습니다.

다시 만든 뒤 가입 수는 약 20~30% 늘고, 로딩 시간은 약 20~30% 줄었습니다.