본문 바로가기

MySQL2

[고성능 선착순 쿠폰 발급 시스템] #3. synchronized의 배신과 비관적 락(Pessimistic Lock) 적용 1. JMeter을 활용한 부하 테스트지난 포스팅에서 기본적인 쿠폰 발급 로직을 구현했고 curl을 이용해 단일 요청(Single Thread) 환경에서 테스트했을 때는 정상 작동을 확인했지만, 접속자가 늘어났을 때는 어떻게 작동하는지 확인할 필요가 있다고 느꼈습니다. 우선 제 서버가 얼마나 연약한지 확인해보기 위해 JMeter을 활용해서 테스트를 진행해보려 합니다.시나리오: 쿠폰은 딱 100장.공격: 100명의 유저가 동시에 발급 요청을 보낸다.기대 결과: 재고는 0이 되고, 발급 내역은 정확히 100개여야 한다.부하 테스트를 위해 Apache Jmeter 공식 사이트에 접속해서 Binaries 항목에 apache-jmeter-5.6.3.zip(윈도우 기준)을 다운로드 했습니다.편한 위치에 압축 해제 .. 2026. 1. 9.
[고성능 선착순 쿠폰 발급 시스템] #2. 프로젝트 세팅 및 기본 발급 로직 구현 1. 패키지 구조: 유지보수를 위한 계층형 구조그동안 공부할 때는 기능을 구현하기만 급급하여, 한 패키지에 모든 클래스를 몰아넣곤 했습니다.이번 프로젝트는 유지보수와 확장성을 고려하여 스프링의 표준적인 계층력 구조를 선택했습니다. vanilalatte.couponsystem 이라는 패키지 경로 하위에 아래와 같이 역할을 분리했습니다.- 패키지 구조controller: 외부 요청을 받는 창구 (Web Layer)service: 비즈니스 로직을 수행하는 핵심 (Service Layer)repository: DB에 접근하는 역할 (Data Access Layer)domain: 핵심 도메인 객체 (Entity)dto: 계층 간 데이터 교환을 담당하는 객체현재는 간단한 예제라 사용하지 않았지만, 추후 응답 데이터.. 2026. 1. 7.