Who Is You?

안녕하세요, 백엔드 엔지니어 이재빈입니다!😃 저는 디미페이 팀에서 2년 이상 백엔드 애플리케이션을 개발하고 있고, CPM QR 코드를 이용한 현장 결제 시스템을 유지보수하며 약 16만 건의 결제와 3.1억원 이상의 거래 금액을 다뤄 본 경험이 있습니다.
엔터프라이즈 애플리케이션을 개발하는 방법을 공부하고 있고, 대규모 시스템을 안정적으로 사용자에게 제공하는 방법에 관심이 많습니다.
새로운 기술이나 작은 기능 이라도 대안을 충분히 비교하고, 그 과정을 수치를 통해 확인하여 최종 결정을 내리는 것을 항상 목표로 합니다. 👀
Career
디미페이
2022년 9월 ~ 현재
백엔드
PM
TypeScript
Nest.js
Node.js
Bun
aws
PG
https://github.com/dimipay
Overview
디미페이는 한국디지털미디어고등학교의 교내 무인 매점 결제 시스템입니다.
학생들은 디미페이 앱에서 카드를 등록하고 QR 코드를 통해 결제 하거나, 네이버 페이스사인을 이용하여 휴대폰이 없더라도 키오스크에서 얼굴 인식으로 결제 할 수 있습니다.
저는 백엔드 엔지니어로 활동하면서 앱, 키오스크, 어드민 백엔드를 개발 및 유지하고 있고있습니다. 2023년 부턴 PM 역을 맡아 팀과 프로젝트를 이끌며 두 번의 신규 팀원 모집, 디미페이 v2 출시, 오프라인 토큰, 이용 환경 설문조사 및 연말 이벤트 등을 성공적으로 지휘한 경험이 있습니다.
디미페이 백엔드 개발
- TypeScript & Node.js & express.js & Prisma 기반의 백엔드 애플리케이션 개발
- CPM QR 코드를 이용한 현장 결제 서버 개발
- 키오스크 및 어드민 백엔드 개발
- 네이버 페이스사인 API 연동
- 결제 대행(PG) API 연동 및 빌링키 생명주기 관리
- Redis pub/sub과 SSE로 클라이언트에게 결제 상태 스트리밍
- 즉흥적으로 개발하던 코드베이스에서 누적된 기술 부채를 해결하고 유지와 확장이 쉬운 백엔드 만들기 위해 1년 간의 리펙터링 프로젝트 진행
- 도메인 주도 설계를 기초로하는 Nest.js 백엔드 애플리케이션 작성
- 결과적 정합성을 필요로 하는 곳에 (푸시 알림, ERP 판매 저장 등) 도메인 이벤트를 적용
- 시스템 오류와 특정 관심사를 모니터링하는 디스코드 봇을 만들어 사용
- K8S 클러스터 구성 및 gitops 패턴으로 CD 환경 구성
- 인터넷 이용이 어려운 학생이 적지 않다는 점을 배경으로 인터넷이 없더라도 안전한 일회용 결제 토큰을 만드는 방법을 직접 개발
- TOTP의 카운터 개념, UUIDv7, HKDF, XChaCha20-Poly1305를 사용
- Time-step window와 NTP 서버 동기화를 통해 시간 오차에 대한 이슈 해결
- 앱은 오프라인 모드를 지원할 수 있게 됐고, 결제 토큰 생성 및 재발급 시간도 훨씬 빨라짐 (시연 영상)
- 간편 결제 서비스 EMV QR 보안 검토
- 오프라인 토큰을 개발하면서 작은 QR 코드에 더 많은 바이너리 값을 저장하는 방법을 찾게 됨
- QR 코드에서 지원하는 인코딩 방법을 비교해 base45를 사용하면 같은 크기의 QR 코드에서 base64보다 약 22%p이상 (94바이트) 더 저장할 수 있다는 것을 알게 됨
- 실제 오프라인 토큰을 base64로 저장하면 QR 버전은 7이지만, base45를 사용하여 버전 5의 QR을 사용할 수 있음
ERP API의 요청 제한을 처리 하기위해 BullMQ로 글로벌 동시성 관리
- 엔드포인트별 요청 제한(초/분당 요청 횟수)을 준수하고자 요청 페이로드를 BullMQ 대기열에 저장하여 글로벌 동시성 관리
- API 응답의 신뢰성을 보장하기 위하여 각 응답 본문에 대한 스키마를 정의하여 검증
- 판매 기록을 배치로 저장시 실패 건 추적과 재시도가 까다롭다는 점을 해결하고자 비동기 저장 전략 사용
Contests
Scape
2023년 K-PaaS 활용 디지털 사회혁신 서비스
🏅 은상 수상
백엔드
디자인
NCP
Nest.js
Python
가상신원 생성 및 관리 솔루션으로, 가상 이메일 생성 및 수신과 가상 이름, 비밀번호, 주소 등의 생성 기능을 가지고 있습니다.
- PaaS-Ta on NCloud 환경에서 Nest.js 백엔드 애플리케이션 개발
- MySQL과 Drizzle ORM 사용
- Node.js 코어 서버와 Python 챗봇 서버를 분리하여 배포
- CloudFlare email forwarding으로 가상 이메일 구현
BackUP
2022년 PaaS-Ta 기반 서비스 개발 및 아이디어 공모전
🏅 은상 수상
백엔드
디자인
NCP
express.js
RabbitMQ