본문 바로가기

프로그래밍/Database

In-Memory Cache (인-메모리 캐시)

반응형

In-Memory Computing

인-메모리 컴퓨팅이란 Application이 운영을 위한 데이터를 하드 디스크가 아닌 메인 메모리에서 수행하는 것을 말한다.

즉, 연산을 위한 영역으로만 여겨졌던 메모리 영역을 대량의 데이터를 저장하여 처리할수 있는 공간으로 사용하는 것이다.

 

기술적/비용적 측면에서는

과거 Main Memory의 가격이 상대적으로 높았기 때문에 Memory 영역을 사용하는 것이 불가능/비효율적이었지만,

Memory의 가격이 낮아진 오늘 날에는 가능해지고, 보편화된 기술이 되었다.

 

In-Memory 컴퓨팅/아키텍쳐는 데이터의 절대적인 양과 종류가 폭발적으로 증가한 빅데이터 시대에 데이터 처리 속도를 향상시킬 수 있는 핵심 기술로 평가받고 있다.

 

출처) https://hazelcast.com/glossary/memory-caching/

 

왜 Cache를 사용하는가?

Cache(캐시)란 데이터의 원본이나 원본 데이터를 통해 연산된 값을 미리 저장(복사)해두는 임시 저장소를 의미한다.

즉, 데이터의 읽기(Read) 성능을 개선시키기 위해 DB와 같은 영구 저장소로부터 로드된 데이터를 빠르게 읽어올 수 있는 Memory 영역에 저장해두는 방식인 것이다.

 

결국, Cache는 빠른 속도를 위해서 사용하게 된다.

여기서의 "빠른 속도"라는 것은 단순히 동일한 데이터를 빠르게 읽어와서 요청에 대한 응답을 빠르게 줄 수 있다는 것 만을 의미하지는 않는다.

 

Cache를 사용할 때 더 중요한 부분은 "동일한 요청"에 대하여 빠른 응답이 가능하다는 점이다.

최초의 요청에 대한 응답을 전송하는 시점에 서버는 DB에서 읽어온 값을 Cache에 저장해둘 것이다. 

 

만약, 해당 요청이 다시 한번 들어온다면 서버는 DB가 아닌 Cache에서 동일한 요청 값을 리턴할 수 있을 것이며,

DB에서 값을 조회하지 않음에 따라 DB resource(자원)을 다른 요청에 할당할 수 있게 된다.

 

결국에는 서비스 전체적으로 "빠른 속도"를 가질 수 있으며, 많은 요청에 대한 처리를 분산함에 따라 서비스 부하를 감소시킬 수 있다.

 

In-Memory Cache가 적용된 서비스의 흐름

메모리 캐시를 사용하지 않는 서비스의 경우, 요청에 대한 처리의 방식이 단순하게 이뤄진다.

DB에서 데이터를 조회하거나 타 서비스를 사용할 경우 SDK 또는 API에 값을 요청하여 응답 결과를 전송하는 방식일 것이다.

 

물론, MySQL 등 대부분의 DB 서버에서 자체적으로 캐시를 하고 있지만,

자체 서비스와 서버 내에서 속도나 안정성 면에서 불확실성을 갖고 있기는 할 것이다.

 

메모리 캐시를 적용할 경우에는 어떨까?

요청이 발생할 경우, 우선 Cache에서 해당 요청에 대한 응답 결과가 있는지 조회한 뒤, 있을 경우 Cache에서 응답을 한다.

만약 Cache에 데이터가 없는 경우, DB에서 해당 요청에 따른 결과를 조회하여 응답을 전송하고 서버는 이 결과를 Cache에 저장하여 이후의 요청을 처리할 수 있도록 한다.

 

References

https://hazelcast.com/glossary/memory-caching/

 

반응형