요즘에 ECS를 통해서 배포를 할 때 Fargate를 사용하는 경우가 많다. Fargate는 요청에 따라서 자동으로 확장되는 서버를 제공하면서 서버리스 형태의
서비스를 제공한다.
하지만 Fargate는 EC2 대비 비용이 비교적 비싼 편이다. 따라서 초기 비용을 줄이기 위해 EC2를 사용하는 경우가 많다.
이 포스트에서는 EC2를 사용해서 배포하는 방법을 알아보고자 한다.
ECS로 배포를 하기 전에 먼저 VPC를 생성해야 한다.
VPC는 네트워크 범위를 정의하고, 서브넷, 인터넷 게이트웨이, 라우팅 테이블 등을 생성하여 네트워크 환경을 구성한다.
vpc를 생성하기 위해서 IPv4 CIDR 블록또는 IP주소 범위를 입력해야 한다.
수동으로 입력할 수 있지만 CIDR 블록의 크기는 /16에서 /28 사이로 입력을 해야 한다.
기본적으로 제공되는 10.0.0.0/16 블록을 사용할 수 있지만 사용자가 원하는 블록을 입력할 수 있다.
10.0.0.0
은 IP 주소를 가리키고, /16
은 네트워크 범위를 가리키는데, 이 때 네트워크 범위는 2^(32-n) 개의 네트워크
범위를 가지게 된다.
따라서 /16
은 2^(32-16) = 65536개의 네트워크 범위를 가지게된다.
위와 같이 IP주소와 범위를 지정해주고 생성을 해주면 된다.
IP주소는 어떤 IP 주소를 할당해야 하는지 헷갈릴 수 있다.
VPC에서는 CIDR 블록을 선택할 떄 고려해야 할 사항이 있다.
VPC에서는 공개 IP가 아니라 사설 IP를 사용한다.
RFC 1918 표준에 따라 아래와 같은 사설 IP 대역을 사용해야 한다.
💡 AWS에서는 10.0.0.0 IP 대역을 많이 사용한다.
VPC 내에서 EC2, RDS, ALB, Lambda, ECS 등 AWS 리소스가 몇 개나 필요한지 예측을 해야 한다.
💡 서브넷을 분할할 계획이라면
/16
, 서브넷에서/24
를 사용하는 것이 좋다.
VPC내에서 서브넷을 나누어 사용할 계획이라면 미리 CIDR 블록의 범위를 크게 설정하는 것이 좋다.
예를들어 VPC를 10.0.0.0/16
을 사용하고, 서브넷은 /24
범위로 나누는 경우가 많다.
VPC CIDR 블록 | 서브넷 |
---|---|
10.0.0.0/16 | 10.0.1.0/24 (public subnet) |
10.0.2.0/24 (private subnet) | |
10.0.3.0/24 (database subnet) |
💡 VPC는 큰 범위로 설정하고, 서브넷은 보다 작은 범위로 설정하는 것이 관리하기 편하다.