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

인프라 설계도

  • 내가 속한 조는 인증/인가 부분을 고려하여 Redis 를 공용으로 사용했다.
    하지만 캐싱과 데이터를 Redis 에 모두 적용하면 과부하가 걸린다고 생각해서 내가 잘 사용하는 Caffeine Cache 를 적용하여 "하이브리드 캐싱 전략"을 사용했다.
  • 우리가 사용한 하이브리드 캐싱 전략의 이유 중 하나는 Redis 의 과부하를 막기 위함이라 고려하고 하이브리드 캐싱 전략에 대해 조금 더 알아보았다.

MSA 환경에서의 캐싱의 중요성

  • MSA 는 각 서비스가 독립적으로 운영되므로, 데이터 접근 시 네트워크 지연이 발생할 수 있다.
    이러한 문제를 해결하기 위해 캐싱이 필수적인 요소가 된다.
    캐싱을 통해 자주 사용되는 데이터를 메모리에 저장하여 데이터 접근 속도를 향상시키고, 시스템의 응답 시간을 단축화할 수 있다.

공용 Redis 사용의 장점과 단점

장점

자원 효율성

  • 여러 서비스가 하나의 Redis 인스턴스를 공유함으로써 자원 사용량을 최적화할 수 있다.

데이터 일관성

  • 여러 서비스가 동일한 캐시 데이터를 사용하므로 데이터 일관성을 유지하기 쉽다.

단점

과부하 문제

  • 특정 서비스의 과도한 캐시 접근으로 인해 다른 서비스의 성능 저하를 유발할 수 있다.

단일 실패 지점

  • Redis 인스턴스에 장애가 발생하면 전체 시스템에 영향을 미칠 수 있다.

하이브리드 캐싱 전략 (Caffeine Cache)

  • 각 서비스에 로컬 캐시인 Caffeine 캐시를 적용하여 다음과 같은 효과를 얻을 수 있다.

Redis 과부하 방지

  • 각 서비스는 로컬 캐시를 먼저 사용하여 Redis 접근 횟수를 줄임으로써 과부하를 방지합니다.

캐시 동기화

  • Redis 와 Caffeine 캐시 간의 데이터 동기화를 유지하기 위해 적절한 전략 (ex. Write-Through, Write-Behind)을 선택합니다.

모니터링 및 로깅

  • 캐시 성능을 모니터링하고 로그를 분석하여 최적의 캐시 설정을 유지합니다.

결론

  • 위 내용으로 인해 하이브리드 캐싱 전략을 이용하여 공용 Redis 과부하를 줄일 수 있었고, 시스템의 성능과 가용성을 향상시킬 수 있었다.

아쉬운 점

  • 하지만 어떤 데이터가 많이 조회되고 많이 사용되는지 파악 후 캐시를 적용하지 않아서 다음 적용 시에는 이 부분을 측정하여 알맞는 캐시의 설정들을 해보고싶다.
profile
Junior Backend Developer

0개의 댓글

Powered by GraphCDN, the GraphQL CDN