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
You can’t perform that action at this time.