◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇
🍀 사전 지식: Docker
ECS를 이해할려면 Docker를 이해하고 있어야한다! 왜냐하믄 ECS는 컨테이너 관리 서비스이기 때문이다.
ECS는 Docker 컨테이너를 실행하는 데 사용된다. 그렇기 때문에 Docker를 모르면 말이 안된다.
Docker 를 사용해서 서비스를 운영하면 장점이 많다 (찾아보면 쉽게 알 수 있다 → 패키징화 와 빠른 개발 속도)
참고) 도커에 대해서: https://jibinary.tistory.com/28
[Docker 컨테이너를 AWS 환경에서 이용하고 싶은 경우]
과거 - 그냥 EC2 위에 도커를 설치해서 서비스를 구축했다.
현재 - ECS를 사용하기 (AWS가 ECS을 출시했다!)
ECS를 이용하면 굳이 EC2를 설치하고 그 위에 Docker를 설치하는 과정이 필요없다!
ECS는 컨테이너를 실행하기 위한 인프라를 제공하며, 우리는 그냥 Docker 이미지를 업로드하여 실행할 수 있다.
ECS는 컨테이너 인스턴스를 실행하고 관리하는 EC2 인스턴스 또는 AWS Fargate와 같은 관리형 컨테이너 플랫폼에서 실행된다.
ECS (Elastic Container Service)
ECS는 2 가지 실행 모드를 제공한다.
- ECS on EC2 : 일반적인 컴퓨팅
- ECS Fargate :Serverless compute for containers (컨테이너를 위한 서버리스 컴퓨팅)
이 두 모드는 주로 컨테이너를 실행하고 관리하는 방식에서 차이가 있다.maintenance
AWS 환경에서 컨테이너를 서버리스로 실행할 수 있는 컴퓨팅 서비스.
서버 운영에 필요한 OS의 maintenance가 필요 없게된다. (AWS가 해줌)
어플리케이션 개발에만 집중하면 된다.
AWS Fargate는 ECS나 EKS에 사용된다.
ECS 구성 요소
ECS 는 아래와 같은 컴포넌트들로 구성되어 있다.
- Cluster
- Service
- Task definition
- Task
- Container Instance
위의 그림을 보면 직관적으로 이해하기 쉽다
(ECS 로 웹사이트를 배포한다 했을 경우에 Task가 웹사이트 역할을 한다고 생각하면 이해하기 쉽다)
ECS 구축을 위한 기본적인 흐름
- 개발자가 도커 이미지를 저장소 (ECR : Elastic Container Registry) 에 등록
- ECS 구축하기
- Task Definition 정의하기 (ECR에서 사용할 이미지 및 시작 유형, 리소스 설정)
- Cluster 정의하기
- Cluster 안에서 Service 정의하기
- Service 안에서 Task Definition을 참고하여 Task 생성
- ECS 가동시키기
이해하기 쉬운 직관적인 ECS 예시
- Container Instance: EC2 또는 Fargate
- Service: 소셜 네트워크 서비스
- Task 1: UI (Frontend 프론트엔드)
- Container 1: 유저용 웹사이트
- Container 2: 기업용 웹사이트
- Task 2: API (Backend 백엔드)
- Container 1: 회원가입, 로그인 등을 처리하는 API
- Container 2: 게시물 관리 등을 처리하는 API
- Task 1: UI (Frontend 프론트엔드)
Task (작업)
Task를 실행하기 위해서는 Task definition 라는 것을 만들어야 한다.
Task definition 에는 Task 를 실행하기 위해 설정하는 내용이 있다. (Task 의 컨테이너 이미지, 리소스, 포트 설정들을 한다)
Task에는 컨테이너가 하나 있을 수도 있고, 여러 개가 있을 수도 있다.
(실행 중인 Task 에 에러가 생기면 자동으로 에러 생긴 Task는 지우고 새로운 Task를 생성할수있다)
Container Instance (컨테이너 인스턴스)
Container Instance는 쉽게 '컴퓨터'라 생각하면 이해하기 쉽다!
웹사이트를 배포하기 위해서는 컴퓨터가 필요하다!
ECS를 통해서 Task를 배포하기 위한 컴퓨터(EC2 인스턴스 or Fargate 호스트)를 Container Instance라고 한다.
Service (서비스)
Service 안에 Task 가 있다
Service를 설정 함으로써 Task 를 여러개 배포 가능하다.
Cluster (클러스터)
Container Instance 는 Task를 배포하기 위한 EC2 인스턴스이다.
Cluster 는 이러한 Container Instance 들을 논리적인 그룹으로 묶는 단위이다
Task 를 배포하기 위한 instance 는 반드시 Cluster 에 등록되어야 한다.
'클라우드(AWS)' 카테고리의 다른 글
[AWS] Serverless 란 쉽게 개념 정리 (0) | 2023.10.07 |
---|---|
[AWS 보안] Security Group 와 Network ACL 차이점 쉽게 정리 (보안그룹, NACL: Network Access Control List) (0) | 2023.10.05 |
What is AWS CodePipeline (CodeCommit, CodeBuild, CodeDeploy) (0) | 2023.04.27 |
CRON expressions 표현식 (0) | 2023.04.24 |
[AWS] [ECS] Task Role vs. Execution Role 차이 (2) | 2023.03.28 |