MSA 정리 - (6) Container Management

alexhwang_·2022년 1월 27일
0

MSA 정리

목록 보기
6/9

Container Management

1. Container Management의 역할

  • 컨테이너는 운영체제 수준 가상화(Operating-system-level virtualization) 방식으로 운영체제 커널을 공유
    -> 각자 OS를 가지고 있는 VM과 달리 하나의 OS에 여러 컨테이너가 올라가게 되므로 크기도 작고 리소스를 훨씬 적게 사용
  • 컨테이너는 프로세스를 묶어서 샌드박스 형태로 제공하고 각자의 네임스페이스와 파일 시스템을 가지고 운영
  • 컨테이너와 VM은 비슷한 목적을 가지는데 어플리케이션과 의존성을 독립된 단어로 묶어 격리하여 어디서든 실행 가능하게 함
  • 컨테이너와 VM은 모두 물리적 하드웨어의 필요성을 제거하여 컴퓨터의 자원을 비용 측면에서 좀 더 효율적으로 사용할 수 있도록 함

2. 마이크로서비스 구성 방식

(1) 호스트 하나에 여러 개의 서비스를 구성

  • 물리적 또는 가상의 호스트 하나에 여러 개의 서비스를 배포하는 패턴
  • 운영 측면에서 하나의 운영팀이 서버를 관리하기 때문에 각 서비스 별로 다른 배포 방법을 모두 알고 있어야 하며, 이러한 복잡함 때문에 서비스 배포 중에 에러가 발생할 가능성 높음

(2) 호스트마다 서비스 하나씩 구성

  • 가상머신 기반 구성

  • 이 방식에서 각 서비스는 VM Image로 패키징되고 VM 이미지를 이용해서 VM 상에서 동작하는 서비스 인스턴스를 구성

  • 예를 들어 AMI(Amazon Machine Image)를 이용해 서비스 인스턴스가 실행되는 EC2 인스턴스를 생성하는 방식

  • 이를 클라우드 환경에서 구성할 경우, 클라우드 벤더에서 제공하는 로드밸런싱, 오토스케일링 등의 기능을 쉽게 적용하여 사용 가능. 또한 VM 이미지를 이용해서 배포하기 때문에 훨씬 더 간단하고 안정적 배포 가능.
    하지만 VM 은 운영체제를 포함하고 있기에 이미지 크기도 커지고 실행 시간 소모가 높음

이에 따라 오토스케일링 시 시간도 더 소요되고 자원 활용의 효율성도 떨어짐

  • 컨테이너 기반 구성

  • 이 방식은 VM 대신 각 서비스를 컨테이너에 올리는 방식으로 컨테이너는 운영체제 수준 가상화 방식으로 운영체제 커널을 공유
    -> 각자 OS를 가지고 있는 VM과 달리 하나의 OS에 여러 컨테이너가 올라가게 되므로 크기도 작고 리소스를 훨씬 적게 사용

  • 컨테이너는 대표적으로 Docker를 사용 서비스를 컨테이너 이미지로 패키징해서 하나의 호스트안에 여러 개의 컨테이너를 실행 가능

  • 컨테이너 사용시 VM의 장점을 활용하고 단점 보완 가능
    -> VM에 비해 빠르고 경량화된 기술로 컨테이너 이미지는 매우 빠르게 빌드되고 부팅없이 실행 그러나 OS 커널을 공유하기 때문에 안전하지 않은 단점 발생

  • 그럼에도 불구하고 컨테이너 기반의 구성 방식은 작은 서비스를 많이 사용하고 자주 업데이트가 일어나는 마이크로서비스의 서비스 운영에 최적의 런타임 환경을 제공

3. Container Management 의 특징

컨테이너는 관리되고 통제되어야 하기에 컨테이너 오케스트레이션 기술이 필요

(1) 스케줄링

  • 컨테이너 클러스터 내부에서 컨테이너를 프로비저닝 가능

(2) 구성 스크립팅

  • 특정 어플리케이션 구성정보를 사전에 YAML,JSON으로 스크립팅 하여 이에 대한 정보를 기반으로 컨테이너를 로드 가능

(3) 모니터링

  • 컨테이너의 상태를 모니터링하여, 컨테이너가 다운되는 경우 새로운 컨테이너를 스핀업 가능

(4) 업그레이드와 롤백

  • 새 버전의 컨테이너 또는 컨테이너 내부에서 구동하는 어플리케이션을 배포할 때, 컨테이너 오케스트레이션은 컨테이너 클러스터 전체를 대상으로 자동 업데이트 및 롤백 처리 가능

(5) 서비스 디스커버리, 로드밸런싱

  • 특정 컨테이너가 어느 호스트에서 실행되는지 찾을 수 있으며, 특정 컨테이너에만 부하가 집중되는 것을 방지하기 위한 로드밸런싱 기능 존재

(6) 컨테이너 오토스케일링

  • 인프라 전반에 어플리케이션 로드를 고르게 분산시키기 위해 자동으로 컨테이너 확장 및 제거

4. Container Management 고려사항

  • 컨테이너와 서비스가 많아지면 컨테이너의 배치 및 유지 관리가 매우 복잡해짐

  • 대규모로 운영되는 경우 컨테이너의 배치,관리,확장,네트워킹 및 컨테이너의 가용성을 자동화하는 컨테이너 오케스트레이션 도구로 K8s,Openshift Origin,DC/OS,Dcoker Swarm,Rancher 등이 존재

  • AWS는 자체 컨테이너 오케스트레이션 도구로 ECS 제공, K8s 기반의 EKS 역시 제공

5. image를 container 실행할 시

  • 이미지는 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않음.

  • 컨테이너는 이미지를 실행한 상태로 추가되거나 변하는 값은 이미지와 별개로 컨테이너에 저장

  • 같은 이미지에서 여러 컨테이너 생성가능하며 이미지는 컨테이너를 생성할 수 있는 생성 파일

0개의 댓글