분산 인 메모리 캐시(In-Memory-Cache)를 손쉽게 생성하고 확장할 수 있는 서비스로, 읽기 중심의 서비스(소셜 네트워크, 게임, 추천 엔진 등)을 제공해야 하는 환경이나 고속으로 데이터를 분석해야 하는 환경에 적합합니다.
[ ElastiCahce가 지원하는 두가지 캐시 엔진 ]
• Memcached : 유명한 분산 메모리 캐시 시스템
• Redis : String, Hash, List, Set, Sorted Set 등 다양한 데이터 형식을 제공하는 키-값(Key-Value) 데이터 저장소_Nosql
모든 데이터를 메모리(RAM)에만 올려 놓고 사용하는 데이터베이스의 일종입니다.
일반적인 데이터베이스(RDBMS)는 디스크(HDD,SSD)에 데이터를 영구적으로 저장해 놓고, 필요한 데이터만 메모리에 읽어서 사용합니다.
인 메모리 캐시는 디스크에 접근하지 않고 메모리로만 모든 처리를 하기 떄문에 데이터 저장 및 검색 속도가 매우 빠릅니다. 단 데이터는 딱 메모리 크기까지만 저장할 수 있습니다. 또한, 메모리에만 저장되어 있기 때문에 서버의 전원 공급이 중단되면 데이터는 소멸됩니다.
보통 빠른 처리 속도를 위해 데이터베이스에 저장된 데이터 중 쿼리 결과나 자주 사용되는 데이터를 인 메모리 캐시에 임시로 저장합니다.
Redis는 Memcached와 달리 노드들끼리 클러스터를 구성할 수 없습니다. 따라서 노드를 추가한다고 해서 저장할 수 있는 전체 메모리 용량이 늘어나지 않습니다.
ElastiCache Redis는 Read Replica를 지원합니다. Read Replica는 마스터 캐시 노드에 장애가 발생하면 자동으로 Read Replica가 마스터 캐시 노드로 승격되는 Failover 기능을 지원합니다.
Redis 캐시 노드가 제공하는 메모리 용량을 넘어서는 데이터를 저장하기 위해서는 애플리케이션 레벨에서 데이터를 여러 캐시 노드에 분산하여 저장하는 샤딩(Shading)을 구현해야 합니다.
RDS의 데이터베이스 엔진은 AWS 외부(인터넷)에서 접속이 허용되지만, ElastiCache의 캐시 엔진은 AWS 외부에서 접속 할 수 없습니다. Security Group을 생성해 모든 IP 대역에 대해 접속을 허용하더라도 동일한 VPC에 속한 EC2 인스턴스에서만 접속할 수 있습니다.
따라서 접속가능 여부를 확인하기 위해선 동일 VPC 내의 EC2인스턴스에 접속해 텔넷(telnet)으로 확인해보면 됩니다.