비즈니스 흐름 구조화
결제·주문·인증처럼 상태와 예외가 많은 흐름을 코드·데이터·메시징 구조로 정리합니다.
Backend · AI Product · 6 Years
김양훈 · Backend / AI Product Engineer
결제·금융·인증·IoT·제조 서비스를 6년간 개발·운영하며 쌓은 문제 해결 경험을 AI Agent, 업무 자동화와 글로벌 콘텐츠 제품으로 확장하고 있습니다.
결제·금융·인증처럼 한 번의 상태 오류가 고객 신뢰와 운영 비용으로 이어지는 서비스를 6년간 개발했습니다. 현재는 누적 유저 210만, MAU 30만 규모의 모바일 기프티콘 플랫폼에서 주문·결제·환불·정산·상품권·CMS와 외부 제휴를 개발하고 운영합니다. 이전에는 증권사 계좌 개설·매매, 생체인증 기반 출입·근태·결제와 스마트 공장 서비스를 경험했습니다.
저의 강점은 복잡한 비즈니스 흐름을 상태와 책임 단위로 나누고, 문제가 생겼을 때 확인하고 복구할 수 있는 구조로 만드는 것입니다. 외부 시스템마다 다른 상태와 예외는 서비스 경계에서 흡수하고, 결제·메시지·배치처럼 실패 지점이 나뉘는 기능은 추적과 재처리 기준까지 함께 설계합니다. 구현을 마친 뒤에도 운영 지표와 로그를 보며 병목과 반복 장애의 원인을 찾아 구조적으로 개선해 왔습니다.
백엔드가 주력이지만 제품을 완성하는 데 필요한 일이라면 역할을 한정하지 않았습니다. Android MVP를 혼자 개발하고, 생체인증 서버를 관리자 화면과 IoT 장치까지 연결했으며, 최근에는 월간 리워드 랭킹을 기획부터 화면·측정·배포까지 맡았습니다. 익숙하지 않은 영역을 다른 사람에게 넘기기보다 필요한 수준까지 직접 이해하고 연결하는 편입니다.
Claude Code와 Codex는 코드베이스 탐색, 변경 영향도 분석, 구현 초안과 테스트 보강에 활용합니다. AI로 만든 결과는 그대로 반영하지 않고 상태 전이, 트랜잭션 경계와 예외 조건을 직접 검토합니다. 반복되는 분석·구현·문서 검색은 AI로 줄이고, 서비스 구조와 품질에 대한 판단에는 더 많은 시간을 쓰는 방식으로 일하고 있습니다.
Strengths
기능 구현을 넘어 상태, 책임, 관측과 복구 기준을 함께 설계하고 제품을 실제 사용자 흐름까지 연결합니다.
결제·주문·인증처럼 상태와 예외가 많은 흐름을 코드·데이터·메시징 구조로 정리합니다.
Outbox, 큐, 멱등성, 상태 전이 기준으로 유실과 중복 처리의 운영 위험을 줄입니다.
문제 정의와 기획부터 화면·API·측정·실험·배포까지 하나의 출시 단위로 연결합니다.
AI로 탐색과 구현을 가속하되 CI, 동료 리뷰, 평가와 권한 경계를 품질 기준으로 둡니다.
Experience
각 성과를 문제의 배경, 제가 수행한 내용, 확인 가능한 결과로 나누어 정리했습니다.
누적 유저 210만, MAU 30만 규모의 서비스에서 주문·결제·환불·정산·상품권·CMS와 외부 제휴를 개발하고 운영합니다.
판매 사고 가능성이 높은 사용자도 일반 판매자와 같은 기준으로 거래할 수 있어 고액권과 C2C 거래에서 회사의 손실 노출이 커지고 있었습니다.
판매등급별 한도, 판매차감예정금액, 고액권·C2C 제한, 임시한도 심사와 정책 예외를 모델링했습니다. 판매신청·판매확정·자동 구매확정마다 상태와 한도를 다시 검증하고 신규 백엔드·레거시·CMS에 같은 정책을 적용했습니다.
월 500만 원대였던 트러블 비용을 월 100만 원대로 줄였습니다.
결제 상태 변경과 SQS 발행이 분리돼 메시지 발행에 실패하면 결제는 완료됐지만 어떤 상품권을 다시 발송해야 하는지 찾기 어려웠습니다.
결제·상품 상태와 Outbox record를 같은 트랜잭션에 저장하는 Transactional Outbox 구조를 제안·설계했습니다. 공통 relay 구현을 맡은 동료를 멘토링하고 리뷰했으며, 판매콘 상태 동기화 등 실제 도메인 이관에는 직접 적용했습니다.
결제 이후 발송 대상을 DB 기준으로 확인하고 실패 지점부터 재처리할 수 있는 복구 흐름을 만들었습니다.
특정 시간대마다 writer RDS CPU가 80% 이상으로 올라가 라이브 API 응답에 영향을 줄 위험이 있었습니다.
Performance Insights의 Top SQL과 Kubernetes Job 실행 이력을 같은 시간대에 비교해 상품권 만료·재고·정산 배치가 집중되는 구간을 찾았습니다. 실행 시간, chunk size, concurrency와 인덱스를 조정했습니다.
writer RDS CPU 피크를 80% 이상에서 40~60%대로 낮췄습니다.
뱅크샐러드 사용자가 NCNC 앱 밖에서 상품을 조회하고 구매한 뒤 보유 상품권과 환불 상태까지 확인할 수 있는 별도 거래 흐름이 필요했습니다.
제휴 TF를 리드해 API Key 인증과 전용 사용자 분리부터 상품·재고·검색·장바구니·주문·결제·취소·환불 API를 설계하고 구현했습니다. Redis, private CDN, NICE 결제 키와 Kubernetes 배포 설정까지 함께 구성했습니다.
인증부터 결제·환불까지 독립적으로 동작하는 신규 제휴 채널을 출시하고 오픈 이후 운영 대응 체계를 마련했습니다.
주문·결제·상품권·CMS와 cron·consumer가 여러 Express 저장소에 흩어져 모델 변경의 영향 범위를 확인하기 어려웠습니다.
기존 API 응답과 배포 단위를 확인한 뒤 NestJS·Turborepo로 도메인별 점진 이관을 진행했습니다. 내콘함·판매콘·사용자 API와 리워드·요청 정리 배치를 신규 서버로 옮기고 Native 호출과 Kubernetes CronJob을 함께 전환했습니다.
기존 앱 계약을 유지한 채 신규 서버로 트래픽과 배치를 전환하고, 운영 검증이 끝난 레거시 크론을 중지했습니다.
리워드 이벤트가 일회성 참여로 끝나지 않도록 반복 참여와 재방문을 유도하고 효과를 확인할 수 있는 장치가 필요했습니다.
Claude Code와 Codex로 기존 적립 데이터와 화면 구조를 분석하고 집계 규칙과 예외를 정의했습니다. NestJS API·월간 집계 cron·CMS·Next.js 화면·Amplitude 이벤트와 실험 variant를 구현하고 Kubernetes에 배포했습니다.
기획, 화면, API, 집계, 운영 설정과 측정을 하나의 출시 단위로 완성하고 Amplitude 기반 A/B 테스트가 가능한 상태로 만들었습니다.
기존 제휴몰은 일반 상품 중심으로 구성돼 C2C 상품의 재고, 구매 권한, 카드·니콘머니 결제와 환불 정책을 그대로 적용할 수 없었습니다.
일반·C2C 상품의 통합 최저가와 옵션 결정, 주문 단계 권한·재고 검증, NICE 카드결제와 니콘머니 결제, 구매취소·부분환불을 연결했습니다. 결제 후 내부 주문 생성에 실패하면 니콘머니를 복구하고 중복 승인·콜백 경쟁을 막는 보상 로직을 적용했습니다.
제휴몰에서 C2C 상품을 조회한 사용자가 주문·결제·보유 상품권 확인·취소·환불까지 완료할 수 있는 전 거래 흐름을 출시했습니다.
별도 자동화 서버에서 주문 처리, 재고·품절 동기화, 클레임과 지연 주문 취소가 실행돼 장애 범위와 중복 실행을 통제하기 어려웠습니다.
5개 작업을 NestJS 프로그램으로 이관하고 FOR UPDATE SKIP LOCKED와 MySQL leader election으로 작업 소유권을 제어했습니다. 외부 API에는 초당 2건 제한, 429 응답의 3·6·12초 백오프와 인증 만료 시 토큰 갱신을 적용했습니다.
다중 파드에서도 같은 주문을 중복 처리하지 않으면서 주문·재고·클레임 작업을 하나의 운영 프로그램에서 추적할 수 있게 했습니다.
장기 미연락 판매자를 자동 등록하는 배치가 판매자마다 트러블과 상태를 반복 조회해 처리 대상이 늘수록 쿼리 수도 함께 증가했습니다.
판매자별 조회를 집합 쿼리로 바꾸고 신규 판매자를 1,000건 단위로 bulk insert했습니다. 자동 탐지부터 담당자 일괄 배정, 처리 상태·이력과 TheCheat 사기주의정보 등록·해제를 CMS에 연결했습니다.
배치 쿼리를 6N에서 6회로 줄이고 장기 미연락 판매자의 탐지부터 해제까지 운영자가 한 화면에서 처리할 수 있게 했습니다.
회계감사와 재고 확인을 위해 수천만 건의 상품권 거래 데이터를 날짜·상품별로 반복 집계해야 했습니다.
3,500만 건 이상 cons 데이터를 약 60만 건의 일별 상품 통계로 집계하고 조회용 snapshot DB와 저장용 운영 DB를 분리했습니다. 1,000건 단위 chunk와 idempotent UPSERT를 적용하고 CMS 페이지네이션·합계·엑셀 다운로드를 구현했습니다.
대용량 집계를 재실행 가능한 배치로 운영하고 회계 담당자가 일별 재고를 CMS에서 조회·다운로드할 수 있게 했습니다.
네이버 가격비교에 상품을 노출하려면 내부 상품·재고·할인 정책을 네이버 EP 규격에 맞춰 정기적으로 제공해야 했습니다.
전체 EP와 요약 EP 생성 cron을 개발하고 상품 노출, 가격, 할인율과 C2C 포함 정책을 공통화했습니다. 파일 저장과 배포 인프라, CMS 조회와 웹 유입 파라미터까지 연결했습니다.
상품 피드 생성과 갱신을 자동화해 네이버 가격비교를 신규 판매 채널로 운영할 수 있게 했습니다.
아키텍처, API와 운영 절차가 여러 저장소와 문서에 흩어져 레거시 영향 범위와 장애 대응 방법을 찾는 데 시간이 들었습니다.
아키텍처·API·DB·인프라 문서를 Markdown vault로 정리하고 Slack Bot, Claude Code와 로컬 MCP를 연결했습니다.
팀이 문서와 운영 절차를 키워드·전문 검색으로 찾을 수 있는 검색 흐름을 만들었습니다.
탈중앙화 생체인증 기술을 활용한 무인 출입·근태·결제 시스템에서 백엔드 구조와 AWS 운영, 관리자 화면과 IoT 장치 연동을 맡았습니다.
여러 모바일 단말의 응답을 기다리는 구조는 사용자 증가에 따라 전달 대상과 네트워크 응답 의존성이 함께 커졌습니다.
근접 사용자 탐색과 실제 인증 검증 책임을 분리하고, 암호화된 인증 기준 데이터를 키오스크에 미리 준비해 장치 내부에서 비교하는 흐름을 제안·설계했습니다.
설계가 회사 등록 특허에 반영됐으며, 해당 제품은 CES 2024 혁신상과 CES 2025 최고혁신상을 수상했습니다.
하나의 생체인증 결과가 출입 제어, 근태 기록과 결제 처리까지 각 시스템의 상태로 정확하게 이어져야 했습니다.
NestJS 기반 사용자·키오스크 인증, 출입·근태·결제 API와 React 관리자를 개발했습니다. Firebase RTDB·MQTT로 서버·키오스크·IoT 상태를 동기화하고 ESP32 기반 스피드게이트와 도어락 통신을 구현했습니다.
사용자 화면, 서버, 키오스크와 현장 장치가 함께 동작하는 출입·근태·결제 흐름을 완성했습니다.
Stored Procedure에 비즈니스 로직이 집중돼 변경 영향도 파악과 개별 배포가 어려웠고 C·Java 외부 SDK 제약도 핵심 서버에 섞여 있었습니다.
비즈니스 로직을 NestJS 애플리케이션과 RDS로 옮기고 C·Java SDK는 별도 Spring Boot 연동 서버로 분리했습니다. 사용자·키오스크 서비스를 ECS/Fargate에 나누고 GitHub Actions·CodeDeploy 배포 흐름을 구축했습니다.
핵심 서버와 외부 모듈의 배포 책임을 분리하고 AWS 운영 비용을 약 40% 절감했습니다.
로그인, 생체인증, 결제, FCM과 외부 본인인증이 여러 시스템을 거쳐 장애가 발생한 단계를 한 곳에서 확인하기 어려웠습니다.
로그인·결제·transaction·오류·FCM·landmark·NICE 인증 이력을 MongoDB에 유형별로 저장하는 공통 로깅 모듈을 만들었습니다. AES 암호화 유틸과 NICE·UseB 외부 인증 모듈도 분리했습니다.
사용자의 인증과 거래가 실패한 단계를 로그 유형별로 조회하고 외부 연동 문제와 내부 오류를 구분할 수 있게 했습니다.
백엔드, 프론트엔드와 Windows 클라이언트가 함께 개발해 우선순위와 인터페이스 기준이 없으면 각 애플리케이션의 일정이 쉽게 어긋날 수 있었습니다.
6명의 일정과 우선순위를 조율하고 Jira 스프린트, 코드 리뷰, Git branch·commit 기준과 인터페이스 문서화를 운영했습니다.
서로 다른 애플리케이션의 개발·배포를 하나의 제품 일정으로 관리했습니다.
누적 다운로드 45만, 계좌 개설 4만 규모로 성장한 서비스의 초기 제품 검증부터 실서비스 운영까지 백엔드, Android MVP, 증권사 API 연동과 계좌 개설 이벤트를 담당했습니다.
증권사마다 응답 형식과 계좌·주문 상태, 실패 사유가 달랐습니다.
신한·NH·KB·삼성증권의 차이를 adapter 계층에서 흡수하고 내부 상태와 API 계약을 표준화했습니다.
앱에서는 증권사에 관계없이 같은 흐름으로 계좌 개설과 매매를 처리할 수 있게 했습니다.
외부 증권사 확인, 보상 지급과 알림이 한 요청에 묶이면 지연과 중복 지급 위험이 커졌습니다.
총 5회의 이벤트에서 참여 조건 검증, 계좌 상태 확인, 보상 지급과 알림을 SQS 기반 후속 처리로 분리했습니다.
외부 응답이 늦어도 계좌 개설 요청을 막지 않고 각 단계의 실패를 따로 확인할 수 있게 했습니다.
사용자가 보고 있지 않은 종목 데이터까지 전달돼 불필요한 전송과 서버 부하가 발생했습니다.
Socket.IO 채널을 종목 구독 단위로 나누고 Redis로 서버 간 데이터를 공유했습니다.
반응 속도를 30% 개선하고 서버 부하를 40% 이상 낮췄습니다.
초기 제품 검증을 위해 Android 앱이 필요했지만 별도 앱 개발 리소스가 부족했습니다.
계좌 개설, 종목 조회와 매매 화면을 Android(Java)로 구현하고 백엔드 API까지 연결했습니다.
Android MVP를 직접 출시해 전체 일정을 약 1개월 단축했습니다.
스마트 공장 모니터링 시스템에서 생산·재고·주문·품질 API, 실시간 설비 상태와 고객사별 외부 시스템 연동을 담당했습니다.
공장마다 설비와 공정 데이터의 형태가 달랐고 현장 담당자는 설비 상태와 생산 이력을 전화와 메신저로 확인했습니다.
공장별 공정 이력을 DynamoDB에 유연하게 저장하고 생산·재고·주문·품질 데이터를 공통 API 형태로 제공했습니다. WebSocket 기반 실시간 대시보드도 구현했습니다.
공장마다 다른 데이터를 같은 API로 조회하고 설비 상태를 실시간으로 확인할 수 있게 했습니다.
일정 시간 요청이 없던 Lambda의 첫 실행이 약 600ms까지 지연됐습니다.
EventBridge warm-up 트리거를 적용해 실행 환경이 주기적으로 유지되도록 구성했습니다.
초기 응답 시간을 약 600ms에서 100ms 수준으로 줄였습니다.
AI Portfolio
금융·결제·운영 시스템에서 익힌 권한, 근거, 감사, 재처리 원칙을 AI 제품에 적용한 대표 사례입니다.
Featured · Finance AI
신한투자증권 공식 공개문서만을 근거로 답하고 금융 정책, 문서 버전, 근거 충분성, 인용 검증을 통과한 답변만 반환하는 비공식 AI Agent를 풀스택으로 설계·개발했습니다.
Featured · Enterprise AI
운영 문서를 검색 가능한 지식 베이스로 만들고, 모델이 사용자 권한 안에서 문서 검색·런북 생성·사람 승인 요청 도구를 선택하는 오픈소스 AI Agent 플랫폼입니다.
Applied AI · Global Growth
가상 브랜드 설계부터 다국어 콘텐츠 제작, 채널 발행과 성과 측정까지 생성형 AI를 실제 사용자 접점에 연결한 미디어 운영 실험입니다.
Virtual Editor · SEO Media
영미권 K-beauty 검색 시장을 대상으로 가상 에디터 ‘Minji’의 배경·말투·콘텐츠 형식을 설계하고, 영문 콘텐츠와 이미지 제작, SEO 최적화, WordPress 발행과 Affiliate 연결까지 운영했습니다.
Short-form · Localization
글로벌 숏폼 소재를 일본 사용자에게 전달하기 위해 소재 선정, 일본어 현지화, 제목·자막·영상 제작과 YouTube 발행을 반복 가능한 AI 콘텐츠 흐름으로 운영했습니다.
중소 주차장 PMS와 발렛파킹 전용 보험을 결합한 모빌리티 플랫폼의 백엔드 전반을 담당했습니다.
직접 겪은 문제를 작은 도구와 공개 패키지로 분리해 해결했습니다.
Skills & Education
백엔드와 운영 인프라를 중심으로, 제품 완성에 필요한 프론트엔드와 AI 검색 영역까지 다룹니다.
TypeScript, Node.js, NestJS, Express, Spring Boot, Java, Python, FastAPI
MySQL, PostgreSQL, MongoDB, Redis, DynamoDB, OpenSearch
RAG, pgvector, Embedding, Hybrid Search, Reranking, MCP, Agent Runtime, OpenAI Responses API, Anthropic Tool Use, Codex
AWS SQS, AWS SNS, Socket.IO, MQTT, Firebase RTDB, Kubernetes CronJob
AWS, Kubernetes, EKS, ECS/Fargate, Lambda, Docker, Helm, Argo CD, GitHub Actions
Datadog, Grafana, CloudWatch, Amplitude, React, Next.js, Android Java
전자 회로, 제어공학, 로봇공학, 기계설계, CAD, CAM, 기계가공, 전자기기설계 및 제작, PLC 프로그래밍, C언어 프로그래밍
제품 구현 중심의 개발 교육 과정을 수료했습니다.