Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

대규모 캐싱(Caching at Scale) 입문서로 알아보는 캐싱의 모든 것

Lee Atchison은 34년 이상 SaaS 애플리케이션을 설계하고 구축해 온 베테랑으로, 애플리케이션 현대화, 클라우드 마이그레이션, DevOps 전환 분야에서 공인된 전문가이자 사상가입니다. 그는 세 권의 저서와 70여 편의 기사, 수백 회의 강연 및 세미나를 통해 자신의 노하우를 공유하고 있습니다.

여러분과 팀이 개발한 애플리케이션이 드디어 사람들의 주목을 받기 시작했습니다. 입소문이 퍼지면서 인기가 급상승하지만, 그와 동시에 운영 비용은 치솟고 앱은 끊임없이 다운되며, 결국 고객 중 한 명은 상상도 하지 못한 일을 벌입니다—바로 '속도가 너무 느리다'고 트윗을 올리는 것입니다.

고객층이 성장함에 따라 어떻게 비용 상승을 막을 수 있을까요? 스케일링이라는 도전은 환영하지만, 더 높은 장애 발생률과 증가하는 유지 보수 비용을 감수하면서까지 성장을 희생할 수는 없습니다.

한 가지는 확실합니다. 바로 애플리케이션 캐시가 필요하다는 것입니다.

캐시란 무엇인가?

"캐시란 원본 데이터 소스보다 더 빠르고 효율적으로 접근할 수 있는 데이터 저장 컴포넌트다."

Lee Atchison, Caching at Scale With Redis

데이터 조회 요청이 들어오면 캐시는 해당 데이터의 복사본을 실시간으로 제공합니다. 고객이 늘어날수록, 주요 데이터 저장소와 반복적으로 통신하지 않고도 증가하는 데이터 요청을 처리할 수 있는 고급 애플리케이션 아키텍처가 필수가 됩니다.

Lee는 이를 매우 간결하게 요약합니다. "현대적인 세상에는 현대적인 애플리케이션이 필요합니다."

고객들이 점점 더 나은 성능을 요구한다는 것은 두말할 나위 없는 사실입니다. 애플리케이션이 고객의 기대에 미치지 못하면 고객은 떠나 경쟁사로 향하게 됩니다.

그리고 빠르고 사용하기 쉬운 모든 애플리케이션 뒤에는 수많은 움직이는 부품들이 있습니다. Lee의 말처럼, "오늘날의 애플리케이션은 대량의 데이터를 처리하고, 복잡한 연산을 수행하고, 데이터 요소 간의 수많은 관계를 유지하며, 트랜잭션 간의 서로 다른 이질적인 상태에서 작동할 수 있어야 합니다."

복잡한 애플리케이션에서는 골치 아픈 문제가 생기기 마련인데, 캐시는 바로 이러한 문제를 최소화하기 위해 존재합니다.

<Caching at Scale With Redis> 읽기

『Caching at Scale With Redis』에서 Lee는 캐싱이 무엇인지, 왜 그리고 언제 필요한지, 그리고 애플리케이션이 최고의 성능을 달성하도록 돕는 캐싱 방법론을 소개합니다.

대규모 캐싱(Caching at Scale) 입문서로 알아보는 캐싱의 모든 것

사용자가 서비스에 데이터를 요청하면, 시스템은 저장소에서 해당 데이터를 가져온 뒤 이를 소비자에게 전달하는 작업을 수행합니다. 그러나 Lee는 이러한 작업이 특히 동일한 데이터를 반복해서 조회할 때 상당한 리소스와 시간을 소모한다고 지적합니다.

"대신 캐시를 사용하면, 복잡한 연산이 처음 수행될 때 그 결과가 소비자에게 반환되고 결과의 복사본이 캐시에 저장됩니다. 다음에 해당 데이터가 필요할 때는 복잡한 연산을 다시 수행하는 대신, 캐시에서 결과를 직접 가져와 더 빠르고 적은 리소스로 소비자에게 반환할 수 있습니다."

캐싱이 해결하는 문제—그러나 완벽하지 않은 이유

캐싱은 만능 데이터 저장 솔루션이 아닙니다. 애플리케이션 아키텍처는 앱의 규모나 산업별 사용 사례에 따라 천차만별입니다. 하지만 Lee에 따르면 캐싱은 다음 네 가지 주요 영역의 개선에 도움을 줍니다.

  • 성능 (Performance)
  • 확장성 (Scaling)
  • 리소스 최적화 (Resource optimization)
  • 편의성 및 가용성 (Convenience and availability)

물론 이것이 캐시를 구현하면 자동으로 이런 혜택을 얻게 된다는 의미는 아닙니다.

"많은 경우 캐싱은 가치를 더하지 못할 수 있으며, 드물지만 일부 경우에는 오히려 성능을 저하시킬 수 있습니다."라고 Lee는 말하며 세 가지 잠재적 문제를 제시합니다.

  1. 캐싱은 애플리케이션이 대상 작업의 의도된 부수 효과(side effect)를 실행하지 못하게 할 수 있습니다.
  2. 캐시 내 데이터 불일치 문제
  3. 낮은 캐시 성능

Lee는 캐시가 유용하려면 특정 조건들이 충족되어야 한다고 언급합니다(전자책 8페이지의 규칙 목록 참조). "캐시가 효과적이려면 애플리케이션 또는 데이터 소스의 데이터 접근에 대한 통계적 분포를 깊이 이해해야 합니다."라고 Lee는 강조합니다.

궁극의 캐싱 플레이북으로 준비하세요

이제 캐시가 필요하다는 것을 알았으니, 이 무료 전자책은 Redis로 캐시를 구축하고 확장하는 데 필요한 단 하나의 입문서입니다.

Lee 본인의 말을 인용하면 다음과 같습니다. "이 책은 캐싱이 무엇인지, 왜 효과적인 대규모 현대 애플리케이션의 초석인지, 그리고 Redis가 어떻게 이러한 까다로운 캐싱 요구 사항을 충족하도록 도울 수 있는지 설명합니다."

전자책을 더 깊이 살펴보면, 『Caching at Scale With Redis』는 다양한 캐싱 전략 유형을 다루고, 특히 클라우드 환경에서 이러한 전략이 여러분에게 어떻게 적합할 수 있는지에 대한 실질적인 설명을 제공합니다.

"애플리케이션이 대규모 환경에서 높은 가용성을 유지하도록 만드는 방법, 프로세스, 기술은 다양하지만, 거의 모든 방법에서 캐싱은 핵심 기술입니다."라고 Lee는 말합니다.

전자책에 대한 자세한 정보는 공식 페이지를 방문해 확인하세요.