[AWS] ElastiCache

참고 :

  • 해리의 유목코딩 - https://medium.com/harrythegreat/aws-%EA%B0%80%EC%9E%A5%EC%89%BD%EA%B2%8C-vpc-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-71eef95a7098
  • Amazon Web Service Docs

ElastiCache

ElastiCache는 클라우드에서 분산된 인메모리 데이터 스토어, 캐시 환경을 손쉽게 설정하고 관리 및 확장할 수 있는 웹 서비스이다.

Redis를 사용하는 기존 애플리케이션은 거의 수정하지 않고 ElastiCache를 사용할 수 있다 (아싸) 사용자가 배포한 ElastiCache 노드의 호스트 이름, 포트 번호 정보만 필요로 한다.

Redis용 ElastiCache

ElastiCache 시작하는 것은 ElastiCache 관리 콘솔을 사용하여 Redis 클러스터를 생성하는 것부터 시작이다.

클러스터 시작

클러스터는 Amazon VPC에서 시작된다. 클러스터 생성 이전에 서브넷 그룹을 생성하여야 한다.

VPC 및 서브넷

  • VPN : VPN은 한국어로 가상사설망이라 한다. VPN을 나눠놓으면 실제로 같은 네트워크 상에 있더라도 논리적으로는 다른 네트워크인 것처럼 동작한다.

VPC는 Virtual Private Cloud의 약자로 아마존 클라우드 내에서 private ip를 사용하는 가상 private network 망을 만들어줄 수 있게 해주는 서비스이다.

VPC를 적용하면 VPC별로 네트워크를 구성할 수 있고, 각각의 VPC에 따라 다르게 네트워크 설정을 줄 수 있다. 또한 각각의 VPC는 완전히 독립된 네트워크처럼 동작하게 된다.

VPC를 구축하려면 VPC의 아이피범위를 사설아이피 대역에 맞추어 구축하여야한다. 사설아이피란, 우리끼리 사용하는 아이피주소 대역을 의미한다. 그리고 보통 아이피범위가 퍼블릭아이피라고 칭한다. 한번 설정된 아이피대역은 수정할 수 없다.

하나의 VPC는 하나의 리전 내에서만 생성이 가능하다. VPC는 여러 개의 Amazon Availibility Zone에 걸쳐서 생성될 수 있다. 각각의 VPC는 완전히 독립적이다. VPC 통신을 원한다면 VPC 피어링 서비스가 있다.

VPC를 생성했으면 각각의 Subnet을 생성해야 한다. VPC 안에서는 여러 개의 Subnet을 생성할 수 있다. 서브넷은 VPC를 잘개 쪼개는 과정이다. 서브넷은 VPC 안에 있는 VPC보다 더 작은 단위이고, 이는 더 많은 네트워크 망을 만들기 위해서이다.

네트워크 요청

네트워크 요청이 들어오면, 데이터는 우선 라우터로 향한다. 라우터는 목적지이고 라우팅 테이블은 각 목적지에 대한 이정표이다. 데이터는 라우터로 향하게 되며, 네트워크 요청은 각각 정의된 라우팅 테이블에 따라 작동하게 된다. 여기서 라우팅 테이블에 명시되어있지 않은 요청(외부로 통하는 트래픽)은 처리할 수 없다. 이 때 게이트웨이를 사용한다.

인터넷 게이트웨이

인터넷 게이트웨이는 VPC와 인터넷을 연결해주는 하나의 관문이다. 인터넷과 연결되어 있는 서브넷을 퍼블릭 서브넷, 인터넷과 연결되어있지 않은 서브넷을 프라이빗 서브넷이라고 한다.

네트워크 ACL과 보안그룹

이들은 방화벽과 같은 역할을 하고, 인바운드 트래픽과 아웃바운드 트래픽 보안정책을 설정할 수 있다. 보통 stateful 방식으로 동작하는 보안그룹은 모든 허용을 차단하도록 기본설정되어있다. 필요한 설정은 허용해주어야 한다.

네트워크 ACL과 다르게 각각의 보안그룹별로도 별도의 트래픽을 설정할 수 있고, 서브넷에서도 가능하지만 EC2 인스턴스에서도 적용할 수 있다. 반면 네트워크 ACL은 stateless하게 작동하고, 모든 트래픽은 기본 설정되어있다. 서브넷 단위로 적용되며 리소스별로는 설정할 수 없다. 네트워크 ACL과 보안그룹이 충돌한다면 보안그룹이 더 높은 우선순위를 갖는다.

NAT 게이트웨이

NAT 게이트웨이는 프라이빗 서브넷이 인터넷과 통신하기 위한 아웃바운드 인스턴스이다. 프라이빗 네트워크가 외부에서 요청되어 들어오는 것은 고려하지 않더라도, 인스턴스의 펌웨어 및 주기적인 업데이트는 필요하여 아웃바운드 트래픽만 허용해야할 일이 있다. 이때 퍼블릭 서브넷 상에서 동작하는 NAT 게이트웨이는 프라이빗 서브넷에서 외부로 요청하는 아웃바운드 트래픽을 받아 인터넷 게이트웨이와 연결한다.