다음을 통해 공유


마이크로 서비스에 대한 컨테이너 오케스트레이션

AKS(Azure Kubernetes Service)
Azure Service Fabric
Azure Container Instances

마이크로 서비스 아키텍처는 일반적으로 단일 컨테이너 내에 각 마이크로 서비스 인스턴스를 패키지하고 배포합니다. 마이크로 서비스의 많은 인스턴스가 각각 별도의 컨테이너에서 실행 중일 수 있습니다. 컨테이너는 가볍고 수명이 짧기 때문에 쉽게 만들고 파괴할 수 있지만 조정하고 통신하기가 어렵습니다.

이 문서에서는 프로덕션 규모에서 컨테이너화된 마이크로 서비스 아키텍처를 실행하는 문제 및 컨테이너 오케스트레이션이 어떻게 도움이 될 수 있는지에 대해 설명합니다. 이 문서에서는 여러 Azure 컨테이너 오케스트레이션 옵션을 제공합니다.

컨테이너화된 마이크로 서비스 아키텍처

이 간단한 컨테이너화된 AKS(Azure Kubernetes Service) 클러스터에서 다음을 수행합니다.

  • 하나의 마이크로 서비스 A 인스턴스가 노드 1, 노드 2의 다른 인스턴스, 노드 3의 세 번째 인스턴스에서 실행되고 있습니다.
  • 마이크로 서비스 B의 한 인스턴스는 노드 1에서 실행되고 다른 인스턴스는 노드 3에서 실행됩니다.
  • 컨테이너화된 역방향 프록시 서버 노드 1과 2에서 실행되어 트래픽을 분산합니다.

간단한 컨테이너화된 마이크로 서비스 아키텍처의 개념 다이어그램입니다.

클러스터를 관리하기 위해 DevOps 팀은 다음을 수행해야 합니다.

  • 각 노드에서 여러 컨테이너 인스턴스를 실행합니다.
  • 인스턴스 간에 트래픽 부하를 분산합니다.
  • 별도의 노드에서 종속 인스턴스 간의 통신을 관리합니다.
  • 원하는 AKS 클러스터 상태를 유지 관리합니다.

컨테이너 오케스트레이션을 사용하면 DevOps 팀은 클러스터의 원하는 상태를 구성으로 나타낼 수 있습니다. 컨테이너 오케스트레이션 엔진은 원하는 구성을 적용하고 모든 관리 작업을 자동화합니다.

간단한 3계층 웹 애플리케이션을 컨테이너화하는 것이 좋습니다.

  • 컨테이너는 프런트 엔드 구성 요소를 호스트합니다.
  • 다른 컨테이너는 중간 계층 또는 REST API 계층을 호스트합니다.
  • 중간 계층 계층은 전역적으로 분산된 데이터베이스와 통신합니다.

단일 개발 머신에서 이러한 컨테이너를 실행하는 것은 너무 어렵지 않을 수 있습니다. 그러나 프로덕션 클러스터에서 대규모로 고가용성 모드로 애플리케이션을 실행하는 것은 빠르게 어려워집니다. 컨테이너 오케스트레이션은 대규모 및 동적 프로덕션 환경에 매우 중요합니다.

컨테이너 오케스트레이션의 장점

다음 예제에서는 컨테이너 오케스트레이션이 클러스터 배포, 네트워킹 및 크기 조정을 관리하는 데 어떻게 도움이 되는지 보여줍니다.

컨테이너 오케스트레이터 시나리오를 보여 주는 예제 마이크로 서비스 클러스터의 다이어그램입니다.

컨테이너 오케스트레이터:

  • 트래픽 또는 리소스 사용률에 따라 마이크로 서비스 인스턴스 수를 자동으로 조정합니다. 이 예제에서 오케스트레이터는 트래픽 증가에 대한 응답으로 다른 마이크로 서비스 A 인스턴스를 자동으로 추가합니다.

  • 구성된 원하는 상태를 반영하도록 컨테이너를 관리합니다. 이 예제에서 마이크로 서비스 B는 두 개의 인스턴스를 갖도록 구성됩니다. 한 인스턴스가 비정상 상태가 되었으므로 오케스트레이터는 다른 인스턴스를 만들어 원하는 상태를 유지 관리합니다.

  • 간단한 서비스 계층에서 각 마이크로 서비스에 대한 컨테이너를 래핑합니다. 서비스 계층:

    • IP 주소, 포트 및 인스턴스 수와 같은 복잡성을 추상화합니다.
    • 마이크로 서비스 인스턴스 간에 트래픽 부하를 분산합니다.
    • 종속 마이크로 서비스 인스턴스 간의 간편한 통신을 지원합니다.

또한 컨테이너 오케스트레이터는 유연성과 트래픽 제어를 제공하여 다음을 수행합니다.

  • 가동 중지 시간 없이 새 버전을 릴리스하거나 이전 버전의 마이크로 서비스 또는 마이크로 서비스 세트로 롤백합니다.
  • 다른 마이크로 서비스 버전의 병렬 테스트를 사용하도록 설정합니다.

Azure 컨테이너 오케스트레이터 선택

다음은 Azure에서 마이크로 서비스 컨테이너 오케스트레이션을 구현하기 위한 몇 가지 옵션입니다.

  • AKS(Azure Kubernetes Service) 컨테이너화된 애플리케이션의 배포 및 관리를 간소화하는 Azure의 완전 관리형 Kubernetes 컨테이너 오케스트레이션 서비스입니다. AKS는 탄력적 프로비전, 빠른 엔드투엔드 배포, 고급 ID 및 액세스 관리를 제공합니다.

  • Azure Service Fabric 컴퓨터 클러스터에서 마이크로 서비스를 배포하고 관리하기 위한 컨테이너 오케스트레이터입니다. 경량 Service Fabric 런타임은 상태 비정상 및 상태 저장 마이크로 서비스 빌드를 지원합니다.

    주요 Service Fabric 차별화 요소는 상태 저장 서비스를 빌드하기 위한 강력한 지원입니다. 기본 제공 상태 저장 서비스 프로그래밍 모델을 사용하거나 모든 언어 또는 코드로 작성된 컨테이너화된 상태 저장 서비스를 실행할 수 있습니다.

  • ACI(Azure Container Instances) Azure에서 컨테이너를 실행하는 가장 빠르고 간단한 방법입니다. ACI를 사용하면 가상 머신을 관리하거나 더 높은 수준의 서비스를 조정할 필요가 없습니다.

    간단한 오케스트레이션 시나리오의 경우 Docker Compose 사용하여 다중 컨테이너 애플리케이션을 로컬로 정의하고 실행할 수 있습니다. 그런 다음 관리형 서버리스 Azure 환경에서 Docker 컨테이너를 ACI 컨테이너 그룹으로 배포합니다. 전체 컨테이너 오케스트레이션 시나리오의 경우 ACI는 AKS와 통합하여 AKS 오케스트레이션을 위한 가상 노드를 만들 수 있습니다.

  • Azure Spring AppsSpring Boot 앱에 대한 엔터프라이즈급 완전 관리형 서비스입니다. Spring Apps를 사용하면 인프라를 관리할 필요 없이 앱을 빌드하고 실행하는 데 집중할 수 있습니다. Spring Apps에는 기본 제공 수명 주기 및 오케스트레이션 관리, 모니터링 용이성 및 Azure와의 완전한 통합이 제공됩니다.

  • ARO(Red Hat OpenShift) Azure에서 완전히 관리되는 OpenShift 클러스터의 배포를 지원합니다. Kubernetes 프로덕션 컨테이너를 실행하려면 이미지 레지스트리, 스토리지 관리, 모니터링 및 DevOps와 같은 프레임워크 및 도구와 통합해야 합니다. ARO는 이러한 구성 요소를 PaaS(단일 컨테이너 플랫폼 as a Service)로 결합하여 Kubernetes를 확장합니다.

참여자

이 문서는 Microsoft에서 유지 관리합니다. 그것은 원래 다음 기여자에 의해 작성되었습니다.

주 작성자:

공용이 아닌 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.

다음 단계

  • AKS(Azure Kubernetes Service) 마이크로 서비스 아키텍처
  • AKS(Advanced Azure Kubernetes Service) 마이크로 서비스 아키텍처
  • Azure Pipelines 사용하여 AKS 앱용 CI/CD
  • 마이크로 서비스 API 게이트웨이 사용
  • Azure Spring Apps 참조 아키텍처
  • Azure 마이크로 서비스 빌드
  • 마이크로 서비스 아키텍처 디자인
  • 마이크로 서비스 대한 디자인 패턴
  • 마이크로 서비스 아키텍처 스타일
  • Azure Kubernetes Service 솔루션 경험