AWS VPC 구성부터 ECS 배포까지
이번에는 VPC and more이 아닌, 직접 수동으로 모든 요소를 만들고 ECS 배포까지 해보겠습니다.
- 생성할 요소 목록
- 네트워크 구성
- VPC
- Public Subnet 1, 2
- IGW
- Public ACL
- ECS 배포
- Cluster
- Task Definition
- Service
- 보안 그룹(Security group)
- ACL
- 대상 그룹(Target group)
네트워크 구성
VPC 생성

- VPC only로 선택해서 VPC만 생성 해 줍니다.
- IP 대역과 사이더(CIDR)는 10.0.0.0/16으로 구성해줍니다.
Subnets 생성

- 서브넷은 당연하게도, 위에서 생성한 VPC 내부에 만들어줍니다.

-
저는 각각 이름을 ford-study-public-1, 2로 생성하겠습니다.
-
사이더 블록은 각각 10.0.0.0/24, 10.0.1.0/24로 구성해줍니다.
-
AZ는 이전에도 말씀드린 대로 a, c로 선택 해 줍니다.
IGW(인터넷 게이트웨이)

- IGW는 생성시 별도 설정 할 내용이 없습니다.

- 다만 위 그림처럼 생성 직후 Attach to VPC라는 알림이 뜨는데, 이 때 연결해주는 것이 가장 좋습니다.
- 만약 이 알림을 놓치셔도 아래와 같이 수동으로 붙여 줄 수 있습니다.

RT(라우트 테이블)

- 라우트 테이블은 할당된 서브넷에 대한 지도 역할을 합니다.
- 별도 설정할 것은 없고, 이름과 VPC를 선택 해 줍니다.
- 대신 생성 후 해줄 일이 두 가지 있습니다.
RT에 IGW 추가

- 모든 트래픽(0.0.0.0/0)에 대해, 이전에 생성한 Internet Gateway로 연결해줍니다.
RT에 서브넷 할당

- Subnet associations에서 이전에 만든 public 1, 2 서브넷을 연결해줍니다.
- 이로서 우리의 서브넷에서 외부 인터넷과의 통신이 가능해졌습니다.
ECS 배포
클러스터 생성(생략)

작업 정의(Task definition) 생성(생략)
- 이전과 동일하게 작업 정의를 생성 해 줍니다.
- 컨테이너 생성 시, 사용하는 컨테이너에 따라 포트를 신경 써 주세요.
- 다른 설정은 기본 설정에서 수정할 필요 없을것같습니다.
Service 생성

- 비용을 최소화 하기 위해 이전과 같이 진행하겠습니다.
- Fargate Base 1, Weight 0
- Fargate spot Base 0, Weight 1

- Family를 이전에 만든 작업 정의로 선택 해 주고, 우선 Desired Tasks를 2로 설정해서 각 AZ별로 Task가 뜨도록 설정하겠습니다.
Networking

- Network에서는 VPC를 꼭 이전에 만든 VPC로 선택 해 주시고, Subnets도 public 1, 2가 선택되어있는지 확인합니다.
- 보안 그룹은 생성 해 주시고, 80, 3000번 포트를 둘 다 열어줍니다.
- 아마 이 보안그룹이 ALB에서도 사용되는 것 같습니다. 그렇기에 80포트도 같이 열어줍니다.
- NAT gateway를 사용하지 않으므로, Public IP를 꼭 할당해줍니다.
Load balancing

- ALB 생성시에 대상 그룹을 같이 생성하게됩니다.
- 필요한 health check path를 수정해주면 되는데, 우선은 루트로 해 주겠습니다.
이렇게 되면, 기본적인 배포가 완료됩니다.
구버전보다 생성에 시간이 꽤 오래 걸립니다. 약 3~5분 후 확인 해 보면 Service가 정상적으로 운영되고있는 모습을 볼 수 있습니다.
배포 확인

- 자 이제, 대략적인 배포 과정이 모두 끝났습니다.

- EC2 -> Load balancers로 들어가서, 배포된 서비스의 DNS 주소를 확인합니다.

- 초기엔 접근이 다소 오래걸리지만, 아무튼 배포가 성공한 것을 알 수 있습니다.
- 이와 같이 NAT 없이 운영을 하게 되면, 물론 보안상에 문제는 다소 있을 수 있겠지만, 운영 비용에서 상당한 절감 효과가 있습니다.
- 따라서 학습용으로 외부에서도 접근 가능한 파이프라인은 유지하되, 비용 부담을 줄이고 싶으신 경우 이와같이 사용해 주시면 좋을 것 같습니다.
- 실질적으로 운영해본 결과 비용은 일 당 약 800원 정도로, 일부 부하테스트를 진행하더라도 한달 3만원 미만으로 전체 배포 상태를 유지 할 수 있었습니다.