팁 (조언)
이 콘텐츠는 eBook, Architecting Cloud Native .NET Applications for Azure에서 발췌한 것으로, .NET Docs 또는 오프라인에서 읽을 수 있는 다운로드 가능한 무료 PDF로 제공됩니다.
캐싱의 이점은 잘 이해됩니다. 이 기술은 백 엔드 데이터 저장소에서 애플리케이션에 가까운 빠른 스토리지 로 자주 액세스하는 데이터를 일시적으로 복사하여 작동합니다. 캐싱은 다음 위치에서 구현되는 경우가 많습니다.
- 데이터는 상대적으로 정적으로 유지됩니다.
- 특히 캐시 속도에 비해 데이터 액세스 속도가 느립니다.
- 데이터는 높은 수준의 경합을 받습니다.
이유는 무엇입니까?
Microsoft 캐싱 지침에 설명된 대로 캐싱은 개별 마이크로 서비스 및 시스템 전체에 대한 성능, 확장성 및 가용성을 높일 수 있습니다. 데이터 저장소에 대한 대량의 동시 요청을 처리하는 대기 시간 및 경합을 줄입니다. 데이터 볼륨과 사용자 수가 증가함에 따라 캐싱의 이점이 커집니다.
캐싱은 클라이언트가 변경할 수 없거나 자주 변경되지 않는 데이터를 반복적으로 읽을 때 가장 효과적입니다. 제품 및 가격 정보와 같은 참조 정보 또는 생성 비용이 많이 드는 공유 정적 리소스를 예로 들 수 있습니다.
마이크로 서비스는 상태 비저장이어야 하지만, 분산 캐시는 절대적으로 필요한 경우 세션 상태 데이터에 대한 동시 액세스를 지원할 수 있습니다.
또한 반복적인 계산을 방지하기 위해 캐싱을 고려합니다. 작업이 데이터를 변환하거나 복잡한 계산을 수행하는 경우 후속 요청에 대한 결과를 캐시합니다.
캐싱 아키텍처
클라우드 네이티브 애플리케이션은 일반적으로 분산 캐싱 아키텍처를 구현합니다. 캐시는 마이크로 서비스와는 별도로 클라우드 기반 지원 서비스로 호스트됩니다. 그림 5-15는 아키텍처를 보여줍니다.
그림 5-15: 클라우드 네이티브 앱에서 캐싱
이전 그림에서 캐시가 마이크로 서비스에서 독립적이고 공유되는 방식을 확인합니다. 이 시나리오에서 캐시는 API 게이트웨이에 의해 호출됩니다. 4장에서 설명한 대로 게이트웨이는 들어오는 모든 요청에 대한 프런트 엔드 역할을 합니다. 분산 캐시는 가능하면 캐시된 데이터를 반환하여 시스템 응답성을 높입니다. 또한 캐시를 서비스에서 분리하면 증가된 트래픽 요구를 충족하기 위해 캐시를 독립적으로 확장하거나 분산하여 운영할 수 있습니다.
이전 그림에서는 캐시 배제 패턴이라고 하는 일반적인 캐싱 패턴을 제공합니다. 들어오는 요청의 경우 먼저 캐시(1단계)에서 응답을 쿼리합니다. 발견되면 데이터가 즉시 반환됩니다. 캐시에 데이터가 없는 경우( 캐시 누락이라고 함) 다운스트림 서비스의 로컬 데이터베이스에서 검색됩니다(2단계). 그런 다음 이후 요청(3단계)을 위해 캐시에 기록되고 호출자에게 반환됩니다. 시스템이 적시에 일관성을 유지하도록 캐시된 데이터를 주기적으로 제거하려면 주의해야 합니다.
공유 캐시가 증가함에 따라 여러 노드에서 데이터를 분할하는 것이 유용할 수 있습니다. 이렇게 하면 경합을 최소화하고 확장성을 향상시킬 수 있습니다. 많은 캐싱 서비스는 노드를 동적으로 추가 및 제거하고 파티션 간에 데이터를 다시 분산하는 기능을 지원합니다. 이 접근 방식에는 일반적으로 클러스터링이 포함됩니다. 클러스터링에서는 페더레이션된 노드의 컬렉션을 원활한 단일 캐시로 노출합니다. 그러나 내부적으로 데이터는 부하를 균등하게 분산하는 미리 정의된 배포 전략에 따라 노드 간에 분산됩니다.
Azure Cache for Redis (아주어 캐시 포 레디스)
Azure Cache for Redis 는 Microsoft에서 완전히 관리하는 보안 데이터 캐싱 및 메시징 브로커 서비스입니다. PaaS(Platform as a Service) 제품으로 사용되는 이 제품은 높은 처리량과 짧은 대기 시간 액세스를 데이터에 제공합니다. 이 서비스는 Azure 내부 또는 외부의 모든 애플리케이션에서 액세스할 수 있습니다.
Azure Cache for Redis 서비스는 Azure 데이터 센터에서 호스트되는 오픈 소스 Redis 서버에 대한 액세스를 관리합니다. 이 서비스는 관리, 액세스 제어 및 보안을 제공하는 외관 역할을 합니다. 서비스는 기본적으로 문자열, 해시, 목록 및 집합을 비롯한 다양한 데이터 구조 집합을 지원합니다. 애플리케이션이 이미 Redis를 사용하는 경우, Azure Cache for Redis as-is에서 작동합니다.
Azure Cache for Redis는 단순한 캐시 서버 이상입니다. 마이크로 서비스 아키텍처를 향상시키기 위한 다양한 시나리오를 지원할 수 있습니다.
- 메모리 내 데이터 저장소
- 분산된 비관계형 데이터베이스
- 메시지 브로커
- 구성 또는 검색 서버
고급 시나리오의 경우 캐시된 데이터의 복사본을 디스크에 유지할 수 있습니다. 치명적인 이벤트가 주 캐시와 복제본 캐시를 모두 사용하지 않도록 설정하면 캐시가 최신 스냅샷에서 다시 생성됩니다.
Azure Redis Cache는 미리 정의된 여러 구성 및 가격 책정 계층에서 사용할 수 있습니다. 프리미엄 계층에는 클러스터링, 데이터 지속성, 지역 복제 및 가상 네트워크 격리와 같은 많은 엔터프라이즈 수준 기능이 있습니다.
.NET