오브젝트 캐싱(객체 캐싱)

오브젝트 캐싱(Object Caching: 객체 캐싱)은 웹사이트를 빠르게 하는 여러가지 캐싱 방법 중 하나입니다.

브라우저 캐싱과 페이지 캐싱뿐만 아니라 모바일 캐싱과 사용자 캐싱도 있습니다. 대표적인 워드프레스의 속도 개선 플러그인인 WP Rocket을 사용하고 있다면 이러한 유형의 캐싱의 이점을 이미 누리고 있을 것입니다. 그러나 WP Rocket에서 제공하지 않는 또 다른 캐싱은 바로 오브젝트 캐싱입니다.

오브젝트 캐싱은 데이터베이스 쿼리를 저장하는 것을 포함하며, WordPress 사이트에서 활성화되었을 때 PHP 실행 시간을 빠르게 하고 데이터베이스의 부하를 줄이며 방문자에게 빠르게 컨텐츠를 전달하는 데 도움이 됩니다.

이 글에서는 오브젝트 캐싱이 무엇이며 WordPress와 함께 작동하는 방식(WordPress에서 제공하는 내장 오브젝트 캐싱 포함)에 대해 다룰 것입니다. 또한 사이트의 성능을 향상시키기 위해 이 유형의 캐싱을 구현하는 몇 가지 다른 방법도 살펴볼 것입니다.

캐싱이란 무엇인가요?

하지만 먼저, 오브젝트 캐싱을 이해하기 위해 일반적으로 캐싱이란 무엇인지 살펴보겠습니다.

캐싱은 자주 액세스하는 데이터를 캐시에 임시로 저장하여 후속 요청에 재사용할 수 있도록 하는 프로세스입니다. 누군가 사이트에 접속하면 캐싱이 비활성화되어 있는 경우, 그들의 브라우저는 페이지에 대한 요청을 서버로 보냅니다. 그런 다음 서버는 요청을 처리하고 페이지를 컴파일한 다음 브라우저로 다시 보냅니다.

사이트가 저용량 트래픽을 갖고 있는 경우, 서버는 가끔씩만 요청을 처리하고 페이지를 컴파일해야 하므로 휴식을 취할 수 있습니다. 그러나 대규모 사이트를 호스팅하는 서버는 많은 작업을 수행해야 합니다. 요청이 들어올 때마다 초당 여러 페이지를 처리하고 컴파일해야 합니다.

캐싱은 서버의 부담을 줄여줄 수 있는데요. 캐싱은 각 요청의 사본을 저장하고, 다음에 동일한 요청이 오면 캐시를 확인하고 그곳에서 제공합니다. 사본이 없으면 요청은 서버로 전송되어 처리되고 컴파일된 후 브라우저로 돌아갈 때 캐시에 저장됩니다.

캐싱의 장점은 서버가 필요 이상의 작업을 수행하지 않아도 된다는 점이며, 서버가 보다 많은 트래픽을 처리할 수 있게 해줍니다. 또한 사용자에게 컨텐츠를 더 빠르게 전달하는 추가적인 이점이 있습니다.

오브젝트 캐싱이란 무엇인가요?

오브젝트 캐싱은 데이터베이스 쿼리 결과를 저장하여 다음에 결과가 필요할 때 데이터베이스를 반복적으로 쿼리하지 않고 캐시에서 제공할 수 있는 것입니다. 오브젝트 캐싱은 데이터베이스 쿼리 결과나 계산된 데이터를 메모리에 임시 저장함으로써, 웹페이지 로딩 속도를 향상시키고 서버 부하를 줄일 수 있습니다.

콘텐츠 관리 시스템인 WordPress는 당연히도 데이터베이스에 크게 의존합니다. 따라서 데이터베이스의 효율성은 WordPress의 확장에 중요합니다.

만약 고트래픽 사이트를 운영하고 페이지 요청이 많은 데이터베이스 쿼리를 생성한다면, 서버는 빠르게 과부하가 걸릴 수 있으며, 이는 사이트의 성능에도 부정적인 영향을 미칠 수 있습니다.

따라서 사이트에서 오브젝트 캐싱이 활성화되어 있다면, 데이터베이스와 서버의 부담을 줄이고 쿼리를 더 빠르게 제공할 수 있습니다.

WP_Object_Cache란 무엇인가요?

WordPress에는 WP_Object_Cache라는 내장 오브젝트 캐시가 있습니다. 2005년에 도입된 이 기능은 데이터베이스에서 어떤 데이터든 자동으로 PHP 메모리에 저장하여 반복된 쿼리를 방지하는 방법을 제공합니다.

하지만 이 오브젝트 캐시는 단일 페이지 로드에서만 객체를 저장합니다. 요청이 끝나면 캐시에 있는 객체를 삭제하기 때문에 다음에 페이지를 요청할 때는 처음부터 다시 생성해야 합니다. 이는 WordPress의 유용한 기능이지만, 유사한 쿼리 요청에 대해 단일 페이지 로드 중에 데이터베이스를 여러 번 쿼리하지 않도록 보장하는 것이지만, 효율적이지는 않습니다.

여기서 오브젝트 캐싱 솔루션을 사용하면 더욱 강력한 오브젝트 캐싱이 가능합니다. 오브젝트 캐싱은 여러 페이지 로드 사이에서 객체를 캐시할 수 있는 경우에 더욱 효과적입니다. Redis와 Memcached와 같은 외부 지속적인 오브젝트 캐싱 솔루션을 사용하면 요청 사이에 오브젝트 캐시를 유지할 수 있습니다. 이는 데이터베이스 쿼리의 전달 속도를 높이고 서버의 작업 부담을 더욱 줄여줍니다.

오브젝트 캐싱은 어떤 사이트에 적합할까?

정적인 단순 블로그나 회사 소개 사이트라면 굳이 오브젝트 캐싱이 필요 없을 수 있습니다. 하지만, 우커머스나 Learndash, 각종 Membership 과 같이 다양한 DB를 사용하는 플러그인들을 사용하는 경우. 데이터베이스 쿼리를 처리해야 하는데 이떄 오브젝트 캐시는 속도 개선에 상당히 도움을 줍니다.

어떤 오브젝트 캐싱을 사용해야 하는가?

워드프레스 사이트의 성능을 극대화하기 위한 오브젝트 캐싱 방법에는 여러 옵션이 있습니다. 가장 인기 있는 솔루션들을 아래에 소개합니다.

1. Redis

Redis는 고성능 키-값 저장소로서, 오브젝트 캐싱에 널리 사용됩니다. 워드프레스에서 Redis를 오브젝트 캐시로 사용하기 위해서는 Redis Object Cache 플러그인을 설치해야 합니다. 이 플러그인은 Redis 서버와 워드프레스 사이트를 연동하여, 데이터베이스 쿼리 결과를 빠르게 캐싱할 수 있게 도와줍니다.

2. Memcached

Memcached는 분산 메모리 캐싱 시스템으로, 대규모 웹사이트에서 널리 사용됩니다. 워드프레스와 Memcached를 함께 사용하려면, W3 Total Cache와 같은 플러그인을 통해 Memcached를 설정할 수 있습니다. Memcached는 다수의 서버 간에 캐시를 공유할 수 있는 능력이 특징입니다.

3. APCu (Alternative PHP Cache)

APCu는 PHP 코드의 중간코드(opcode)를 캐싱하는 APC의 단순화된 버전입니다. 오브젝트 캐싱에 특화되어 있으며, 서버에 직접 설치할 수 있습니다. APCu를 사용하려면, 서버에 APCu를 설치한 후 APCu Object Cache Backend 플러그인을 워드프레스에 설치해야 합니다. 이 방법은 비교적 간단한 설정으로 성능 향상을 기대할 수 있습니다.

하지만, 여기서 APCu는 Redis나 Memcached 에 비해 크나큰 단점을 갖고 있습니다.

1. 확장성

서버 간 공유 불가: APCu는 단일 서버에서만 작동하는 로컬 캐시입니다. 이는 확장성 측면에서 큰 제약이 될 수 있습니다. Redis와 Memcached는 네트워크를 통해 여러 서버 간에 캐시를 공유할 수 있어, 대규모 분산 시스템에서 더 효과적입니다.

2. 지속성

지속성 부재: APCu는 메모리에만 데이터를 저장하기 때문에, 서버가 재시작되면 캐시된 데이터가 모두 사라집니다. 반면, Redis는 디스크에 데이터를 저장할 수 있는 지속성 옵션을 제공하여, 서버 재시작 후에도 데이터를 복구할 수 있습니다.

3. 다양성과 유연성

기능 제한: APCu는 오브젝트 캐싱에 초점을 맞춘 솔루션이기 때문에, Redis나 Memcached와 비교했을 때 기능적으로 제한적입니다. 예를 들어, Redis는 메시지 브로커 기능, 트랜잭션 지원, 다양한 데이터 타입 지원 등 추가적인 기능을 제공합니다.

4. 복잡한 데이터 처리 능력

단순한 데이터 처리: APCu는 복잡한 데이터 구조 처리에 있어서 Redis나 Memcached보다 덜 유연합니다. 예를 들어, Redis는 리스트, 세트, 해시 등 다양한 고급 자료 구조를 지원하여, 복잡한 데이터 관리가 가능합니다.

즉, APCu는 소규모 프로젝트나 단일 서버 환경에서 간단하게 캐싱을 구현하고자 할 때 유용할 수 있습니다. 하지만, 확장성, 지속성, 기능적 다양성 및 복잡한 데이터 처리 능력 측면에서는 Redis나 Memcached가 더 나은 선택일 수 있습니다. 따라서, 사이트의 규모와 요구 사항을 고려하여 적합한 캐싱 솔루션을 선택하는 것이 중요합니다.

한국 호스팅을 사용한다면?

대부분의 한국 호스팅은 오브젝트 캐싱 중 오직 APCu만 제공하거나, 아예 오브젝트 캐싱 기능을 제공하지 않고 있습니다. 즉, 다양한 데이터베이스 쿼리를 처리해야 하는 사이트는 한국의 호스팅을 사용하시면 속도 문제에 굴레에서 벗어날 수 없게 되는 것입니다.

이러한 문제는 이미 한국 호스팅의 문제점이라는 글에서 자세히 안내해 드리고 있습니다. 저희가 추천해 드린 FastcometHostinger의 경우 Memcached 오브젝트 캐싱을 사용할 수 있으며, 저희가 만들어 드리는 가상 서버 또는 리얼 서버에서는 Redis와 Memcached 를 둘다 설치하고 가장 적합한 오브젝트 캐시를 세팅해 드리므로써 보다 빠르고 원활한 사이트 운영이 가능하도록 지원하고 있습니다.

추후 글에서 Redis와 Memcached 의 차이점과 장단점에 대한 글을 쓰도록 하겠습니다.

댓글 남기기