관계형 데이터베이스는 대부분 애플리케이션의 기초를 형성합니다. 그런데 확장성과 낮은 지연 시간에 관련된 성능을 개선할 수 있는 방법은 그렇게 많지 않습니다. 복제본을 추가하여 읽기를 확장하더라도 디스크 기반 스토리지에 따른 물리적인 한계에 부딪힙니다. 이 한계를 해결할 수 있는 가장 효과적인 전략은 디스크 기반 데이터베이스를 인메모리 캐싱으로 보완하는 것입니다.

이 자습서에서는 인메모리 캐싱 계층을 관계형 데이터베이스에 추가함으로써 애플리케이션의 성능을 향상시킬 수 있는 방법을 알아볼 수 있습니다. MySQL 데이터베이스 이외에 Amazon ElastiCache for Redis를 사용하여 캐시 배제 전략을 구현할 수 있습니다. 캐시 배제 전략은 데이터베이스 성능을 향상시킬 수 있는 가장 인기 있는 방법 중 하나입니다. 애플리케이션은 데이터베이스의 데이터를 읽어야 하는 경우에 먼저 캐시에 쿼리합니다. 데이터를 찾을 수 없는 경우에 애플리케이션은 데이터베이스에 쿼리하여 그 결과를 캐시에 채웁니다. 캐시를 무효화하는 방법은 많지만, 이 자습서에서는 Redis가 제공하는 캐시 유효시간(TTL) 만료 기능을 사용합니다.

ElastiCache for Redis 노드 및 이 자습서에서 생성되는 MySQL 데이터베이스는 AWS 프리 티어에 적격입니다.

Amazon ElastiCache for Redis로 캐시 배제 전략을 구현

시간: 120분

비용: 프리 티어 적격

사용 사례: 캐싱, 확장, 고가용성, 실시간 애플리케이션

제품: Amazon ElastiCache for Redis, Amazon RDS MySQL 및 AWS 프리 티어

고객: 개발자

레벨: 초급-중급

최종 업데이트: 2019년 7월 25일

*자습서를 진행하는 동안 권장 구성에 따르고 모든 리소스를 2시간 이내에 종료한다고 가정한 경우의 추정치입니다.

**생성된 지 24시간이 지나지 않은 계정은 이 프로젝트를 완료하는 데 필요한 리소스에 액세스할 권한이 아직 없을 수 있습니다.

20분을 할당하여 먼저 선행 학습 섹션을 완료하십시오. 

이 자습서에서는 Python으로 작성한 예제 메커니즘을 통해 캐싱 기법을 설명합니다. 코드를 선택한 언어로 쉽게 변환할 수 있기를 바랍니다.

이 자습서를 완료하려면 EC2 인스턴스에 액세스해야 합니다. 아직 실행한 EC2 인스턴스가 없으면 이 지침에 따라 인스턴스를 프로비저닝하십시오.

EC2 인스턴스에 액세스했으면 다음 명령을 실행합니다. 

$ sudo yum install git -y
$ sudo yum install mysql -y
$ sudo yum install python3 -y
$ pip3 install --user virtualenv
$ git clone https://github.com/aws-samples/amazon-elasticache-samples/
$ cd amazon-elasticache-samples/database-caching
$ virtualenv venv
$ source ./venv/bin/activate
$ pip3 install -r requirements.txt

이제 자습서를 시작할 수 있는 모든 준비가 끝났습니다.