주니어 개발자 1호

[DevQuiz] 개발자 이론 퀴즈 (w. ECS - Fargate 수동 구성 테스트) 본문

사이드 프로젝트 진행

[DevQuiz] 개발자 이론 퀴즈 (w. ECS - Fargate 수동 구성 테스트)

No_1 2023. 6. 6. 23:04

사이드 프로젝트를 진행하고 있습니다!

Frontend 2명, Backend 1명으로 구성이 되어있고

 

개발자분들에게 간단한 javascript 이론 퀴즈 10개를 문제집 처럼 내는 것을 목표로 하고있어요.

 

Frontend분과 커뮤니케이션을 위해서 API를 다 완성시켜서 전달드리기 보단

API에 대한 명세서 부터 드릴려고 합니다!

InputType, ResponseType을 먼저 지정하고 Docs에 추가하여 배포하는 것을 목표로 잡았습니다.

 

일단 배포는 ECS Fargate로 구성하려고 해요 ( *추후 CI/CD 구성 )

1. 트래픽이 얼마나 있을 줄 모르고

2.작은 사양으로 배포했을 때 서버 터지는 게 관리면에서 더 힘들 것 같아서요.

ECS CI/CD 구성을 예전 회사에서 Instance로는 구성을 해봤지만, ECS Fargate로는 처음이라 간단히 도전해보았습니다.

생각보다 간단하더라구요.

 

일단 테스트하기 수월하게, ECR에 Docker Image를 간단히 하나 말아 올려줍니다. ( 테스트 용 )

 

 

 

전제

- ECR 구성 되어 있음

- Dockerfile 작성 되어 있음

 

ECS Cluster 구성

그리고 ECS Cluster 설정 부터 해볼게요.

클러스터 구성에서 이름, VPC등을 설정 해줍니다.

나머지는 해당 없을 것 같네요.

 

 

 

ECS Task 구성

task는 ECR Docker Image를 기반으로 컨테이너를 실행하는 단위입니다.

 

왼쪽 탭에서 태스트 정의를 선택한 후

 

오른쪽에 새 태스크 정의 생성을 클릭합니다.

 

태스크 정의 패밀리 이름을 지정하고, 컨테이너 정보를 입력해줍니다.

container 실행명, 이미지 URI ( ECR에 있습니다 ), 컨테이너 Port를 연결해줍니다.

아래쪽에 리소스에 대한 해당사항은 없어, 건너뜁니다. ( 다음 버튼 ) 

다음 버튼을 누르고 나면 환경설정, 스토리지, 모니터링 및 로깅에 대한 설정이 표시 됩니다.

 

 

따로 설정할 부분이 크게 보이지 않습니다.

작업역할이 처음에는 default로 표시되어있으나, 선택적으로 사용하면 좋을 것 같습니다.

 

 

 

작업 역할(task role)은 태스크의 컨테이너에서 사용자를 대신하여 AWS API 호출을 수행하는 데 사용되는 IAM 역할입니다. 애플리케이션은 AWS 자격 증명으로 AWS API 요청에 서명해야 하는데, 태스크 역할은 Amazon EC2 인스턴스 프로파일이 Amazon EC2 인스턴스에 자격 증명을 제공하는 방식과 유사하게 애플리케이션이 사용할 자격 증명을 관리하는 전략을 제공합니다.
AWS Distro for OpenTelemetry를 사용하여 추적 데이터 또는 지표를 수집하는 경우 태스크 IAM 역할이 필요합니다.


 

스토리지 또한, 별도의 설정이 필요 없어 보입니다. ( 행동 없음 )

모니터링 및 로깅에 대한 부분도 기본적으로 잘 설정되어 있습니다. ( 행동 없음 )

이후 다음을 누르면 전체 명세서가 뜨는데, 전체 확인 이후 생성을 눌러 줍니다.

 

 

 

ECS Service 구성

이후, 생성된 클러스터에 들어가 서비스 생성 버튼을 눌러줍니다.

 

환경에 대해서는 기본 값으로 진행해줍니다. ( Fargate 사용 )

 

 

 

배포 구성에서는 

애플리케이션 유형선택, 패밀리 선택, 서비스 이름작성을 수행해줍니다.

- 애플리케이션 유형: 서비스,

- 태스크: 자신이 위에서 만든 태스크.

-서비스 이름: 서비스 이름 

 

애플리케이션 태스크로 테스트 해보았는데, application load balance, targetGroup에 대해 스스로 설정해줘야 합니다.
서비스 차원에서 시작되는 것이 아닌 단독으로 태스크만 실행하여 public ip, vpc ip등이 발급되어 해당 부분을 targetGroup에 등록할 수 있습니다.

 

네트워킹 부분에서 추가로 확인해줍니다. 

- 자신이 설정한 vpc

- 가용영역 최소 두개 이상 겹쳐있는 subnet 구성

 

- 주의: 여기서 제일 아래의 매핑된 보안그룹의 인바운드에 http, https등이 allow되어 있어야합니다.

 

그리고 로드밸런서를 만들어 줍니다.

 

로드 밸런서 이름을 입력해줍니다.

Target Group을 설정합니다.

이후 생성을 눌러줍니다.

 

 

ECS 확인

클러스터에서 생성된 것을 확인합니다.

 

LoadBalance가 프로비저닝 된 것을 확인합니다.

dns를 통하여 healthCheck를 테스트 해봅니다. 정상적으로 잘 돌아가네요.

target  group또한 제가 설정하지 않고 자동으로 잘 매핑된 것을 확인할 수 있습니다.