
결제 시스템은 특히 정합성이 중요한 영역입니다.
동시에 여러 사용자가 같은 객실에 대한 예약 및 예약 건에 대해 결제를 시도할 경우, 데이터 충돌이 발생할 수 있습니다.
이를 해결하기 위해 동시성 제어를 진행했습니다.
동시성 문제 해결 과정을 정리하려고 합니다.
테스트 툴로는 JMeter를 사용하였습니다.
JMeter를 통해 CSV파일을 읽어 40명의 사용자가 동시에 예약 요청을 시도하는 환경을 구성하였으며,
각 사용자는 로그인 후 서로 다른 인증 토큰을 이용해 API에 접근하도록 설정하였습니다.
동시성 제어를 위해 4가지 방법을 생각해보았습니다
위와 같은 이유로 Redisson을 이용해 구현하는 것이 좋은 방법이라 판단하였고,
추후 다른 기능에서도 사용할 수 있도록 하며, 서비스 로직과 분리하기 위해 커스텀 어노테이션 기반으로 구현하였습니다.
PortOne V2 기반 결제 시스템 설계 및 검증 로직 개선기 - Workaway
분산락을 적용하지 않은 상태에서는 100명이 동시에 요청할 때 중복 결제 발생 가능성이 존재했습니다.
부하가 많은 환경에서는 데이터 무결성이 깨질 수 있는 구조였습니다.
분산락을 적용한 후, 40명이 동시에 예약 및 결제 검증을 요청했을 때, 단 1건의 요청만 성공하고 나머지 99건은 락 획득 실패로 안전하게 차단되었습니다.

이번 테스트를 통해 성능 최적화와 동시성 문제 해결이 서비스 품질에 미치는 영향을 체감할 수 있었습니다.
단순히 "빠른 응답"을 넘어서, 안정성과 신뢰성까지 잡을 수 있는 구조를 설계하는 것이 중요하다는 점을 다시금 느끼게 되었고, 앞으로도 계속해서 더 나은 아키텍처와 성능 개선을 고민하려 합니다.