성능 최적화의 첫 번째 단계는 캐싱입니다. Spring의 Caffeine 같은 로컬 캐시는 메모리 접근 속도 면에서 최강의 성능을 자랑하지만, 분산 시스템(Scale-out)으로 확장되는 순간 시스템의 **'정합성 파편화'**라는 치명적인 비용을 발생시킵니다.
본 글에서는 데이터 엔지니어의 시각에서 로컬 캐시의 한계를 공학적으로 분석하고, Redis가 분산 환경의 'Single Source of Truth'로서 어떻게 시스템 신뢰성을 보장하는지 깊이 있게 다룹니다.
단일 서버 인스턴스에서는 문제가 없던 방식이 분산 아키텍처에서는 세 가지 심각한 엔지니어링 문제를 야기합니다.
서버마다 독립된 Heap 영역을 사용하기 때문에 발생하는 문제입니다. A 서버에서 업데이트된 '상품 재고'가 B 서버의 캐시에는 반영되지 않을 경우, 유저는 결제 시점에 '품절' 오류를 겪게 됩니다. 이는 단순한 속도 문제가 아니라 비즈니스 로직의 신뢰도 하락으로 직결됩니다.
동일한 데이터(예: 전역 공지사항, 공통 코드)가 10대의 서버 로컬 메모리에 각각 적재됩니다. 서버 대수가 늘어날수록 전체 인프라 차원에서의 **메모리 효율성(Memory Efficiency)**은 기하급수적으로 감소합니다.
로컬 캐시는 프로세스의 생명주기를 따릅니다. 배포 시 모든 서버가 순차적으로 재시작되면, 캐시가 비어있는 상태에서 트래픽을 맞이하게 됩니다. 이때 발생하는 Cache Cold Start 현상은 DB의 커넥션 풀을 순식간에 점유하여 전체 서비스 중단을 초래하는 'Thunderous Herd' 문제를 일으킵니다.
Redis는 단순히 '외부 캐시'가 아닙니다. 분산 환경의 문제를 해결하기 위해 설계된 중앙 집중형 인메모리 데이터 구조 저장소입니다.
모든 서버가 하나의 Redis 엔드포인트를 공유합니다. 데이터 수정 시 모든 서버가 즉시 변경된 값을 참조하므로 Strong Consistency(강한 일관성) 혹은 상황에 따른 **Eventual Consistency(최종 일관성)**를 일관되게 제어할 수 있습니다.
로컬 캐시와 달리 Redis는 데이터를 디스크에 기록하는 두 가지 메커니즘을 제공하여 휘발성 문제를 해결합니다.