본문 바로가기

개발공부/원티드 챌린지 정리

8월 백엔드 챌린지 : 도커 프로 (3)

728x90

1. 컨테이너 오케스트레이션 툴

- GCP

GKE(Google Kubernetes Engine)

- AWS

EKS(Elastic Kubernetes Services)

ECS(Elastic Container Service)

 

기능

- 컨테이너 클러스터링

~ 여러 대의 노드를 하나의 클러스터로 묶어, 어플리케이션을 분산 실행하고, 자원을 효율적으로 활용

~ 여러 대의 물리적인 또는 가상의 서버를 하나의 시스템처럼 동작하게 하는 기술

~ 컨테이너를 실행하는 호스트의 자원을 효율적으로 분배, 컨테이너가 안정적으로 실행되도록 함

~ 여러 대의 컨테이너를 묶어 하나의 서버처럼 사용할 수 있도록 지원

 

- 서비스 디스커버리

~ 컨테이너를 자동으로 발견하고, 서비스 이름과 IP주소 등을 관리해 어플리케이션 간 연결을 관리

~ 클라우드 환경에서의 컨테이너 생성, 배치, 이동에 따른 IP, Port 정보 업데이트 및 관리

 

- 자동 스케일링 : 어플리케이션의 트래픽 양에 따라 자동으로 컨테이너 수를 조절, 자원 사용량 최적화 및 가용성 보장

 

- 로드 밸런싱 : 여러 대의 노드에서 실행 중인 컨테이너들을 조절해, 트래픽을 균등하게 분배하여 어플리케이션의 성능을 최적화하는 기능

 

- 롤아웃 & 롤백 : 새로운 버전의 어플리케이션을 롤아웃하거나 이전 버전으로 롤백

 

- 자동 복구 : 컨테이너나 노드의 장애 발생 시 자동 복구

 

- 모니터링 & 로깅 : 컨테이너나 노드의 상태를 모니터링하고 로그를 수집해 어플리케이션의 성능과 문제점을 분석

 

- 보안과 네트워크 관리 : 컨테이너와 노드 보안 및 네트워크 설정 관리

 

대표적인 컨테이너 오케스트레이션 툴/서비스

1. 도커 스웜 : 쿠버네티스 이전까지 가장 대중적이었던 툴

2. 쿠버네티스

~ 오픈 소스 기반

~ 대규모 오케스트레이션에 적합 : 스케일링 기능 강화, 서비스 디스커버리 기능 강화(DNS 기반)

~ 베어 메탈, VM 환경, 퍼블릿 클라우드 등 다양한 환경에서 작동하도록 설계

https://kubernetes.io/ko/docs/home/

 

쿠버네티스 문서

쿠버네티스는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈소스 컨테이너 오케스트레이션 엔진이다. 오픈소스 프로젝트는 Cloud Native Computing Foundation에서 주관한다.

kubernetes.io

3. GKE

GCP 제공 쿠버네티스 기반 관리형 서비스

4. EKS

AWS 제공 쿠버네티스 서비스, 사용자가 Kubernetes API를 사용해 EKS 클러스터를 관리할 수 있다

5. ECS

AWS 제공 관리형 컨테이너 오케스트레이션 서비스, ECS를 사용해 컨테이너를 배포, 관리, 스케일링

ECS 서비스의 종류

1) EC2

~ 컨테이너 운영 자원이 EC2

~ 용량공급자를 통해 EC2 오토 스케일링그룹을 연결

~ EC2의 관리형 지표 CapacityProviderReservation에 따라 EC2 추가/제거, 컨테이너의 증가/ 축소에 따라 EC2도 함께 증가/축소하게 된다

2) Fargate

~ 서버리스로 EC2를 배포하거나 관리할 필요없이 서비스만 운영

~ 컨테이너 운영 장소를 관리할 필요 없음

~ Fargate 운영비용 : 시간당 vCPU, Storage 용량 비용 부과

3) External

~ AWS 인프라가 아닌 호스트 ECS에서 정의한 서비스

~ 실제 서비스는 AWS 밖에서 동작하지만, AWS 콘솔에서 관리 가능

 

ECS 구성 요소

- Task Definition

ECS에서 컨테이너를 실행하기 위한 청사진 또는 레시피, 어플리케이션 실행 방향에 대한 세부 사항 포함

~ 도커 이미지, 필요한 CPU 및 메모리, 사용되는 환경 변수, 포트 매핑 등을 지정

- Task

Task Definition에 기반해 실행되는 컨테이너 인스턴스

~ 하나의 T.D로 여러 개의 Task를 동시에 실행할 수 있다

~ 각 Task는 독립 실행되며, 각자의 상태 및 라이프 사이클을 가진다

- Service

특정 Task 정의에 기반한 작업 집핣을 실행하고 유지 관리

~ Task 인스턴스 숫자 유지, 부하 분산, 서비스 발견, 롤링 업데이트 등 기능 제공

주요 기능

~ Desired Count

사용자가 지정한 수의 Task 인스턴스를 지속적으로 실행하도록 보장

Task 인스턴스의 실패 및 중지 시 ECS는 자동으로 새 Task를 시작해 숫자 유지

~ Load Balencing

ECS 작업에 균일하게 트래픽을 분산시킴

~ Service Discovery

동적 IP 주소를 할당해 서비스를 검색하고 연결

~ Rolling Update

어플리케이션 업데이트

T.D 업데이트 중에도 서비스를 실행 상태로 유지

~ Scalling

요구 사항/ 정책에 따라 자동으로 확장/ 축소

- ECS Cluster

컨테이너화된 어플리케이션을 실행하기 위해 논리적인 그룹핑 또는 환경 : 하나 이상의 인스턴스와 함께 실행되는 서비스 및 Task로 구성

2. AWS ECS 실습

1) 클러스터 만들기

2) VPC 생성

3) AWS ECR 레포지토리 생성

4) ECR 레포지토리에 이미지 푸시

5) IAM 권한 설정

6) ELB

7) Task Definition

8) Service 생성

~ 로드 밸런서 설정

9) Github Action CI/CD + Github Secret

728x90