AWS & Docker

[Docker] 도커 활용 클라우드 서비스

dalooong 2023. 8. 8. 21:27

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

GCP

  • GKE (Google Kubernetes Engine)

AWS

  • EKS (Elastic Kubernetes Service)
  • ECS (Elastic Container Service)

✅ 컨테이너 클러스터링

  • 여러 대의 노드(node)를 하나의 클러스터(cluster)로 묶어, 애플리케이션을 분산하여 실행하고, 자원을 효율적으로 활용하는 기술
  • 여러 대의 물리적인 또는 가상의 서버를 하나의 시스템처럼 동작하게 하는 기술
  • 컨테이너를 실행하는 호스트의 자원을 효율적으로 분배, 컨테이너가 안정적으로 실행되도록 함.
  • 여러 대의 컨테이너를 묶어 하나의 서버처럼 사용할 수 있도록 지원

서비스 디스커버리(Service Discovery)

  • 컨테이너를 자동으로 발견하고, 서비스 이름과 IP 주소 등을 관리하여, 애플리케이션 간의 연결을 관리하는 기능
  • 클라우드 환경에서의 컨테이너 생성, 배치, 이동에 따른 IP, Port 정보 업데이트 및 관리

컨테이너 오케스트레이션의 기능 

  • 자동 스케일링(Autoscaling) : 애플리케이션의 트래픽 양에 따라 자동으로 컨테이너 수를 조절하여, 자원 사용량을 최적화하고, 가용성을 보장하는 기능
  • 로드 밸런싱(Load Balancing) : 여러 대의 노드에서 실행 중인 컨테이너들을 조절하여, 트래픽을 균등하게 분배하여, 애플리케이션의 성능을 최적화하는 기능
  • 롤아웃과 롤백(Rollout and Rollback) : 새로운 버전의 애플리케이션을 롤아웃하고, 이전 버전으로 롤백하는 기능입니다. 
  • 자동 복구(Automatic Recovery): : 컨테이너나 노드의 장애 시 자동으로 복구하는 기능입니다.
  • 모니터링과 로깅 : 컨테이너나 노드의 상태를 모니터링하고, 로그를 수집하여, 애플리케이션의 성능과 문제점을 분석하는 기능
  • 보안과 네트워크 관리 : 컨테이너와 노드의 보안을 관리하고, 네트워크 설정을 관리하는 기능

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

도커 스웜 

  • 도커 컨테이너 오케스트레이션 도구 
  • 간단하게 작동하고, 설정이 쉽다. 

쿠버네티스 Kubernetes

공식 문서 : https://kubernetes.io/ko/docs/home/
  • 다양한 웹 서비스와 대용량 트래픽을 감당하기 위해 등장
  • 오픈 소스 기반 
  • 구글에서 설계, 현재 리눅스 재단에 의해 관리
  • 대규모에 적합
    • 스케일링 기능 강화 (Replication Controller: 컨테이너 수를 동적으로 조절)
    • 서비스 디스커버리 기능 강화 (DNS 기반)
  • 가장 기능이 풍부하고 널리 사용되는 컨테이너 오케스트레이션 프레임워크
  • 베어 메탈, VM환경, 퍼블릿 클라우드 등의 다양한 환경에서 작동하도록 설계되어 있음 

 GKE(Google Kubernetes Engine)

  • 구글 클라우드 플랫폼 GCP에서 제공하는 쿠버네티스 기반의 관리형 컨테이너 오케스트레이션 서비스
  • 따라서 GKE는 쿠버네티스를 기반으로 하고, 쿠버네티스의 기능을 모두 제공

 EKS(Amazon Elastic Kubernetes Service)

  • AWS 제공하는 관리형 쿠버네티스 서비스
  • EKS는 쿠버네이스 기반으로 구축되어 있음
  • 사용자는 쿠버네이트 API를 사용하여 EKS 클러스터를 관리할 수 있다. 

 ECS (Amazon Elastic Container Service)

공식 문서 : https://docs.aws.amazon.com/ko_kr/ecs/index.html
  • AWS에서 제공하는 관리형 컨테이너 오케스트레이션 서비스
  • 도커 컨테이너를 실행하기 위한 기능을 제공
  • 사용자는 ECS를 사용하여 컨테이너를 배포, 관리, 스케일링

ECS 서비스 종류 (호스트 유형)

ECS (Amazon Elastic Container Service) 구성 요소

 Service 

  • 특정 작업 정의에 기반한 작업 집합을 실행하고 유지 관리하는 역할
  • 특정 작업의 인스턴스를 지정된 수로 유지하거나, 부하 분산, 서비스 발견, 롤링 업데이트 등과 같은 추가 기능을 제공

 Desired Count:

  • 사용자가 지정한 수의 작업 인스턴스를 지속적으로 실행하도록 보장
  • 만약 작업인스턴스가 실패하거나 중지되면 EC는 자동으로 새 작업을 시작하여 원하는 수의 작업을 유지

 Load Balancing:

  • Application Load Balancer, Network Load Balancer 또는 Classic Load Balancer와 통합 될 수 있음
  • 트래픽이 ECS 작업에 균일하게 분산될 수 있도록 함

 Service Discovery:

  • 동적 IP 주소를 사용하여 서비스를 검색하고 연결

 Rolling Updates:

  • 애플리케이션 업데이트
  • 작업 정의를 업데이트하면서 서비스를 지속적으로 실행 할 수 있도록 함

 Scaling:

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

ECS 구성