inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

견고한 결제 시스템 구축

결제 승인 기능 구현

강의를 듣고 문득 궁금한 점이 생겼습니다.

469

GOLF

작성한 질문수 6

0

 

제 역량이 모자라 이해 못하는 부분이 있을 수 있어 배우고자 질문드립니다. 감사합니다!

spring spring-boot dbms/rdbms backend payments

답변 1

1

여정민

안녕하세요~ 질문 남겨주셔서 감사합니다.

궁금한 사항이 있으셨던 것 같은데 제 생각을 남겨볼게요.

 

1) 어니언 아키텍처가 아닌 핵사고날 아키텍처로 한 이유:

  • 저는 어니언 아키텍처와 핵사고날 아키텍처가 크게 다르다고 생각하지는 않아요. 핵사고날 아키텍처가 조금 더 복잡할 순 있겠지만 외부 시스템과의 입출력 상호작용을 파악하기 더 쉽다라고 생각하기 때문에 사용했습니다. 장단점을 판단해서 자신에게 맞는 아키텍처를 사용하면 될 것 같습니다.

 

2) Webflux 를 사용한 이유:

  • Spring Webflux 와 Spring MVC 를 비교했을 때 Webflux 가 좀 더 복잡한 프로그래밍을 요구하는 것 제외하고는 웬만해서는 MVC 보다 안정성 측면에서도 더 뛰어나다고 생각해요.

  • 현재의 시스템은 서비스들이 마이크로서비스처럼 대부분 쪼개져있고 필요할 때 외부 통신을 하는데요. Spring MVC 와 같은 Synchronous Client 를 사용하게 되면 외부 서비스들이 장애가 나거나 요청이 안왔을 때 리소스가 점유당하는 문제가 생길 수 있습니다. 그에 반해서 웹플럭스와 같은 Asynchronous Client 는 하나의 이벤트 루프에서 최대 500개 까지의 Active Channel 을 맺을 수 있기 때문에 외부 서버의 장애에 클라이언트를 보다 보호해줄 수 있는거죠.

  • 현재의 이 결제 시스템의 경우에는 외부 시스템과 상호작용하는 API 가 거의 없는데요. 카카오페이의 경우에는 수십개의 API 를 사용한다고도 합니다. 이 경우에는 Webflux 가 보다 안전할거에요.

 

도움이 되셨으면 좋겠습니다. 제 답변이 잘 와닿지 않는다면 다시 질문 주세요~

0

GOLF

이해 됐습니다. 감사해요 사용자 요청으로 부터 발생하는 트래픽을 높은 동시성으로 해결하겠다로 바라봤는데 오히려 외부 수십개의 API를 높은 동시성으로 해결하는 것이군요. 또 webflux가 제공해주는 library를 사용하는 것이 MVC에서 직접 문제를 해결하기위한 라이브러리를 만드는 것 보다 안정성이 뛰어나기 때문이고요!

0

여정민

넵넵 맞습니다~~ 필요하다면 언제든 질문 주세요!

프로그램 아키텍쳐

0

60

1

실습코드 압축해제

0

78

1

confirm 로직에서 amount를 검증하는 부분에서 질문이 있습니다.

0

53

1

Transaction Demo 질문 드립니다.

0

60

1

cdc 방식

0

83

1

seed 키 및 orderId 에 대한 질문

0

65

1

결제 이후 404 Error 발생

0

167

1

테스트 코드 중 isPaymentDone 변환

0

76

1

가상의 Checkout 기능 구현 중 질문

0

183

1

docker Mysql 설정 문의

0

106

1

allOpen 설정이 잘못된 거 같습니다.

0

115

1

recovery 동시성 처리 관련 문의

0

119

1

confluent > skip 이 더이상 안되나봅니다.

0

107

1

강의 클론 코딩한 것 public repo에 올려도 되나요?

0

330

1

멱등키에 request를 넘기는 것

0

257

1

동시성 제어 (optimistic locking) 재시도 부분 질문 드립니다.

0

173

1

결제 복구의 세부 과정을 병렬로 처리한 이유가 궁금합니다

0

222

1

전체적인 헥사고날 아키텍쳐 설명

0

275

1

주문, 결제 로직에 대해서 질문이 있습니다.

0

281

1

주문 번호 생성 방식 관련 질문 있습니다

0

927

1

R2DBC 관련해서 질문 드립니다.

0

586

3

payment 상태 업데이트 변경 메서드를 3개나 두는 이유가 궁금합니다.

0

230

2

'더 견고해지기 위해 남은 작업' 수업자료

0

298

1

혹시 코드 리뷰 신청해도 될까요...?

0

310

1