Redis 캐시 도입 경험
실시간 랭킹 기능을 개발하며 매번 DB에서 정렬 쿼리를 실행하니 응답 시간이 평균 300밀리초가 걸렸습니다. Redis의 Sorted Set을 활용해 랭킹 데이터를 캐싱하니 응답 시간이 15밀리초로 줄었습니다. 다만 DB와 캐시 간 데이터 불일치가 걱정돼, 점수 변경 시마다 캐시를 함께 갱신하는 방식으로 정합성을 맞췄습니다.
면접관이 이 한 문장으로 확인하려는 것들. 각 갈래를 알면 답의 뼈대가 잡혀요.
실시간 랭킹 기능을 개발하며 매번 DB에서 정렬 쿼리를 실행하니 응답 시간이 평균 300밀리초가 걸렸습니다. Redis의 Sorted Set을 활용해 랭킹 데이터를 캐싱하니 응답 시간이 15밀리초로 줄었습니다. 다만 DB와 캐시 간 데이터 불일치가 걱정돼, 점수 변경 시마다 캐시를 함께 갱신하는 방식으로 정합성을 맞췄습니다.
주문 처리 시스템 프로젝트에서 주문 생성 후 알림 발송, 재고 차감을 동기로 처리하니 응답이 느려지는 문제가 있었습니다. Kafka를 도입해 주문 생성 이벤트를 발행하고 알림·재고 서비스가 각각 구독해 비동기로 처리하도록 바꿨습니다. 이 과정에서 메시지 처리 실패 시 재시도 로직을 넣지 않으면 이벤트가 유실될 수 있다는 걸 알게 돼 재시도와 DLQ 개념을 학습해 적용했습니다.
서버 두 대로 로드밸런싱을 실습하며 세션이 서버마다 따로 관리돼 로그인이 유지되지 않는 문제를 겪었습니다. Redis를 세션 저장소로 두고 두 서버가 공유하도록 구성해 문제를 해결했습니다. 처음엔 Redis 서버가 다운되면 전체 로그인이 막힌다는 점이 걱정돼, TTL을 짧게 설정하고 재로그인 흐름을 자연스럽게 만드는 방식으로 보완했습니다.
같은 실수가 반복돼요. 이것만 피해도 절반은 갑니다.
진짜 면접은 두 번째 질문부터예요. 이 답 뒤에 따라올 법한 것들.