Memcached

양현모·2021년 1월 10일
1


Memcached란?
2003년 5월22일 Brad Fitzpatrick가 자신의 웹사이트 라이브저널을 위해 처음 개발한 것이다.
사전적 정의로는 범용 분산 캐시 시스템이라는 뜻입니다.

무료로 사용할 수 있는 오픈소스이며 분산 메모리 캐싱 시스템
데이터 베이스의 부하를 줄여 동적 웹 어플리케이션의 속도개선을 위해 사용되기도 함
DB나 API호출 또는 렌더링 등으로부터 받아오는 결과 데이터를 작은 단위의 Key-value형태로 메모리에 저장하는 방식
Memcached는 필요량보다 많은 메모리를 가졌을 때, 시스템으로부터 메모리를 사용하고 필요로하는 메모리가 부족한 경우 이를 더 쉽게 가져다 사용할 수 있도록 만들어 준다.

Memcached 사용여부에 따른 메모리 운영방식

Memcached를 사용하지 않을 땐 분리되어 있는 메모리에 대해 각각의 서버에서 사용할 수 있는 것은 할당된 메모리 크기만큼인데 Memcached를 적용할 경우에는 논리적을 결합되어 있기 때문에 각 웹서버는 전체 메모리 캐시만큼의 용량을 사용할 수 있다.
->효율성있게 메모리 운영이 가능해진다는 것

1.Memcached를 사용하지 않을 경우
각 노드는 완벽하게 독립적임
이 경우 고전적으로 사용되던 방식으로 총 캐시 크기가 웹팜(여러 대를 사용해서 웹사이트를 구축한 형태)의 실제 용량의 일부분으로 만 사용이 가능하다는 점에서 낭비가 심하다. 각각의 서버에 할당된 캐시 크기만큼 사용할 수 있으므로 웹팜의 캐시 사이즈는 128MB이지만 각 서버에서 사용할 수 있는 사이즈는 64MB이다.

2.Memcached를 사용하는 경우
Memcached를 사용할 경우 Memcached로 묶인 모든 서버는 동일한 가상 메모리 풀을 공유한다. 이것은 특정한 항목이 주어졌을때 전체 웹 클러스터(요구를 함께 처리해 주는 웹서버 그룹)에서 항상 동일한 위치에 저장하고 검색되어짐을 뜻한다. 또한 응용프로그램에 대한 수요가 증가하여 서버증설에 대해 필요성을 느낄 때, 정기적으로 접근되어져야 하는 데이터의 관점에서도 수요가 증가한다고 볼 수 있다.
Memcached를 적용하면 분산 메모리 캐시를 적용하게 되는 것이므로 캐싱을 통해 DB나 API호출에 대한 횟수를 줄일 수 있고 이로 인해 응용프로그램의 수요나 DB 데이터 접근에 대한 부하를 줄여 성능을 향상할 수 있다.

Memcached와 Redis

Memcached와 Redis는 오픈소스 인메모리 데이터 베이스로 공통적으로 처리속도가 빠르고 개발이 용이하다. 다양한 프로그래밍 언어를 지원해준다.(C,C++,C#,JavaScript,Node.js....)

Memcahed의 장단점
장점
1.DB/API 통신을 줄이기 위해 데이터를 캐싱처리하는 데에 사용하면 좋은 캐시
2.Redis는 트래픽이 몰리면 응답속도가 불안정 반면에 트래픽이 몰려도 memcached의 응답 속도는 안정적인편
3.Redis에 비해 메타 데이터를 적게 사용하여 메모리 사용량이 상대적으로 낮다.
4.객체를 캐시할수 있다.
단점
1.Redis처럼 데이터 타입과 API가 다양하지 않다.
2.데이터가 메모리에만 저장이되므로 휘발성인 특징으로 인해 프로그램을 종료하게되면 데이터가 날라간다.
3.데이터 수정 및 삭제시 데이터베이스와 memcached에 동시에 진행되야 하므로 개발 복잡도가 증가한다.

참고자료
https://memcached.org/
https://brownbears.tistory.com/43
https://americanopeople.tistory.com/148
https://myblog.opendocs.co.kr/archives/591

0개의 댓글