inflearn logo
강의

Course

Instructor

Complete Guide to Microservices Design Patterns

pg사가 있다고 가정하면

24

goyangee

26 asked

0

 안녕하세요.

강의를 보고 있는 개발자입니다.


질문이 있어 문의드립니다.


만약 pg사 연동이 들어간다고 가정하면 어떤 식으로 사가를 구성해야할까요?

주문서버, 결제서버, 재고서버가 있다고 가정하면


대략적인 결제 흐름이 대부분 아래와 같을텐데

  1. 장바구니에서 구매하기 누르면 주문서페이지로 감

  2. 주문서 페이지에서 쿠폰 등을 선택하고 결제하기를 누르면 pg결제창이 뜸

  3. pg결제를 하면 결제 승인 api를 서버가 호출


아래와 같이 해도 되나요.

  1. 장바구니에서 구매하기 누르면 주문서버에 주문서를 생성

  2. 주문서페이지에서 결제하기 누르면 주문서를 검증하고 임시결제 생성 및 pg사 url 생성 (주문서버 -> 결제서버 -> pg사 동기식으로 호출 해야할 거 같음)

  3. pg결제가 승인되면 결제서버의 결제 승인 api 호출 (임시결제를 결제완결상태로 만들고 pg사의 승인 api 호출)

  4. 결제 완료되면 결제 완료 이벤트 발행하여 재고 줄인다.



    제가 생각하기에 pg사 결제 url 만드는 2번이 주문서버 -> 결제서버 동기식으로 호출하는게 맞는게 아닌가 싶어서 저렇게 했는데 혹시나 비동기로 할수 있는 방법이 있을까요?


아니면 제가 생각한 방식말고 다른 방식이 있을까요?

강의에서는 pg사 관련된 내용이 안나와 궁금하여 질문드립니다.

java spring-cloud 디자인-패턴 msa patterns

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

김재연님께서 마이크로서비스 아키텍처에서 PG사 연동을 구성하는 방법에 대해 문의해주셨습니다. 제공해주신 결제 흐름 및 아키텍처는 전형적인 결제 시스템의 동작이라 할 수 있습니다. 아래 내용은 귀하의 질문에 대한 제안입니다.

  1. 동기 vs 비동기 호출: 주문서버에서 결제서버로 PG사의 URL을 생성하는 과정에서 동기 호출을 사용하는 것이 일반적입니다. 동기 호출은 결제 요청 완료 후 즉시 응답을 기다리므로 처리 결과를 바로 확인할 수 있습니다. 그러나, 비동기 호출을 사용하여 더 나은 확장성과 성능을 제공할 수도 있습니다. 예를 들어, 주문서버에서 결제 요청을 메시지 큐에 넣고, 결제서버가 이를 비동기로 처리하여 결과를 이벤트로 발행할 수 있습니다.

  2. 비동기 처리를 위한 방법: 비동기 방식으로 결제 프로세스를 처리하고자 한다면, 메시징 시스템(예: Kafka, RabbitMQ 등)을 사용할 수 있습니다. 이렇게 하면 결제서버는 주문서버로부터 비동기 메시지를 받고 처리하게 됩니다. 결제 승인 후에는 이벤트를 발행하여 다른 서비스(예: 재고 서버)가 이를 구독하고 적절히 반응할 수 있습니다.

  3. 다른 고려 사항: 현재의 흐름에서 추가로 고려할 사항은 데이터를 일관성 있게 유지하기 위한 방법입니다. 예를 들어, SAGA 패턴을 사용하여 트랜잭션 간의 일관성을 유지하거나, 이벤트 소싱을 도입하여 상태 변화와 이벤트를 기록할 수 있습니다.

이러한 방식을 통해 진행하시면 확장 가능하고 유지보수하기 용이한 시스템을 구축하실 수 있을 것입니다. 프로토타입으로 구현 후 부하 테스트 등을 통해 최적의 아키텍처를 찾아보시는 것을 추천드립니다. 추가적인 설명이 필요한 경우, 구체적인 샘플 코드나 가이드를 검토해 보시길 바랍니다. 더 많은 정보는 Spring Boot 문서에서도 찾으실 수 있습니다.

도움이 되셨길 바랍니다. 감사합니다.

안녕하세요 치킨 디도스 이벤트 보고 흉내내보려 들어왔습니다..

0

7

1

47번 리턴 관련 질문

0

15

1

실무 내용 문의드려요

0

21

2

IO활용-회원관리예제1 샘플코드 문의

0

14

1

join에대해 질문드립니다.

0

18

1

중급 1편 학습 방향에 대해 조언 부탁드립니다

0

32

1

To-Do App

0

27

1

강의노트 접속 불가

0

26

2

Kafka Cluster 구성도 질문

0

22

1

26년 1회차 기출 강의

0

50

2

기출문제

0

55

1

정보처리기사 실기 zip

0

44

2

답을언제쯤받아볼수있나요

0

49

2

읽기 모델을 조회 최적화하여 성능 향상 하는 방법

0

88

2

Orders에 테이블의 용도

0

76

2

MSA 아키텍쳐 프로젝트 구성 방식

0

110

2

마이크로서비스와 모듈러 아키텍처 선택 질문

0

80

2

섹션 2 - 12강 강의 제목 관련 질문있습니다.

0

75

1

실습 환경 구축에 대한 질문

0

75

2

k8s 를 고려한 개발은 어떻게 진행하나요?

0

103

2

gPRC 와 서비스 디스커버리에 대해 질문드립니다.

0

101

2

일부 강의가 재생이 되지 않습니다

0

133

2

https://github.com/joneconsulting/eshop 소스

0

167

2

강의 pdf교재는 별도로 없나요?

0

162

1