MSA - Container Ochestration

1 분 소요

edX에서 쿠버네티스 강의를 공부하면서 알게 된 내용을 정리하고 공유합니다.

이를 해결하기 위해서 캡슐화된 경량 실행 환경을 제공하는 어플리케이션 컨테이너가 좋은 대안이 될 수 있습니다. 컨테이너는 항상 일관된 개발, 테스트 환경을 제공하며 하나의 서버에서 서로 독립적으로 여러개의 어플리케이션을 실행할 수 있도록 해줍니다. 또 컨테이너를 사용하면 개별 모듈을 유연하게 확장할 수 있고 자동화 툴의 도움을 많이 받을 수 있습니다.

Container

컨테이너는 높은 성능의 확장 가능한 어플리케이션을 어떤 인프라에도 배포할 수 있도록 하는 어플리케이션 중심적인 방법이다. 컨테이너는 마이크로서비스들을 서로 간섭이나 충돌없이 구동될 수 있도록 하는데 정말 적합하다.

마이크로서비스는 여러 현대 프로그래밍 언어로 쓰여졌고 각자 필요한 라이브러리들을 가지고 있다. 컨테이너는 마이크로서비스가 동작하는데 필요한 모든 것들을 함께 캡슐화하여 컨테이너 이미지로 만들어 놓고 이것을 구동시킨다.

컨테이너 이미지는 실행환경, 실행에 필요한 라이브러리들을 가지고 있으며 어플리케이션에게 격리된 실행 환경을 제공하기 위해 사용되는 소스이다.

컨테이너는 특정 이미지로부터 다양한 플랫폼에 배포될 수 있다.

Container Orchestration

개발 환경에서는 컨테이너를 하나의 서버에 돌릴 수 있지만 실제 배포 환경에서는 가능하지 않다. 왜냐하면 장애 복구성, 수요에 따른 확장, 최적의 리소스 사용 등의 측면을 생각하면 하나의 서버에서 돌리는 것은 가능하지 않기 때문이다.

Container Orchestration은 MSA의 다양한 요구사항을 만족시키며 컨테이너의 배포와 관리가 규모에 따라 자동화 되는 클러스터를 구성하기 위해 여러 시스템을 하나의 그룹으로 묶는 것을 말한다. 그리고 여기에는 매끄러운 업데이트, 관련 있는 서버가 서로를 찾도록 도와주는 것, 외부에서 접근할 수 있도록 하는 것 등의 기능이 포함되어 있다.

기업들이 자신들의 어플리케이션을 컨테이너화해서 클라우드로 옮기면서 Container Orchestration 솔루션에 대한 수요가 늘어났고 k8s, Amazon Elastic Container Service, Azure Container Instances 등의 많은 솔루션들이 있다.

Container Orchestration 솔루션이 필요한 이유

10~20개 의 컨테이너까지는 별도의 솔루션 없이 수동으로 관리하거나, 직접 스크립트를 써서 관리할 수 있지만 수백, 수천개의 컨테이너가 되었을 때는 불가능하다. Container Orchestration 솔루션들은 수백, 수천개의 컨테이너를 쉽게 관리할 수 있도록 도와준다.

보통 Container Orchestration 솔루션들은 아래 기능들을 가지고 있다.

  • 여러 호스트(서버)들을 하나의 클러스터로 묶는다.
  • 서버들의 활용 가능한 자원에 기반해 서버에 컨테이너들을 구동시킨다.
  • 서로 다른 서버에 있더라도 같은 클러스터 내의 컨테이너끼리 서로 소통할 수 있는 방법을 제공한다.
  • 컨테이너와 서버 저장공간을 연결한다.
  • 비슷한 컨테이너를 묶어서 하나의 로드밸런서에 묶어 사용자가 쉽게 컨테이너에 접근할 수 있는 추상화 계층을 제공한다.
  • 리소스를 관리하고 최적화 한다.
  • 컨테이너 내부의 어플리케이션에 접근과 관련된 보안 설정을 할 수 있도록 한다.

이러한 기능들 덕분에 큰 규모의 컨테이화된 어플리케이션을 운영할 때 Container Orchestration 솔루션이 꼭 필요하다.

태그:

카테고리:

업데이트: