웹 애플리케이션에서 사용자 세션을 관리하는 방법에는 쿠키 전용에서 서버 로컬 캐싱을 포함한 분산 키/값 데이터베이스에 이르기까지 여러 가지가 있습니다. 특정 요청에 응답하여 웹 서버에 세션 데이터를 저장하면 데이터에 액세스할 때 네트워크 지연 시간이 발생하지 않으므로 편리해 보일 수 있습니다. 주요 단점은 각 사용자가 하나의 서버와만 상호 작용할 수 있도록 요청을 신중하게 라우팅해야 한다는 것입니다. 또 다른 단점은 서버가 다운되면 모든 세션 데이터도 사라진다는 것입니다. 분산된 인 메모리 키/값 데이터베이스는 네트워크 지연 시간이 짧아 비용이 적게 들기 때문에 이 두 가지 문제를 모두 해결할 수 있습니다. 대개는 쿠키에 모든 세션 데이터를 저장하는 것으로 충분하며, 중요한 데이터를 저장하려면 서버 측 세션을 사용하는 것이 좋습니다.

이 자습서에서는 세션 관리를 위한 분산 캐시로 Amazon ElastiCache for Redis를 사용하는 방법을 알아봅니다. ElastiCache 노드를 구성하기 위한 모범 사례와 애플리케이션에서 세션을 처리하는 방법도 알아봅니다.

이 자습서에서 생성하는 Amazon ElastiCache 노드는 AWS 프리 티어 대상입니다.

시간: 120분

비용: 프리 티어 적격

사용 사례: 세션 스토어, 세션 캐싱, 고가용성, 실시간 애플리케이션

제품: Amazon ElastiCache for Redis, AWS 프리 티어, Amazon EC2

고객: 개발자

레벨: 초보자

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

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

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

소요 시간: 20분

이 자습서에서는 Python으로 작성된 예제와 웹 개발용 Flask 마이크로프레임워크를 사용한 몇 가지 메커니즘을 설명합니다. 코드를 선택한 언어로 쉽게 변환할 수 있기를 바랍니다.

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

해당 인스턴스의 보안 그룹이 포트 5000에서 들어오는 TCP 연결을 허용하는지 확인하십시오.

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

구문: 셸

$ sudo yum install git
$ sudo yum install python3
$ sudo pip3 install virtualenv
$ git clone https://github.com/aws-samples/amazon-elasticache-samples/
$ cd amazon-elasticache-samples/session-store
$ virtualenv venv
$ source ./venv/bin/activate
$ pip3 install -r requirements.txt
$ export FLASK_APP=example-1.py
$ export SECRET_KEY=some_secret_string
$ flask run -h 0.0.0.0 -p 5000 --reload

이 명령은 포트 5000에서 Flask 애플리케이션을 시작합니다. 서버에서 오류를 보고하지 않으면 EC2 인스턴스의 명령줄에서 다음 행을 사용하여 애플리케이션에 액세스할 수 있습니다.

구문: 셸

$ curl http://127.0.0.1:5000/

이 명령이 작동하면 EC2 인스턴스의 퍼블릭 IP 주소를 가져오고 컴퓨터에서 웹 애플리케이션에 액세스를 시도할 수 있습니다.

선행 조건

브라우저에서 애플리케이션에 액세스하려면 EC2 인스턴스의 퍼블릭 DNS 이름을 복사하고 포트 번호 5000을 추가하십시오. 예를 들어 스크린샷에 표시된 주소의 경우 URL은 http://ec2-54-175-201-152.compute-1.amazonaws.com:5000/이 됩니다.

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