Skip to content

f-lab-edu/commerce-platform

Repository files navigation

PG개발 경험을 기반으로 복잡한 코드를 개선하기 위한 아키텍처를 고민하고,
경험하고 싶었던 것들을 시도하는 프로젝트 입니다.


🧞‍♂️ 경험하고자 하는 것

  • 코어서비스와 파트너사 연동에서 느슨한 결합과 확장성을 위한 아키텍처 적용
  • MSA 서비스간 효율적인 통신
  • 대용량 트래픽 핸들링
  • 중복요청 제어, 동시성처리로 안정된 결제경험 제공

✅ 완료한 것

  • Hexagonal 아키텍처로 코어/파트너사 코드간 결합도 낮추기
    • domain, infrastructure 영역을 분리하고, 의존성 방향이 외부 → 내부가 되록하여 느슨한 결합유지.
  • 다양한 결제사, 결제 연동의 코드 관리를 위한 구조 개선 (분기 지옥 방지)
    • 전략패턴으로 domain은 결제요청할 pg서비스로 동적 라우팅.
    • pg서비스에서 결제건의 카드/간편/휴대폰/가상계좌 결제유형에 따라 해당pg의 결제서비스를 호출.
    • 각pg사 연동코드는 전문기반으로 프로세스를 추상화하여 관리.
  • gRPC 내부 통신 최적화
    • 오버헤드가 큰 json 직렬화 대신 gRPC 적용.
    • 비동기 통신으로 처리량 증가.
  • 모놀리식 -> MSA 전환하기
    • buildSrc Convention Plugin으로 설정 중앙관리.

📋 진행 중인 것

  • kafka 도입
    • 현재 멀티모듈구조로 물리적으로 분리되어있지만, 여전히 대상 도메인을 호출해야한다는 의도가 남아있다. (결합도가 느슨해지진 않음)
    • 물리적인 의존성을 제거하기 위해 kafka 도입 결정.
    • 개념적 의존성을 제거하기 위한 이벤트 발행 : 달성 목적이 아닌 도메인 이벤트 그 자체를 이벤트로 한다.
    • 트래픽이 몰리는 경우, kafka를 큐로 사용하여 서버가 수용 가능한 만큼 처리하도록 한다.
  • 동시성 제어 & 중복 제어
    • Redis 단일 인스턴스가 한계에 도달한다면?

About

커머스 플랫폼. 쿠폰 선착순 발급 및 PG라우팅

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages