AWS VPC 구성부터 ECS 배포까지
❗참고❗
실습 후에 꼭 모든 VPC와 서비스 등을 삭제 해 주셔야합니다.
특히 NAT Gateway의 경우, 생성만 해 두어도 돈이 줄줄 흘러나갑니다!
클러스터(Cluster) 생성


- Cluster name 지정 후 Infrastructure에서 Fargate 선택(기본선택)
작업 정의(Task Definition) 생성

- Service를 만들기 전에, Task Definition을 만들어줍니다.

- Task definition family에 작업정의의 이름을 작성해 주고
- Launch type은 AWS Fargate로 선택해줍니다. 기본 선택되어있습니다.
- 가장 저렴한 0.25 vCPU / 0.5GB Memory를 선택해줍니다.
- 처음 하시는 경우, Task execution role이 없을텐데, 기본으로 만들어줍니다.

- 컨테이너의 이름은 편의대로 nestjs로 설정하겠습니다.
- 이미지는 제가 이전에 weston0713/nestjs로 Hello World 프로젝트를 배포해 두었으니, 이것을 사용하시거나, nginx 등을 사용하셔도 무방합니다.
- 포트는 사용하시는 이미지에 따라 열어줍니다. 저는 nestjs를 사용하므로 3000번 포트를 열어주겠습니다.
- ❗여기서 제 이미지를 사용하는 경우, 보안그룹과 혼동하여 80, 3000포트를 둘다 열지 않도록 주의해 주세요.

- 필수사항은 아니지만, Node 서버를 띄울땐 이왕이면 nofile을 65535로 풀어주시면 좋습니다.
서비스(Service)생성
이후 다시 Clusters -> ford-study -> Services로 이동해줍니다.


- Service로 생성해줍니다.
- Service name은 편의에 따라 설정 해 주시고,
- Desired tasks는 우선 두개 생성하겠습니다.
Networking

- VPC를 반드시, 이전에 만들어준 ford-study-vpc로 변경해준 후, 서브넷을 private 1, 2로 선택해줍니다.
- 이후 적당한 포트를 열어주시고,
- 당연하게요 Public IP는 사용하지 않습니다.
Load balancing

- 로드밸런서는 Application Load Balancer를 선택해줍니다.
- 이름을 적당히 작성 해 주고,
- Listener와 Target group을 위처럼 생성해줍니다.
Service auto scaling(생략)
생성에 약 3분정도 시간이 걸리네요. 이전보다 더 늦는듯 합니다.
아무래도 ALB, SG, TG등을 한번에 만들어서 그런가봅니다.

- 이후 새로고침 해 보면 위와같이 Tasks가 떠있는것을 볼 수 있습니다.
배포확인

- Task가 Running 상태가 된 후, 상세정보에서 로그를 확인하면 위와 같이 정상적으로 실행되었다는 메시지를 볼 수 있습니다.
- 로컬에서 편의상 처리해둔 색상표시때문에 로그 자체는 굉장히... 지저분하네요.

- EC2 -> Load balancers에 가보시면 우리가 만든 alb를 찾을 수 있습니다.
- 이 DNS 주소를 크롬 url에 입력 해 보시면
=> 안되는데,, 왜 안돼..?

- 확인해보니 ALB를 자동으로 생성하면 별도 선택없이 서브넷을 Private1, 2(fargate 배포를 위해 선택한 서브넷)을 기준으로 만드는것같습니다.
- 위 사진처럼 EC2 -> Load balancers에서 직접 수정해주시거나, 아니면 처음부터 직접 만들어서 쓰시는 게 좋을 것 같습니다.
전반적으로 신버전 UI에서는 대부분의 하위 요구사항(ALB, 보안그룹, 타겟 그룹 등)들을 동일한 페이지에서 생성 할 수 있도록 신경을 써 준 것 같은데, 복잡도를 낮추겠다는 이유로 너무 많은게 생략되는것같습니다.
다음 글 부터는 이런부분 좀 더 신경써서 작성 해 보겠습니다.
결과적으로 아래와 같이 정상 배포된 모습을 확인 할 수 있습니다.
