새소식

자격증/Azure

MS Learn 파트 2-1 :: Azure 컴퓨팅 서비스 살펴보기 (AZ-900)

  • -

학습 목표

  • Azure Virtual Machines
  • Azure App Service
  • Azure Container Instances
  • Azure Kubernetes Service
  • Azure Functions
  • Azure Virtual Desktop

제가 생각하는 이번 파트의 목표

  • Azure 컴퓨팅 서비스에는 무엇들이 있는지
  • 각 컴퓨팅 서비스들이 IaaS, PaaS, SaaS 중 어디에 속하는지
  • 어떤 경우에 어떤 서비스를 이용하는게 적합한지 이해

1. Azure 컴퓨팅 서비스 개요

Azure 컴퓨팅: 클라우드 기반 애플리케이션을 실행하기 위한 주문형 컴퓨팅 서비스
디스크, 프로세서, 메모리, 네트워킹 및 운영 체제와 같은 컴퓨팅 리소스를 제공

컴퓨팅 서비스 종류

  • Virtual Machine
  • Virtual Machine scale sets
  • container 및 k8s
  • App service
  • Function(serverless) => aws에서는 람다라 불리는 그것

Virtual Machine

  • 가상 머신은 물리적 컴퓨터의 소프트웨어 에뮬레이션
  • VM에는 가상 프로세서, 메모리, 스토리지 및 네트워킹 리소스가 포함
  • Azure Virtual Machine을 사용해 VM 생성 가능
  • IaaS
  • 운영체제 및 환경을 완전히 제어하는 경우 VM 선택하는게 좋음

Virtual Machine scale sets

  • 동일한 VM set을 배포 및 관리하는데 사용할 수 있는 컴퓨팅 리소스
  • 모든 VM은 동일하게 구성
  • 자동 크기 조정 지원
  • VM의 사전 프로비저닝 불필요
  • Azure desired state configuration(DSC) extension handler를 이용할 수 있음

Container 및 k8s(쿠버네티스)

  • container instance 및 Azure k8s service는 container 배포, 관리하는데 사용할 수 있는 컴퓨팅 리소스
  • 단일 가상 머신 호스트에서 컨테이너화된 애플리케이션의 여러 인스턴스를 실행 가능

App service

  • Azure App Service를 사용하면 모든 플랫폼에서 실행되는 엔터프라이즈급 웹, 모바일 및 API 앱을 신속하게 빌드, 배포 및 스케일링
  • PaaS 제공
  • Azure Functions를 찾을 수 있는 Azure의 창

Function

  • 기본 플랫폼이나 인프라가 아닌, 서비스를 실행하는 코드에 관해서만 관심이 있는 경우에 이상적
  • 주로 REST 요청을 통한 이벤트, 타이머 또는 다른 Azure 서비스로부터 받은 메시지에 대한 응답으로 작업을 수행해야 하는 경우, 그리고 해당 작업을 수초 이내에 빠르게 완료할 수 있는 경우에 주로 사용

2.Azure Virtual Machines를 사용하는 경우 결정

다음에 VM을 사용하면 좋습니다

  • OS(운영 체제)에 대한 완전한 제어 필요
  • 사용자 지정 소프트웨어 실행하는 기능.
  • 사용자 지정 호스팅 구성을 사용해야 하는 경우.

Azure Batch

Azure Batch를 사용하여 수십, 수백 또는 수천 개의 가상 머신으로 스케일링함으로써 대규모 병렬 및 고성능 컴퓨팅(HPC) 일괄 작업을 수행할 수 있습니다.

작업을 실행할 준비가 된 경우, Batch에서 다음 작업을 수행합니다.

  • 컴퓨팅 VM 풀을 시작합니다.
  • 애플리케이션 및 준비 데이터를 설치합니다.
  • 사용자의 여러 작업을 포함하는 작업을 실행합니다.
  • 오류를 식별합니다.
  • 작업을 큐에 다시 놓습니다.
  • 작업이 완료되면 풀을 스케일 다운합니다.

3. Azure App Service를 사용하는 경우 결정

Azure App Service(PaaS) 사용

  • 인프라를 관리할 필요 없이 원하는 프로그래밍 언어로 웹앱, 백그라운드 작업, 모바일 백 엔드 및 RESTful API를 빌드하고 호스트할 수 있
  • 자동 확장 기능과 고가용성을 제공
  • Windows 및 linux 지원
  • GitHub, Azure DevOps 또는 Git 리포지토리에서 CI/CD 가능
  • 웹 기반 애플리케이션 호스트에 좋음

비용

  • App Service 요금제에 따라 요청을 처리하는 동안 앱에서 사용하는 Azure 컴퓨팅 리소스에 대한 요금을 지급
  • App Service 요금제에 따라 호스트에 사용된 하드웨어의 양이 결정(하드웨어 종류 또는 메모리 양 등)

유형

  • 웹앱

App Service는 ASP.NET, ASP.NET Core, Java, Ruby, Node.js, PHP 또는 Python을 사용하여 웹앱 호스트가 전체 지원됩니다. Windows 또는 Linux를 호스트 운영 체제로 선택할 수 있습니다.

  • API 앱

웹 사이트를 호스트하는 것처럼 원하는 언어 및 프레임워크를 사용하여 REST 기반 웹 API를 빌드할 수 있습니다. 전체 Swagger 지원과 함께 Azure Marketplace에서 API를 패키지 및 게시하는 기능을 사용할 수 있습니다. 생성된 앱은 HTTP 또는 HTTPS 기반 클라이언트에서 사용할 수 있습니다.

  • WebJobs

WebJobs 기능을 사용하여 웹앱, API 앱 또는 모바일 앱과 동일한 컨텍스트에서 프로그램(.exe, Java, PHP, Python 또는 Node.js) 또는 스크립트(.cmd, .bat, PowerShell 또는 Bash)를 실행할 수 있습니다. 프로그램과 스크립트는 트리거를 통해 예약하거나 실행할 수 있습니다. WebJobs는 종종 애플리케이션 로직의 일부로 백그라운드 작업을 실행하는 데 사용됩니다.

  • 모바일 앱

App Service의 Mobile Apps 기능을 사용하여 iOS 및 Android 앱의 백 엔드를 빠르게 빌드할 수 있습니다. Azure Portal에서 몇 번만 클릭하면 다음을 수행할 수 있습니다.

  • 클라우드 기반 SQL 데이터베이스에 모바일 앱 데이터를 저장합니다.
  • MSA, Google, Twitter 및 Facebook과 같은 일반적인 소셜 공급 기업에 대해 고객을 인증합니다.
  • 푸시 알림을 보냅니다.
  • C# 또는 Node.js에서 사용자 지정 백 엔드 논리를 실행합니다.

모바일 앱의 경우 네이티브 iOS/Android, Xamarin 및 React 네이티브 앱을 위한 SDK 지원이 제공됩니다.

인프라 관리 사항 처리

  • 배포와 관리 기능이 플랫폼에 통합됩니다.
  • 엔드포인트에 보안이 설정됩니다.
  • 높은 트래픽 부하를 처리하기 위해 사이트를 빠르게 스케일링할 수 있습니다.
  • 기본 제공 부하 분산 및 Traffic Manager가 고가용성을 제공합니다.

4. Azure Container Instances 또는 Azure Kubernetes Service를 사용하는 경우 결정

단일 호스트 컴퓨터에서 애플리케이션의 여러 인스턴스를 실행하려는 경우에 컨테이너를 사용하는 것이 좋음

컨테이너

  • 가상화 환경
  • 단일 물리적 호스트에서 여러 가상 머신을 실행하는 것과 매우 유사
  • 가상 머신과 달리 컨테이너에 대한 운영 체제를 관리하지 않음
  • 가장 많이 사용되는 컨테이너 엔진은 docker

VM과 컨테이너 비교

VM은 하나의 운영체제만 사용 가능

⇒ 서로 다른 런타임이 필요한 응용 프로그램을 제대로 실행하려면 여러개의 VM이 필요할 수 있음

VM은 전체 컴퓨터를 에뮬레이팅

⇒ 스냅샷을 찍거나 컴퓨터를 시작하는 작업이 느린 편

컨테이너는 앱만 실행하기 때문에 빠름

컨테이너: 단일 앱과 종속성을 번들로 묶은 다음 이를 한 단위로 하여 컨테이너 호스트에 배포(컨테이너라이징). 도커를 이용하는 경우 도커라이징이라고도 함

VM은 하드웨어를 가상화 컨테이너는 OS를 가상화

컨테이너 관리

  • 컨테이너 오케스트레이션을 통해 관리 ex. 쿠버네티스
  • 관리 방법은 두 가지
  • Azure Container Instances 및 AKS(Azure Kubernetes Service)입니다.

Azure Container Instance

  • 가상 머신을 관리하거나 추가 서비스를 채택하지 않고도 Azure에서 컨테이너를 실행하는 가장 빠르고 간단한 방법
  • PaaS

AKS

  • 많은 컨테이너를 자동화, 관리 및 상호 작용하는 작업을 오케스트레이션
  • 분산형 아키텍처와 대량의 컨테이너가 있는 완벽한 컨테이너용 오케스트레이션 서비스

k8s

  • 컨테이너기반 워크로드 관리 툴
  • pod의 배치 관리
  • 스케일링
  • 업데이트 배포를 지그재그로 할 수 있음(k8s and staggering update deployment)
  • k8s storage and networking management
  • k8s에서 실행되는 프로그램의 데이터 저장을 위해 Azure Storage or Azure Cosmos DB 를 일반적으로 사용
  • pod을 외부에 공개, pod 복제본 간의 LB, 네트워크 격리 및 보안 정책 설정
  • k8s API를 통해 기능 확장 가능
  • SaaS 서비스를 빌드할 수 있는 플랫폼

마이크로 서비스

  • 규모가 작고 잘 정의된 범위의 웹 서비스, 다른 웹서비스와는 느슨하게 연결 됨
  • 각 팀에서 해당 작업에 적합한 도구 선택 가능 ⇒ 팀 별로 서비스 빌드 및 배포 테스트 가능
  • 팀에서 하나의 서비스에 집중 가능
  • 마이크로 서비스는 잘 정의된 API를 사용하여 서로 통신 가능

다음의 경우에 적합

  • High release velocity
  • Highly scalable
  • Rich domain
  • small development team

5. Azure Functions 사용하는 경우 결정

zure Functions는 이벤트 기반의 애플리케이션의 경우에 적합

서버리스 컴퓨팅

  • 서버의 추상화: 서버리스 컴퓨팅은 실행하는 서버를 추상화. 서버 인스턴스를 명시적으로 예약하지 않음. 플랫폼이 해당 기능 관리. 각 함수 실행은 다른 컴퓨팅 인스턴스에서 실행 가능. 고가용성으로 실행되는 코드 배포 가능
  • 이벤트 기반 크기 조정: 예정된 이벤트에 응답하는 워크로드에 매우 적합. 이벤트에는 다음 트리거 포함(타이머, HTTP, Queue, etc....). 전체 앱을 짜는대신 개발자는 함수 작성, 플랫폼은 자동으로 함수 실행을 예약하고 예정된 이벤트의 비율에 따라 컴퓨팅 인스턴스의 수를 조정.
  • 마이크로 청구: 월간 또는 연간 요금같은게 아니라 코드가 실행되는 시간에 대해서만 비용을 지불. 활성 함수 실행이 발생하지 않는 경우 요금이 부과되지 않음. (코드가 하루에 한 번 2분 동안 실행되는 경우 실행 1회, 컴퓨팅 시간2분에 대한 요금만 부과 됨)

Azure의 서버리스 컴퓨팅 구현

  • Azure Functions: 거의 모든 최신 언어로 코드 실행 가능

플랫폼이나 인프라가 아닌 서비스를 실행하는 코드에 관해서만 관심이 있는 경우에 이상적인 서비스

  • Azure Logic Apps: 논리 앱은 웹 기반 디자이너에서 설계, 코드를 작성하지 않고도 Azure 서비스에 의해 trigger된 logic 실행 가능

서버리스 관리의 장점

  1. 인프라 관리가 없음 운영 체제 설치 같은 관리 작업에 집중할 필요가 없음. 고가용성으로 실행
  2. 확장성.
  3. 사용한 만큼만 비용을 지급. 사용하지 않은 리소스에 대한 비용은 부담하지 않음

Function은 상태 비저장(default) 또는 상태 저장 중 하나일 수 있음.

Fucntions vs Logic App

Functions

Logic Apps

시스템 상태
일반적으로 상태 비저장이지만 Durable Functions가 상태를 제공합니다.
상태 저장입니다.

개발
코드 중심(명령적)입니다.
디자이너 중심(선언적)입니다.

연결
약 12개의 기본 제공 바인딩 형식. 사용자 지정 바인딩에 대한 코드를 작성합니다.
대규모의 커넥터 컬렉션. B2B 시나리오를 위한 엔터프라이즈 통합 팩입니다. 사용자 지정 커넥터를 빌드합니다.

작업
각 활동은 Azure 함수입니다. 활동 함수에 대한 코드를 작성합니다.
즉시 사용 가능한 작업의 대규모 컬렉션.

모니터링
Azure Application Insights.
Azure Portal, Log Analytics.

관리
REST API, Visual Studio.
Azure Portal, REST API, PowerShell, Visual Studio.

실행 컨텍스트
로컬로 또는 클라우드에서 실행할 수 있습니다.
클라우드에서만 실행합니다.

6. Azure Virtual Desktop을 사용하는 경우

Azure Virtual Desktop?

  • 클라우드에서 실행되는 데스크톱 및 애플리케이션 가상화 서비스
  • windows, mac, ios, android, linux 등의 여러 디바이스에서 작동
  • 대부분의 최신 브라우저를 사용하여 Azure Viertual Desktop 호스트 환경에 액세스 가능

Azure virtual Desktop 사용이유 및 특징

  • 최적의 사용자 환경 제공
  • 보안강화: RBAC를 사용자에게 할당하여 데이터 액세스 보호, 데이터와 앱이 로컬 하드웨어에서 분리.
  • 간소화된 관리: Azure 서비스로 Azure 관리자에 익숙. Azure monitor를 사용하여 모니터링.
  • VM 호스트 풀에서 사용자의 부하를 분산하는 옵션을 제공. 들어오는 수요가 지정된 임계값을 초과하는 경우 추가 VM을 자동으로 프로비저닝
  • 단일 VM에서 여러 명의 동시 사용자를 지원하는 유일한 Winodws 클라이언트 기반 운영 체제인 Windows 10 Enterprise 다중 세션을 사용

비용 절감

  • MS 365 라이선스가 있는 경우 추가 비용 없이 Azure Virtual Desktop 사용 가능. Virtual Desktop에서 사용하는 Azure 리소스에 대한 비용만 지불
  • Azure Reserved Virtual Machine Instances를 구매하면 종량제 가격보다 최대 72% 비용절감 가능
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.