캐시를 적용하기 까지의 험난한 길 (TPS 1만 안정적으로 서비스하기)
428
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

TPS 1만 이상 약관 서버의 캐시 적용 사례

이 게시물은 토스뱅크 약관 서버에 TPS가 급증하면서 발생한 DB 부하 문제를 해결하기 위해 캐시를 적용한 과정을 설명합니다.

문제 정의 및 접근

  • 약관 동의 여부는 Strong Consistency가 필수적인 개인정보 관련 데이터
  • Replication DB는 복제 지연 문제로 사용하지 않고 Redis Cache를 활용
  • Look-aside 캐시 전략과 Spring 트랜잭션 이벤트를 이용해 캐시 만료를 DB 커밋 후 처리

문제 해결과 개선

  • 캐시 만료 실패 시 Circuit Breaker로 자동 오픈하여 DB 조회로 대체하는 방어 전략 적용
  • Kafka 이벤트와 캐시 만료 처리 순서 문제를 트랜잭션 동기화와 @Order로 해결
  • 정책적으로 API 응답 시점과 캐시 만료 시점을 맞추어 데이터 불일치 문제 최소화

배운 점과 결론

  • 코드보다 정책으로 문제를 단순하게 해결하는 중요성
  • 완벽보다는 실행에 집중하며 모니터링과 개선을 지속하는 자세
  • 현재는 최대 2만 TPS를 안정적으로 처리하며 향후 더 효율적 트래픽 관리를 위한 추가 기술도 검토 중

연관 게시글