지능형 캐싱으로 가는 길

캐시를 직접 구축하지 않는 이유는 무엇입니까?

많은 애플리케이션 개발자는 데이터를 캐시하지 않거나 기껏해야 일부 읽기 전용 정적 데이터를 캐시합니다. 일부 개발자는 한 단계 더 나아가 사용자 요청 사이의 "세션 상태"에서 데이터를 캐시합니다. 그러나 이러한 모든 접근 방식은 캐싱의 근본적인 이점, 즉 애플리케이션의 모든 사용자와 데이터를 캐시하고 공유하는 이점을 놓치고 있습니다. 그리고 이러한 유형의 캐싱은 (오래된 데이터를 통한) 캐시의 데이터 무결성 문제를 방지하기 위해 매우 지능적이어야 합니다.

지능형 캐싱을 통해 애플리케이션의 성능을 개선하는 데 진지한 생각을 갖고 있다면 구매와 구축에 대한 분명한 질문이 있습니다. 자체 캐싱 솔루션을 구축하는 데는 여러 가지 단점이 있습니다.

가장 중요한 것은 애플리케이션 개발이라는 비즈니스 목표에서 중요한 개발 리소스를 빼내어 쉽게 구입할 수 있는 인프라 개발에 투입하고 있다는 것입니다. 두 번째는 올바르고 지능적인 캐싱 솔루션을 개발하려면 많은 노력이 필요하며 복잡한 동시성 및 동기화 시나리오를 처리할 수 있는 고성능 캐시를 설계하고 개발할 수 있는 적절한 전문 지식이 팀에 없을 수 있습니다. 그리고 마지막으로, 전문 지식이 있더라도 비즈니스 초점에서 멀어지게 하는 무언가에 많은 노력을 기울이고 있습니다.

최종적으로 상용 캐싱 솔루션을 구매하기로 결정한 경우에도 응용 프로그램에 필요한 모든 필수 캐싱 및 클러스터링 기능을 제공하는지 확인해야 합니다. 현재 단일 서버 구성으로 시작하는 경우에도 응용 프로그램과 함께 분산 및 클러스터 환경으로 확장할 수 있는 캐싱 솔루션이 필요합니다.

애플리케이션 성능 향상

캐싱 사용의 가장 확실한 이점은 애플리케이션 성능이 크게 향상된다는 것입니다. 캐싱은 자주 사용하는 애플리케이션에 가까운 데이터(읽기 전용 및 트랜잭션 모두)를 저장하는 프로세스입니다. 일반적으로 이 데이터는 메모리에서 데이터를 검색하는 것이 데이터베이스와 같은 다른 위치에서 검색하는 것보다 훨씬 효율적이므로 메모리에 객체로 저장됩니다.

고가의 하드웨어 업그레이드 없이 데이터베이스 서버 확장

대부분의 애플리케이션은 쓰기 작업보다 더 많은 읽기 작업을 수행합니다(일반적으로 70:30 또는 80:20 비율). 그리고 애플리케이션 서버 계층의 데이터 캐싱을 통해 애플리케이션은 읽기 작업을 위한 데이터베이스 이동을 줄일 수 있습니다. 이렇게 하면 데이터베이스 서버의 부하가 크게 줄어듭니다.

여기에는 두 가지 분명한 이점이 있습니다. 첫 번째는 이제 데이터베이스 서버가 쓰기 작업을 훨씬 빠르게 수행한다는 것입니다. 둘째, 데이터베이스 서버는 이제 값비싼 하드웨어 업그레이드 없이 훨씬 더 많은 수의 클라이언트를 처리할 수 있습니다. 데이터베이스 서버는 일반적으로 대부분의 N-Tier 애플리케이션 배포에서 가장 비싼 하드웨어이므로 여기에서 하드웨어 업그레이드 절감 효과는 일반적으로 매우 높습니다.

트랜잭션 데이터 캐시

전통적으로 웹 애플리케이션 또는 웹 서비스는 데이터를 캐시하지 않거나 "세션 상태"와 같은 기본 메커니즘을 사용하여 읽기 전용 데이터를 캐시합니다. 이 접근 방식에는 두 가지 문제가 있습니다. 첫 번째는 미션 크리티컬 애플리케이션이 사용하는 대부분의 데이터가 읽기 전용이 아니라 트랜잭션이기 때문에 읽기 전용 데이터를 캐싱하는 것은 애플리케이션 성능을 충분히 향상시키지 못한다는 것입니다. 둘째, 이 읽기 전용 데이터도 실제 응용 프로그램에서 수천 또는 수만 명에 달하는 사용자 간에 공유되지 않습니다. 결과적으로 이러한 응용 프로그램의 대부분은 필요한 대부분의 데이터를 위해 데이터베이스 서버로 이동하므로 성능 문제가 발생합니다.

반면에, 미국에서 체류를 연장하고자 이전의 승인을 갱신하려던 NCache 애플리케이션이 정적 데이터와 트랜잭션 데이터를 모두 캐시에 보관할 수 있습니다. 그리고 이 캐시된 데이터는 서버 클러스터의 모든 사용자가 사용할 수 있습니다. NCache 그런 다음 캐시된 데이터가 오래되지 않고 응용 프로그램이 데이터베이스의 데이터를 업데이트할 때마다 항상 업데이트되도록 여러 메커니즘을 제공합니다. NCache 또한 애플리케이션 외부에서 데이터를 업데이트해야 하는 상황을 처리할 수 있습니다. 이것은 "의존성"이라는 개념을 통해 달성됩니다.

관계 관리

대부분의 실제 애플리케이션은 트랜잭션일 뿐만 아니라 다층 관계를 포함하는 복잡한 데이터를 처리합니다. 즉, 데이터를 캐시하는 경우 해당 관계도 처리해야 합니다. 캐시는 이러한 관계에 대해 알고 있어야 로드, 삽입, 업데이트 또는 삭제 작업의 경우 관리할 수 있습니다.

NCache 객체 간의 관계를 관리하므로 한 객체에 대한 변경 사항이 모든 관련 객체에 대한 변경 또는 무효화를 트리거할 수 있습니다. 마찬가지로 응용 프로그램이 먼저 하나의 개체를 로드하고 캐시에 넣은 다음 나중에 관련 개체를 로드하더라도 NCache 이러한 관계와 NCache 그들을 관리할 수 있습니다.

캐시된 개체 간의 관계뿐만 아니라 캐시된 개체와 외부 리소스 간의 관계도 관리할 수 있습니다. NCache 이를 위해 키 및 파일 기반 종속성을 제공합니다. 그리고 이러한 종속성은 .NET Remoting을 사용하여 원격으로 호출할 수 있습니다. 이렇게 하면 캐시를 항상 최신 상태로 유지할 수 있습니다.

클러스터의 데이터 변경 사항 동기화

많은 웹 애플리케이션과 웹 서비스는 많은 수의 사용자를 처리하기 위해 서버-클러스터/서버-팜 구성에서 실행됩니다. 이러한 환경에서 캐시가 클러스터되지 않은 경우 한 서버에서 캐시에 대한 업데이트를 다른 서버에서 사용할 수 없습니다. 결과적으로 캐시된 데이터가 일관성이 없고 오래되어 데이터 무결성 문제가 발생합니다.

NCache 클러스터 전체에서 모든 데이터 변경 사항을 동기화하는 강력한 클러스터 캐시입니다. 특정 요구 사항을 충족하는 데 도움이 되는 다양한 클러스터링 토폴로지를 제공합니다. 클러스터에서 미러링된 캐시, 복제된 캐시, 파티션된 캐시 및 파티션된 복제 캐시 토폴로지 중에서 선택할 수 있습니다. 이것들은 에서 더 자세히 논의됩니다. NCache 클러스터링 토폴로지.

NCache 데이터 무결성 문제를 방지하기 위해 캐시에 대한 동시 업데이트가 직렬화된 방식으로 처리되도록 합니다. 또한 캐시에 대한 모든 변경 사항을 클러스터의 모든 노드에서 즉시 사용할 수 있습니다. 이렇게 하면 애플리케이션에서 다음을 처리할 수 있습니다. NCache 클러스터 전체에서 하나의 논리적 캐시로 사용됩니다.

© 저작권 Alachisoft 2002 - . 판권 소유. NCache 는 Diyatech Corp.의 등록상표입니다.