==컨테이너 오케스트레이션은 개별 구성 요소와 애플리케이션 계층의 작업을 정리하는 과정을 의미한다.==

Docker swarm

- Docker swarm에서 지원하는 orchestration 기능들

컨테이너 오케스트레이션

  • 오늘날의 개발에서, 애플리케이션은 더 이상 하나의 통일체가 아니라 특정 애플리케이션이 설계 의도대로 기능하도록 함께 작동해야 하는 수십 또는 수백 개의 느슨하게 결합되고 컨테이너화된 요소로 구성됩니다. 컨테이너 오케스트레이션은 개별 구성 요소와 애플리케이션 계층의 작업을 정리하는 과정을 의미합니다.

  • 사용자들은 컨테이너 오케스트레이션 엔진을 통해 컨테이너의 시작 및 중단 시점 제어, 클러스터로 그룹화, 애플리케이션을 구성하는 모든 과정을 관리할 수 있습니다. 사용자들은 컨테이너 오케스트레이션 툴을 통해 컨테이너 구축을 안내하고, 업데이트, 상태 모니터링, 장애 조치 절차를 자동화할 수 있습니다.

클러스터링 Clustering

  • 여러 개의 서버를 하나의 서버처럼 사용할 수 있습니다. 클러스터에 새로운 서버를 추가할 수도 있고 제거할 수도 있다. 작게는 몇 개 안 되는 서버부터 많게는 수천 대의 서버를 하나의 클러스터로 만들 수 있다. 여기저기 흩어져 있는 컨테이너도 가상 네트워크를 이용하여 마치 같은 서버에 있는 것처럼 쉽게 통신할 수 있다.

스케쥴링 Scheduling

  • 컨테이너를 적당한 서버에 배포해 주는 작업이다.

  • 툴에 따라서 지원하는 전략이 조금씩 다른데 여러 대의 서버 중 가장 할일 없는 서버에 배포하거나 그냥 차례대로 배포 또는 아예 랜덤하게 배포할 수도 있다. 컨테이너 개수를 여러 개로 늘리면 적당히 나눠서 배포하고 서버가 죽으면 실행 중이던 컨테이너를 다른 서버에 띄워주기도 한다.

롤링 업데이트(순차적 업데이트) / 롤백 Rolling Update / Rollback

  • 롤링 업데이트: 서비스를 새로운 이미지로 업데이트하는 경우 하나 하나 차례대로 업데이트합니다. 동시에 업데이트하는 작업의 개수와 업데이트 간격 시간을 조정할 수 있습니다.

  • 롤백:

스케일 업/ 스케일 아웃 Scale Up/ Scale Out

  • 두가지 모두 서버 확장 방식의 하나다

  • 스케일 업: 기존 서버를 더 좋은 사양의 서버로 migration하는 것

  • 스케일 아웃: 비슷한 사양의 서버를 여러대 두는 것

서비스 디스커버리 Service Discovery

  • 클러스터내에서 서비스를 찾아주는 기능

  • 클러스터 환경에서 컨테이너는 어느 서버에 생성될지 알 수 없고 다른 서버로 이동할 수도 있다. 따라서 컨테이너와 통신을 하기 위해서 어느 서버에서 실행중인지 알아야 하고 컨테이너가 생성되고 중지될 때 어딘가에 IP와 Port같은 정보를 업데이트해줘야 한다. 키-벨류 스토리지에 정보를 저장할 수도 있고 내부 DNS 서버를 이용할 수도 있다.

멀티 호스트 네트워크 Multi-host network

  • Overlay network로 불리는 SDN(Software defined networks)를 지원하여 여러 노드에 분산된 컨테이너를 하나의 네트워크로 묶을수 있다. 컨테이너마다 독립된 IP가 생기고 서로 다른 노드에 있어도 할당된 IP로 통신할 수 있습니다. (호스트 IP를 몰라도 된다)

로드 밸런싱 Load Balancing

  • 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다.

🍒 Reference