마이크로 서비스를 위한 Azure 컴퓨팅 옵션 선택
컴퓨팅이라는 용어는 애플리케이션이 실행되는 컴퓨팅 리소스의 호스팅 모델을 말합니다. 이 문서에서는 마이크로 서비스에 대한 컴퓨팅 플랫폼을 선택하는 데 도움이 되는 규범적인 지침을 제공합니다. 마이크로 서비스 컴퓨팅 플랫폼 선택은 더 미묘한 요구 사항에 따라 달라질 수 있습니다.
마이크로 서비스 아키텍처의 경우 다음과 같은 방법이 널리 사용됩니다.
- 일반적으로 마이크로 서비스 오케스트레이터를 사용하여 전용 컴퓨팅 플랫폼에 마이크로 서비스를 배포합니다.
- 서버리스 플랫폼에 마이크로 서비스를 배포합니다.
이러한 옵션만 있는 것은 아니지만 마이크로 서비스 구축에 대한 검증된 접근 방식입니다. 애플리케이션에 두 가지 방법이 모두 포함될 수 있습니다.
이 아키텍처의 Visio 파일을 다운로드합니다.
서버리스 플랫폼 사용
서버리스 플랫폼을 사용하여 Azure Container Apps 또는 Azure Functions에 마이크로 서비스를 배포할 수 있습니다. Container Apps와 Functions는 모두 컴퓨팅 소비가 아닌 요청 볼륨에 따라 청구되는 서버리스 컴퓨팅 옵션을 제공합니다. 두 플랫폼 모두 전용 용량에서 워크로드를 호스트하는 옵션도 제공합니다.
코드 기반 마이크로 서비스 배포
마이크로 서비스를 컨테이너화하는 대신 코드로 배포하려는 경우 Azure Functions를 사용할 수 있습니다. 자세한 내용은 Functions에서 지원하는 프로그래밍 및 스크립팅 언어 목록을 참조하세요. 다른 언어로 개발하는 마이크로 서비스의 경우 Functions에서 사용자 지정 처리기를 구현하거나 애플리케이션 컨테이너화를 고려할 수 있습니다.
GPU 모델 사용
예를 들어 기계 학습 작업을 실행하기 위해 마이크로 서비스에 GPU 용량이 필요한 경우 플랫폼에 대해 Container Apps 또는 AKS(Azure Kubernetes Service)를 선택하는 것이 좋습니다. AKS는 Azure에서 모든 GPU 모델을 사용할 수 있으며 Container Apps는 선택할 GPU 모델의 하위 집합을 제공합니다.
서비스 오케스트레이터 사용
오케스트레이터는 서비스 집합 배포 및 관리와 관련된 작업을 처리합니다. 이러한 작업에는 노드에 서비스 배치, 서비스 상태 모니터링, 비정상 서비스 다시 시작, 서비스 인스턴스 사이에서 네트워크 트래픽 부하 조정, 서비스 검색, 서비스 인스턴스 수의 규모 조정, 구성 업데이트 적용이 포함됩니다. 인기 있는 오케스트레이터에는 Kubernetes, Azure Service Fabric, DC/OS 및 Docker Swarm이 포함됩니다.
Azure 플랫폼에서 다음 옵션을 고려합니다.
AKS(Azure Kubernetes Service)는 관리되는 Kubernetes 서비스입니다. AKS는 Kubernetes를 프로비전하고 Kubernetes API 엔드포인트를 노출하고, Kubernetes 컨트롤 플레인을 호스트 및 관리하고, 자동화된 업그레이드, 자동화된 패치, 자동 크기 조정 및 기타 관리 작업을 수행합니다. AKS는 Kubernetes API에 대한 직접 액세스를 제공합니다.
Container Apps 는 컨테이너 오케스트레이션 및 기타 관리 작업의 복잡성을 추상화하는 Kubernetes 기반의 관리 서비스입니다. Container Apps는 Kubernetes의 기능을 제공하면서 서버리스 환경에서 컨테이너화된 애플리케이션 및 마이크로 서비스의 배포 및 관리를 간소화합니다. Container Apps는 Kubernetes API에 직접 액세스할 필요가 없는 시나리오에 적합합니다.
Service Fabric은 마이크로 서비스를 패키징, 배포 및 관리하기 위한 분산 시스템 플랫폼입니다. 마이크로 서비스를 컨테이너, 이진 실행 파일 또는 Reliable Services로 Service Fabric에 배포할 수 있습니다. Reliable Services 프로그래밍 모델을 사용하여 서비스는 Service Fabric 프로그래밍 API를 직접 사용하여 시스템을 쿼리하고, 상태를 보고하고, 구성 및 코드 변경에 대한 알림을 받고, 다른 서비스를 검색할 수 있습니다.
Azure Red Hat OpenShift를 사용하여 완전 관리형 OpenShift 클러스터를 배포합니다. Azure Red Hat OpenShift는 Kubernetes를 확장합니다. Azure Red Hat OpenShift는 Red Hat 및 Microsoft에서 공동으로 엔지니어링, 운영 및 지원됩니다.
Docker Enterprise Edition과 같은 다른 옵션은 Azure의 클라우드 컴퓨팅 환경에서 실행할 수 있습니다. Azure Marketplace에서 배포 템플릿을 찾을 수 있습니다.
Kubernetes API 사용
컴퓨팅 옵션을 선택할 때 Kubernetes API에 대한 액세스는 종종 결정 요소입니다. AKS는 Kubernetes API에 대한 직접 액세스를 제공하지만 Container Apps는 그렇지 않습니다. Container Apps는 Kubernetes의 복잡성을 숨기고 컨테이너 배포 환경을 간소화합니다. Kubernetes API와 직접 상호 작용하도록 마이크로 서비스 배포를 디자인하는 경우 AKS가 적합한 선택일 수 있습니다.
기타 의사 결정 요소
마이크로 서비스 컴퓨팅 플랫폼 선택에 영향을 주는 다른 요인이 있을 수 있습니다. 이러한 요인에는 조직 내에서 사용할 수 있는 서비스 메시 옵션, 플랫폼 확장성 및 기술 집합이 포함됩니다.
고려 사항
이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.
안정성
안정성은 애플리케이션이 고객에 대한 약속을 충족할 수 있도록 합니다. 자세한 내용은 안정성에 대한 디자인 검토 검사 목록을 참조하세요.
안정성의 핵심 핵심 요소 중 하나는 복원력입니다. 복원력의 목표는 오류가 발생한 후 워크로드를 완전히 작동하는 상태로 되돌리는 것입니다.
Azure Functions를 마이크로 서비스 컴퓨팅 플랫폼으로 선택하는 경우 영역 중복 구성에서 Functions Premium 계획 또는 Azure 앱 Service 계획을 배포하는 것이 좋습니다. 자세한 내용은 함수의 안정성을 참조 하세요.
AKS를 마이크로 서비스 컴퓨팅 플랫폼으로 선택하는 경우 가용성 영역을 사용하는 AKS 클러스터를 배포하고, Azure Kubernetes 클러스터에 표준 또는 프리미엄 계층을 사용하고, 최소 Pod 및 노드 수를 늘려 마이크로 서비스 안정성을 향상시킬 수 있습니다. 자세한 내용은 AKS에 대한 배포 및 클러스터 안정성 모범 사례를 참조 하세요.
컨테이너 앱을 마이크로 서비스 컴퓨팅 플랫폼으로 선택하는 경우 가용성 영역을 사용하여 안정성을 향상시킬 수 있습니다. 자세한 내용은 Container Apps의 안정성을 참조 하세요.
보안
우수한 보안은 중요한 데이터 및 시스템에 대한 고의적인 공격과 악용을 방어합니다. 자세한 내용은 보안성에 대한 디자인 검토 검사 목록을 참조하세요.
마이크로 서비스를 배포하기 위해 컴퓨팅 플랫폼으로 Azure Functions를 선택하는 경우 Azure Functions 보안 원칙도 마이크로 서비스에 적용됩니다.
AKS를 컴퓨팅 플랫폼으로 선택하여 마이크로 서비스를 배포하는 경우 AKS 보안 기준 아키텍처 는 컴퓨팅 플랫폼을 보호하기 위한 지침을 제공합니다. AKS의 마이크로 서비스 보안에 대한 모범 사례는 고급 AKS 마이크로 서비스 아키텍처를 참조 하세요.
마이크로 서비스를 배포하기 위해 컴퓨팅 플랫폼으로 Container Apps를 선택하는 경우 보안 모범 사례에 대한 Container Apps의 보안 기준을 참조하세요.
비용 최적화
비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화를 위한 디자인 검토 검사 목록을 참조하세요.
오케스트레이터를 사용하는 경우 클러스터에서 실행되는 가상 머신에 대한 비용을 지불합니다. 서버리스 애플리케이션을 사용하는 경우 사용하는 실제 컴퓨팅 리소스에 대해서만 비용을 지불합니다. 두 경우 모두 스토리지, 데이터베이스 및 메시징 서비스와 같은 추가 서비스의 비용을 고려해야 합니다.
Azure Functions, Container Apps 및 AKS는 자동 크기 조정 옵션을 제공합니다. Container Apps 및 Functions는 비용이 소비를 기반으로 하며 0일 수 있는 서버리스 플랫폼을 제공합니다. AKS는 전용 컴퓨팅 옵션만 제공합니다.
마이크로 서비스를 배포할 컴퓨팅 플랫폼으로 AKS를 선택하는 경우 비용 최적화 모범 사례를 이해해야 합니다. 자세한 내용은 Azure Kubernetes Service에서 비용 최적화를 참조 하세요.
마이크로 서비스 컴퓨팅 플랫폼으로 Container Apps를 선택하는 경우 다양한 청구 모델을 이해하고 워크로드 요구 사항에 따라 마이크로 서비스에 대한 배포 모델을 결정해야 합니다. 자세한 내용은 Container Apps의 청구를 참조 하세요.
마이크로 서비스 컴퓨팅 플랫폼으로 Azure Functions를 선택하는 경우 다양한 청구 모델을 이해하고 워크로드 요구 사항에 따라 Functions 계획을 결정해야 합니다. 자세한 내용은 사용량 기반 비용 예측 및 Azure Functions 계획 세부 정보를 참조하세요.
운영 효율성
운영 우수성은 애플리케이션을 배포하고 프로덕션에서 계속 실행하는 운영 프로세스를 다룹니다. 자세한 내용은 Operational Excellence에 대한 디자인 검토 검사 목록을 참조하세요.
Terraform, Bicep 및 기타 스크립팅 언어를 사용하여 이 문서에서 설명하는 모든 마이크로 서비스 컴퓨팅 선택을 자동화된 방식으로 배포할 수 있습니다. Application Insights, Azure Monitor 및 기타 모니터링 솔루션을 사용하여 이러한 컴퓨팅 플랫폼 및 마이크로 서비스를 모니터링할 수 있습니다.
오케스트레이터 접근 방식과 서버리스 방식 중에서 선택할 때 다음 요소를 고려합니다.
유연성 및 제어: 오케스트레이터를 사용하면 서비스와 클러스터의 구성 및 관리를 제어할 수 있습니다. 절개는 더 복잡합니다. 서버리스 아키텍처를 사용하면 이러한 세부 사항이 추상화되기 때문에 제어를 어느 정도 포기해야 합니다.
이식성: Kubernetes, DC/OS, Docker Swarm 및 Service Fabric을 포함하여 이 문서에 나열된 모든 오케스트레이터는 온-프레미스 또는 여러 퍼블릭 클라우드에서 실행할 수 있습니다.
애플리케이션 통합: 많은 소규모 독립 함수를 조정, 배포 및 관리해야 하기 때문에 서버리스 아키텍처를 사용하는 복잡한 애플리케이션을 빌드하는 것은 어려울 수 있습니다. Azure의 한 가지 옵션은 Azure Logic Apps를 사용하여 Azure 함수 집합을 조정하는 것입니다. 이 방법의 예제는 Logic Apps와 통합되는 함수 만들기를 참조 하세요.