웹 애플리케이션은 많은 양의 데이터와 요청을 처리하기 때문에 성능 문제가 발생할 수 있습니다.
이를 해결하는 한 가지 방법은 캐싱 기술을 사용하는 것입니다.
캐싱은 이전에 처리한 데이터나 질의 결과를 저장했다가 다음 질의에 재사용함으로써 성능을 향상시키는 기술이다.
이 게시물은 서버 측 캐싱을 다룹니다.
클라이언트 쪽 캐싱이 아닌 서버에서 캐싱이 수행되는 기술입니다.
계층별 분류
웹 서버, 애플리케이션 서버 및 데이터베이스를 포함한 여러 계층에 적용할 수 있습니다.
웹 서버 캐시
웹 서버는 클라이언트로부터 요청을 받아 처리하고 결과를 클라이언트에 반환합니다.
이때 웹 서버가 캐시를 적용하고 있다면 클라이언트의 요청을 처리하는 데 필요한 리소스를 미리 저장해 두었다가 다음에 같은 요청이 도착할 때 저장된 리소스를 사용할 수 있습니다.
이는 서버 부하를 줄여 웹 서버의 컴퓨팅 성능을 향상시키는 효과가 있습니다.
애플리케이션 서버 캐시
애플리케이션 서버는 웹 서버와 데이터베이스 사이의 중간 계층 역할을 합니다.
이때, 응용 서버가 캐시를 적용할 때 웹 서버로부터 받은 요청을 처리하는 데 필요한 데이터나 결과를 미리 저장해 두고, 저장된 데이터나 결과는 다음에 같은 요청이 올 때 사용할 수 있다.
이는 데이터베이스 또는 외부 API에 대한 요청 수를 줄여 애플리케이션 서버의 처리 능력을 향상시키는 효과가 있습니다.
데이터베이스 캐시
데이터베이스 캐시는 데이터베이스의 성능을 향상시키는 데 사용되는 기술입니다.
데이터베이스 캐시는 자주 사용하는 데이터를 메모리에 미리 저장해 두었다가 다음에 같은 데이터가 요청될 때 메모리에서 직접 반환합니다.
이는 디스크에서 데이터를 읽는 비용을 줄여 데이터베이스 처리 속도를 향상시키는 효과가 있습니다.
콘텐츠 전송 네트워크(CDN)
서버측 캐싱을 위한 또 다른 옵션은 CDN(Content Delivery Network)을 사용하는 것입니다.
CDN은 전 세계에 분산된 서버 네트워크를 통해 클라이언트 요청을 처리하고 데이터를 가장 가까운 서버로 전달하여 웹 사이트 로딩 속도를 높이는 기술입니다.
CDN은 캐시 서버를 사용하여 콘텐츠를 저장하고 클라이언트가 요청할 때 캐시 서버에서 직접 데이터를 제공함으로써 웹 사이트의 성능을 향상시킵니다.
저장 위치에 따른 분류
서버 측 캐시는 데이터가 저장되는 위치에 따라 프록시 캐시와 역방향 프록시 캐시로 나뉩니다.
프록시 캐시
프록시 캐시는 클라이언트로부터 요청을 받아 서버로 전달하는 역할을 합니다.
이 시점에서 클라이언트가 요청한 데이터가 캐시되어 있으면 캐시에서 데이터를 검색하여 클라이언트로 전달합니다.
프록시 캐시는 웹 서버와 애플리케이션 서버 간에 사용됩니다.
리버스 프록시 캐시
리버스 프록시 캐시는 웹 서버 앞에 위치하며 클라이언트로부터 요청을 받아 웹 서버로 전달하는 데 사용됩니다.
이 시점에서 웹 서버에서 반환된 데이터가 캐시되어 있으면 캐시에서 데이터를 검색하여 클라이언트로 전달합니다.
리버스 프록시 캐시는 웹 서버의 부하를 줄이고 웹 사이트 성능을 향상시키는 데 사용됩니다.
서버 측 캐시는 클라이언트 측 캐시와 함께 사용될 때 웹 사이트의 성능을 최적화할 수 있습니다.
다음 게시물에서는 클라이언트 측 캐싱에 대해 자세히 살펴보겠습니다.