처음 MSA 프로젝트를 진행하면서 인프라 설계도를 구상했는데 쉽지 않았지만 또 새로운 부분이라 재밌기도 했다.
인프라 설계도

- 내가 속한 조는 인증/인가 부분을 고려하여 Redis 를 공용으로 사용했다.
하지만 캐싱과 데이터를 Redis 에 모두 적용하면 과부하가 걸린다고 생각해서 내가 잘 사용하는 Caffeine Cache 를 적용하여 "하이브리드 캐싱 전략"을 사용했다.
- 우리가 사용한 하이브리드 캐싱 전략의 이유 중 하나는 Redis 의 과부하를 막기 위함이라 고려하고 하이브리드 캐싱 전략에 대해 조금 더 알아보았다.
MSA 환경에서의 캐싱의 중요성
- MSA 는 각 서비스가 독립적으로 운영되므로, 데이터 접근 시 네트워크 지연이 발생할 수 있다.
이러한 문제를 해결하기 위해 캐싱이 필수적인 요소가 된다.
캐싱을 통해 자주 사용되는 데이터를 메모리에 저장하여 데이터 접근 속도를 향상시키고, 시스템의 응답 시간을 단축화할 수 있다.
공용 Redis 사용의 장점과 단점
장점
자원 효율성
- 여러 서비스가 하나의 Redis 인스턴스를 공유함으로써 자원 사용량을 최적화할 수 있다.
데이터 일관성
- 여러 서비스가 동일한 캐시 데이터를 사용하므로 데이터 일관성을 유지하기 쉽다.
단점
과부하 문제
- 특정 서비스의 과도한 캐시 접근으로 인해 다른 서비스의 성능 저하를 유발할 수 있다.
단일 실패 지점
- Redis 인스턴스에 장애가 발생하면 전체 시스템에 영향을 미칠 수 있다.
하이브리드 캐싱 전략 (Caffeine Cache)
- 각 서비스에 로컬 캐시인 Caffeine 캐시를 적용하여 다음과 같은 효과를 얻을 수 있다.
Redis 과부하 방지
- 각 서비스는 로컬 캐시를 먼저 사용하여 Redis 접근 횟수를 줄임으로써 과부하를 방지합니다.
캐시 동기화
- Redis 와 Caffeine 캐시 간의 데이터 동기화를 유지하기 위해 적절한 전략 (ex. Write-Through, Write-Behind)을 선택합니다.
모니터링 및 로깅
- 캐시 성능을 모니터링하고 로그를 분석하여 최적의 캐시 설정을 유지합니다.
결론
- 위 내용으로 인해 하이브리드 캐싱 전략을 이용하여 공용 Redis 과부하를 줄일 수 있었고, 시스템의 성능과 가용성을 향상시킬 수 있었다.
아쉬운 점
- 하지만 어떤 데이터가 많이 조회되고 많이 사용되는지 파악 후 캐시를 적용하지 않아서 다음 적용 시에는 이 부분을 측정하여 알맞는 캐시의 설정들을 해보고싶다.