Side · 2024.10–2025.01
결과 저장이 느리고 숫자가 빠지던 문제
속도뿐 아니라, 요청 수와 저장된 값이 맞는지도 비교해 비동기 처리를 골랐습니다.
응답 단축 · 누락 없이 저장 · 랭킹도 개선
Spring BootRabbitMQRedisDockerAWS
상황
퀴즈 결과를 저장하는 요청이 한꺼번에 들어오면, 값이 빠지거나 어긋나는 경우가 있었습니다. 저장만 되면 된다는 수준이 아니라, 푼 문제 수 같은 누적 값이 맞는지가 중요했습니다.
한 일
- 비교: 값을 읽어 더해 저장 / DB에서 한 번에 계산 / 대기열로 차례로 반영
- 기준: 동시에 들어와도 빠짐없이 · 응답은 부담 없이 · 이후에도 키울 수 있을 것
- 부하 테스트로 응답·처리량·요청 수와 저장 수가 맞는지 확인
- 요청은 먼저 받아 두고, 뒤에서 차례로 반영하는 구조로 정리
결과
비동기 처리로 응답을 크게 줄였고, 요청 수와 저장·누적이 맞게 떨어지는 것을 확인한 뒤에 채택했습니다. 랭킹 조회도 약 6초에서 2초로 줄였고, 클라우드·컨테이너로 배포까지 직접 가져갔습니다.
기술 메모
- 비교: 객체연산 vs SQL 연산 vs RabbitMQ
- 검증: 요청 수 = DB 반영 수 (누락 0)
- 랭킹 ZSET · Docker/Nginx 무중단(포트 스위칭)