Skip to content
@ErumPay

ErumPay

💳 ErumPay

ErumPay



결제하는 순간, 가장 유리한 카드를 알려주는 간편결제 플랫폼

🏆 LG CNS AM Inspire Camp 4기 최종 프로젝트 대상 (1위)

2026.04 – 2026.06 · 8인 팀 · 백엔드 마이크로서비스 13종 + 클라이언트 3종 · AWS EKS


👩🏻‍💻 프로젝트 소개

"저희는 결제 직전의 3초를 바꾸고 싶습니다."

여러 장의 카드를 보유하고 있어도 결제 순간 어떤 카드가 가장 유리한지 판단하기는 쉽지 않습니다.
하지만 ErumPay는 결제 데이터를 기반으로 카드 혜택과 실적 조건을 분석하여 최적의 결제 방식을 추천합니다.
ErumPay는 결제 시점의 데이터를 실시간 분석해 최적의 카드 조합을 자동 추천하고, 분할결제·더치페이·원격결제로 혜택을 놓치는 순간 자체를 없애는 금융 결제 플랫폼입니다. 앱 → PG → 카드사로 이어지는 실제 결제 흐름을 카드사 단계(시뮬레이터)까지 직접 구현했습니다.


✨ 주요 기능

🤖 지능형 카드 추천

결제 요청 시 가맹점 MCC · 결제 금액 · 보유 카드 혜택 · 전월 실적을 분석해 4가지 전략(혜택 단일 / 혜택 분할 / 실적 단일 / 실적 분할)의 최적 조합을 계산합니다. 금액 계산은 룰 기반 추천 엔진이 수행하고, AI(OpenAI API)는 사용자의 소비 패턴 요약을 바탕으로 4가지 전략 중 대표 추천 1개를 고르는 Selector로만 활용합니다.

➗ 분할결제

하나의 결제 금액을 여러 카드에 나눠 카드별 혜택 한도·실적 조건을 최대로 활용합니다(할부 아님). PG가 결제 그룹(Group ID)을 생성해 카드별 승인을 순차 처리하고, 일부 승인 실패 시 전체 취소하는 원자성 보장 구조로 설계했습니다. 전표를 임의 분할하지 않고 PG가 하나의 주문 안에서 전체 흐름을 통제합니다.

🤝 더치페이

대표자가 전체 금액을 Auth-Only 가승인으로 보증 → 참여자들이 각자 추천받은 카드로 개별 결제 → 전원 완료 시 가승인 Void(한도 홀드 해제). 한 사람이 몰아서 결제하던 기존 방식과 달리, 참여자 전원이 자기 카드 혜택을 챙깁니다. 진행 상황은 SSE + Redis Pub/Sub으로 전원에게 실시간 공유됩니다.

👥 원격결제

결제 요청자와 승인자를 분리해, 보호자가 떨어진 곳에서 자녀의 온라인 결제를 대신 승인하는 시나리오를 지원합니다. 요청 생성(DRAFT) → 대상 지정 → 수락/수행 → 완료·만료(기본 30분) 배치까지 전체 라이프사이클을 상태 기계로 관리합니다.


🏛️ 시스템 아키텍처

flowchart TB
    subgraph CLIENT["클라이언트"]
        direction LR
        APP["📱 Pay App<br/>React Native"]
        MWEB["🏪 가맹점 웹"]
        AWEB["🖥️ PG 어드민 웹"]
    end

    GW["API Gateway<br/>JWT 인증 · 라우팅 · API Key(HMAC) 검증"]

    subgraph PAY["PAY Server"]
        direction TB
        PAYMENT["payment-service<br/>결제 · 더치페이 · 원격 · QR"]
        AUTH["auth-service<br/>OAuth · JWT · PIN · 친구"]
        CARD["card-service<br/>카드 등록 · 혜택"]
        RECO["recommendation-service<br/>4전략 계산 + AI Selector"]
        NOTI["notification-service<br/>FCM 알림"]
        OCR["card-ocr-service<br/>카드 이미지 OCR"]
    end

    subgraph PG["PG Server"]
        direction TB
        PGPAY["pg-payment-service<br/>승인 · 취소 · Auth-only · Void"]
        BILLING["billing-key-service<br/>빌링키 발급"]
        MERCHANT["merchant-service<br/>가맹점 관리 · 심사"]
        PGAUTH["pg-auth-service<br/>PG 관리자 인증"]
    end

    SIM["🏦 card-simulator-service<br/>카드사 시뮬레이터"]
    DATA[("MySQL · Database per Service 10개 논리 DB<br/>Redis · S3")]
    EXT["Kakao OAuth · SMS 인증 · Firebase FCM"]

    CLIENT --> GW
    GW --> PAYMENT
    GW -. "SSE + Redis Pub/Sub (실시간 진행 상황)" .-> CLIENT
    PAYMENT -- "OpenFeign (동기)" --> AUTH & CARD & RECO
    PAYMENT -- "OpenFeign (승인 요청)" --> PGPAY
    PAYMENT -. "Kafka (비동기 이벤트)" .-> NOTI & RECO
    PGPAY --> SIM
    NOTI --> EXT
    PAY --- DATA
    PG --- DATA
Loading
  • 동기/비동기 분리 — 즉시 응답이 필요한 호출은 OpenFeign, 결과를 기다릴 필요 없는 이벤트는 Kafka(payment.event, dutch.event, recommend.command/event 등 토픽 7종)
  • 실시간 브로드캐스트 — SSE 구독 + Redis Pub/Sub으로 다중 파드 환경에서도 결제·더치페이·원격결제 진행 상황을 전 구독자에게 전파

🏛️ 인프라 아키텍처

--8 drawio

⚙️ 인프라 · DevOps

develop/main push → Jenkins ── Gradle Build · Test ── Docker Build ── ECR Push
                       │
                       └── infra 레포 Helm values 이미지 태그 커밋 (커밋 해시 기반)
                                          │
                              ArgoCD가 Git 변경 감지 → EKS 자동 Sync
  • IaC — Terraform으로 VPC · EKS(용도별 노드그룹 4종) · RDS · ECR(리포지토리 14종) · Security Group 프로비저닝. Jenkins CI 서버는 GCP VM에서 호스팅
  • GitOps — 서비스 전체를 공용 Helm 차트 + ArgoCD Application으로 선언적 관리, :latest 캐싱 문제를 커밋 해시 태깅으로 원천 차단
  • 관측성 — Grafana(RED 메트릭) · Zipkin(분산 트레이싱) · EFK(traceId 기준 로그 추적) · ArgoCD(배포 상태)
  • 카오스 엔지니어링 — LitmusChaos로 파드 삭제 · 메모리 부하 · 네트워크 지연 · 네트워크 로스 4종 실험을 수행해 장애 전파·복구를 사전 검증.

🛠️ 기술 스택

Frontend & Mobile

Frontend

Backend

Backend

AI/OCR

AI

Infra & DevOps

Infra

Helm Argo CD External Secrets

Monitoring

Monitoring

Zipkin LitmusChaos

분류 기술
Backend Java 21 · Spring Boot 3.5.14 · Spring Cloud Gateway · Spring Security · Spring Data JPA · OpenFeign · springdoc(Swagger)
Data / Messaging MySQL(Database per Service) · Redis(Cache · Pub/Sub) · Apache Kafka(+ Schema Registry)
Mobile / Web React Native · Expo · React · TypeScript · Tailwind CSS · Firebase Cloud Messaging
AI / OCR Python · FastAPI · PaddleOCR · OpenAI API(추천 Selector)
Cloud AWS — EKS · EC2 · RDS · ECR · ALB · S3 · Route53 · ACM · VPC · IAM · WAF · CloudFront  ·  GCP — VM Instance(Jenkins CI 서버)
DevOps Terraform · Docker · Helm · Argo CD · Jenkins(+ GitHub Webhook) · External Secrets Operator + AWS Secrets Manager
Observability Prometheus · Grafana · Zipkin · EFK(Elasticsearch · Fluent Bit · Kibana) · LitmusChaos

🗄️ ERD

ERD 요약

DB 주요 테이블
auth_db auth_users, friend_relations
card_db card_registered, card_benefit
recommend_db recommend_mcc_mapping, recommend_results
payment_db payment_orders, payemnt_events, payment_remote_requests, dutch_pay_sessions
pg_payment_db pg_payment_group, pg_payment_ledger
pg_auth_db pg_admin_accounts, pd_admin_audit_logs
pg_merchant_db pg_settlements, pg_merchants
notification_db notifications, notification_preferences
simulator_db simulator_card, simulator_card_token
pg_billing_db pg_billing_keys
v3 (1)
ERD

📦 레포지토리 구성

레포지토리 설명 메인 담당
api-gateway BFF + JWT 인증 + SSE + 라우팅 하지혁
auth-service 회원 인증 및 인가 서비스 고민균
card-service 사용자 카드 등록 및 관리 이준혁
recommendation-service 결제 상황에 가장 적합한 카드를 추천 이준혁
card-ocr-service 카드 이미지 OCR 처리 이준혁
payment-service 결제 도메인의 핵심 오케스트레이션 담당 김다윤, 나영은
notification-service Kafka 이벤트 기반 알림 서비스 은종혁
pg-payment-service PG 결제 처리 및 원장 관리 은종혁
pg-auth-service PG 관리자 인증 나혜빈
pg-merchant-service 가맹점 정보 관리 조보름
billing-key-service 정기결제 및 간편결제를 위한 빌링키 발급 하지혁
card-simulator-service 테스트용 카드사 서비스 하지혁
mobile-app React Native 기반 사용자 모바일 애플리케이션 조보름, 나혜빈
web React 기반 가맹점 / PG 관리자 웹 애플리케이션 조보름, 나혜빈
sdk 외부 가맹점 연동을 위한 SDK 나영은
mcp-server AI Agent와 ErumPay 서비스 연동을 위한 MCP 서버 나영은
infra AWS 기반 클라우드 인프라 구축 및 GitOps 기반 CI/CD 운영 환경 관리 나영은, 은종혁

🤝 협업 방식

  • 브랜치 전략: Git Flow (main · develop · feature) — main 머지 시에만 배포
  • 작업 관리: Jira 티켓 기반 개발 + Git 연동 (이슈 키 기반 브랜치/커밋/PR 자동 추적) · Notion 문서화
  • 코드 품질: CodeRabbit AI 코드 리뷰 · 커밋 컨벤션(feat/fix/refactor) 통일
  • 개발 표준화: MSA 에러 응답 표준화(status · error · code · reason · message) · API/Kafka 명세서 컨벤션 · MSA 온보딩 가이드 문서
  • 통합 테스트: 각자 Dockerfile로 이미지를 만들어 Docker Compose 컨테이너 통신 검증 후 EKS 배포 — OS(맥/윈도우) 환경 차이 문제 사전 차단

👥 팀원

이름 GitHub 담당
고민균 @alsrbs915-jpg BE, FE
김다윤 @kdayun BE, FE
나영은 @Yeongeunn BE, Infra (팀장)
나혜빈 @nahyebin BE, FE
이준혁 @LeeJuneHyuck BE, FE
은종혁 @0chotona BE, Infra
조보름 @choboreum BE, FE
하지혁 @hajihyeok BE

📑 발표 자료

Popular repositories Loading

  1. payment-service payment-service Public

    Java

  2. recommendation-service recommendation-service Public

    Java

  3. card-service card-service Public

    Java

  4. auth-service auth-service Public

    Java

  5. notification-service notification-service Public

    Java

  6. pg-payment-service pg-payment-service Public

    Java

Repositories

Showing 10 of 18 repositories

Top languages

Loading…

Most used topics

Loading…