[PlantiFy/v3] MSA 환경에서 결제 시스템 리팩토링 - 리팩토링 개요 / 구조 재설계와 정합성 문제 해결
·
💻/프로젝트
리팩토링 개요 및 상황(문제의 시작) 내부 결제 수단(Pay)를 먼저 구현하면서 Pay가 결제 요청의 진입점이자 오케스트레이터라고 판단-> Pay가 결제 요청 수신, 흐름 조율 담당 (발생한 의문) 그런데 Pay가 금전 원장 관리하면서 결제 확정까지 직접 수행하는 건 책임 분리에 맞지 않다고 판단-> 결제 성공 판단을 별도의 Payment 서비스로 분리 1) Pay를 도메인 기준으로 다시 분리해보니 기존 구조에서 PG + Pay 역할이 명확히 분리되지 않았음 2) 도메인 별로 분산 락 적용했지만, 락 기준이 요청 단위가 아닌 서비스 단위로 분산 -> 동일 자원에 대한 동시성 제어 일관 X= Pay, Transaction, Payment 각각에서 서로 다른 락 사용 -> 동일 유저의 결제 요청이라도 서로..