이번 글에서는 Azure Computing에 관련된 전반적인 서비스에 대해 기술해 보고자 한다.
전체 서비스에 대한 글을 보려면 : [MS Azure] - [MS Azure] 기초지식 : Azure 제공 서비스- 카테고리별
1. Azure Virtual Machine
2. Virtual Machine Scale Set
- Azure Batch
3. Azure Container Instances
4. Azure Kubernetes Service
5. Azure App Service - PaaS
6. Azure Functions - Serverless Computing
7. Azure Logic Apps - Serverless Computing
8. Window Virtual Desktop
Azure Virtual Machine
Virtual Machine Scale Set
Azure Batch
Azure Container Instances
Azure Kubernetes Service
Azure App Service - PaaS
App Service를 사용하면 인프라를 관리할 필요 없이 원하는 프로그래밍 언어로 웹앱, 백그라운드 작업, 모바일 백 엔드 및 RESTful API를 빌드하고 호스트 할 수 있으며 자동 확장 기능과 고가용성을 제공한다. App Service는 Windows 및 Linux를 지원하며, GitHub, Azure DevOps 또는 Git 리포지토리에서 자동화된 배포를 사용하여 지속적인 배포 모델을 지원한다.
이 PaaS(Platform as a Service) 환경을 사용하면 Azure가 웹 애플리케이션을 실행하고 스케일링하기 위한 인프라를 처리하는 동안 사용자는 웹 사이트 및 API 논리에 초점을 맞출 수 있다.
선택한 App Service 요금제에 따라 요청을 처리하는 동안 앱에서 사용하는 Azure 컴퓨팅 리소스에 대한 요금을 지급한다. App Service 요금제에 따라 호스트에 사용된 하드웨어의 양이 결정된다. 예를 들어 요금제에 따라 전용 또는 공유 하드웨어인지 여부 및 호스트용으로 예약된 메모리의 양이 결정된다. 작고 트래픽이 적은 사이트를 호스트 하는 데 사용할 수 있는 ‘무료’ 요금제도 있다.
Azure App Service는 웹에 액세스할 수 있는 App hosting시 결정해야 하는 대부분 인프라 관련 사항을 처리한다.
- 배포와 관리 기능이 플랫폼에 통합된다.
- 엔드포인트에 보안이 설정된다.
- 높은 트래픽 부하를 처리하기 위해 사이트를 빠르게 스케일링 가능하다.
- 기본 제공 부하 분산 및 Traffic Manager가 고가용성을 제공한다.
이러한 모든 앱 스타일은 동일한 인프라에 호스트되고 이러한 이점을 공유한다. 이와 같은 유연성으로 App Service는 웹 기반 애플리케이션을 호스트 하는 데 적합하다.
App Service 유형
1) Web App
App Service는 ASP.NET, ASP.NET Core, Java, Ruby, Node.js, PHP 또는 Python을 사용하여 웹앱 호스트가 전체 지원된다. Windows 또는 Linux를 호스트 운영 체제로 선택할 수 있다.
2) API App
웹 사이트를 호스트하는 것처럼 원하는 언어 및 프레임워크를 사용하여 REST 기반 웹 API를 빌드할 수 있습니다. 전체 Swagger 지원과 함께 Azure Marketplace에서 API를 패키지 및 게시하는 기능을 사용할 수 있다. 생성된 앱은 HTTP 또는 HTTPS 기반 클라이언트에서 사용 가능하다.
3) WebJobs
WebJobs 기능을 사용하여 웹앱, API 앱 또는 모바일 앱과 동일한 콘텍스트에서 프로그램(. exe, Java, PHP, Python 또는 Node.js) 또는 스크립트(. cmd,. bat, PowerShell 또는 Bash)를 실행할 수 있다. 프로그램과 스크립트는 Trigger를 통해 예약하거나 실행할 수 있다. WebJobs는 종종 애플리케이션 로직의 일부로 백그라운드 작업을 실행하는 데 사용된다.
4) Mobile App
App Service의 Mobile Apps 기능을 사용하여 iOS 및 Android 앱의 백 엔드를 빠르게 빌드할 수 있다. Azure Portal에서 몇 번만 클릭하면 다음이 수행가능하다.
- 클라우드 기반 SQL 데이터베이스에 모바일 앱 데이터를 저장.
- MSA, Google, Twitter 및 Facebook과 같은 일반적인 소셜 공급 기업에 대해 고객을 인증.
- 푸시 알림을 보냄
- C# 또는 Node.js에서 사용자 지정 백 엔드 논리를 실행
모바일 앱의 경우 네이티브 iOS/Android, Xamarin 및 React 네이티브 앱을 위한 SDK 지원이 제공된다.
Azure Functions - Serverless Computing
애플리케이션 로직이 이벤트 기반임으로 작동하는 경우. 즉, 긴 시간 동안 애플리케이션이 특정 입력을 기다린 다음에야 처리를 수행하는 경우 비용을 줄이기 위해 애플리케이션이 입력을 기다리는 시간에 요금을 지급하지 않을 방안을 고려하고 있다면 적합한 서비스가 Azure Functions이다.
‘서버리스’ 컴퓨팅은 서버, 인프라 및 운영 체제의 추상화라고 볼 수 있다. Azure에서는 서버리스 컴퓨팅을 통해 서버 인프라 관리 및 수요에 따른 리소스 할당 및 할당 해제를 처리한다. 인프라는 Azure 가 자동으로 관리하며(크기 조정, 성능 자동관리) 사용자의 책임이 아니다. 사용하는 리소스에 대해서만 요금이 청구되고 용량을 예약할 필요도 없다. 즉, 사용한 만큼만 요금이 청구되기 때문에 그리고 인프라를 관리하는 부담이 적어지기 때문에 고객 입장에서는 효율적인 애플리케이션 운영이 가능한 것이다.
서비리스 컴퓨팅에 관한 더 자세한 설명은 아래 포스팅을 참조하기 바란다.
[Cloud] - [Cloud] Virtual Machine vs Serverless Computing vs Container
기본 플랫폼이나 인프라가 아닌, 서비스를 실행하는 코드에 관해서만 관심이 있는 경우에 Azure Functions를 사용하는 것이 이상적이다. Azure Functions는 주로 REST 요청을 통한 이벤트, 타이머 또는 다른 Azure 서비스로부터 받은 메시지에 대한 응답으로 작업을 수행해야 하는 경우, 그리고 해당 작업을 수초 이내에 빠르게 완료할 수 있는 경우에 주로 사용됩니다.
Azure Functions는 수요에 따라 자동으로 스케일링되므로 사용자 입장에서 수요가 가변적일 때 좋은 선택지이다. 예를 들어 배달 차량을 모니터링하는 데 사용되는 IoT 설루션으로부터 메시지를 받는 기능을 사용하는 경우에 업무시간 중에 받은 데이터의 양이 업무 시간 외인 경우보다 많다. 이 경우 사용양에 따라 요금을 과금하기 때문에 Azure Functions을 사용하는 것이 비용적인 측면에서 나은 선택이라 할 수 있다.
Virtual Machine 방식을 사용하면 Virtual Machine 이 사용하지 않는 상태인 동안에도 비용이 발생한다. Azure Functions를 사용하면 Azure는 함수가 trigger 될 때 코드를 실행하고 함수가 완료될 때 자동으로 리소스를 할당 해제한다. 이 모델에서는 함수가 실행되는 동안 사용되는 CPU 시간에 대한 요금만 부과된다.
Azure Functions는 상태 비저장 또는 상태 저장 중 하나일 수 있다. 함수는 상태 비저장(기본값)인 경우 이벤트에 응답할 때마다 다시 시작되는 것처럼 동작한다. 함수가 상태 저장(Durable Functions라고 함)인 경우 이전 작업을 추적하기 위해 콘텍스트가 함수를 통해 전달된다.
Azure Functions는 서버리스 컴퓨팅의 주요 구성 요소이다. 또한 모든 형식의 코드를 실행하는 일반적인 컴퓨팅 플랫폼이다. 개발자 앱을 변경해야 하는 경우에는 서버리스가 아닌 환경에서 프로젝트를 배포할 수 있습니다. 이 유연성을 통해 스케일링을 관리하고, 가상 네트워크에서 실행하고, 함수를 완전히 격리할 수 있다.
Azure Logic Apps - Serverless Computing
Logic Apps은 Function과 유사하다. 둘 다 이벤트를 기반으로 logic를 Trigger 할 수 있다. Functions가 코드를 실행하는 경우 Logic Apps은 비즈니스 시나리오를 자동화하도록 설계되고 미리 정의된 논리 블록에서 빌드된 ‘work flow’를 실행한다. Logic Apps 좀 더 넓은 범위의 함수 실행 과정이라 할 수 있다.
모든 Azure Logic Apps 워크플로는 특정 이벤트가 발생하거나 사용 가능한 새 데이터가 특정 기준을 충족할 때 실행되는 Trigger를 통해 시작된다. Work load가 주기적으로 실행되는 빈도를 개발자가 지정할 수 있도록 많은 Trigger가 기본적인 일정 예약 기능을 제공한다. Trigger가 실행될 때마다 Logic Apps 엔진은 workflopw의 작업을 실행하는 Logic Apps Instance를 만든다. 또한 이러한 작업에는 조건부 명령문, 전환 명령문, 루프, 분기 등의 데이터 변환 및 흐름 컨트롤이 포함될 수 있다.
Azure Portal 또는 Visual Studio에서 Visual Designer를 사용하여 Logic Apps workflow를 만든다. workflow는 알려진 워크플로 스키마인 JSON 파일로 실행된다.
Azure는 다양한 서비스와 상호 작용하는 200개가 넘는 다양한 커넥터 및 처리 블록을 제공한다. 조작해야 하는 서비스가 포함되지 않은 경우 custom커넥터 및 워크플로 단계를 빌드할 수도 있습니다. 그런 다음, Visual Designer를 사용하여 커넥터와 블록을 함께 연결한다. workflow를 통해 데이터를 전달하여 대부분의 경우 코드를 작성하지 않고 사용자 지정 처리를 수행한다.
예를 들어 티켓이 Zendesk에 도착하는 경우를 살펴보자.
- Cognitive Services를 통해 메시지의 의도를 검색한다.
- SharePoint에서 문제를 추적하는 항목을 만든다
- 고객이 데이터베이스에 없는 경우 Dynamics 365 CRM 시스템에 고객을 추가한다.
- 추가 작업 메일을 보내 해당 요청을 확인한다.
모든 관련 작업을 Visual Designer에서 디자인할 수 있으므로 논리 흐름을 쉽게 확인할 수 있다. 따라서 비즈니스 분석가 역할에 적합하다.
Azure Functions vs Azure Logic Apps
- Functions를 사용하는 경우 각 단계를 완료하는 코드를 작성합니다.
- Logic Apps를 사용하는 경우 GUI를 사용하여 작업과 다른 작업과 어떻게 연관되는지를 정의합니다.
Functions | Logic Apps | |
시스템 상태 | 일반적으로 Stateless 이지만 Durable Functions가 상태를 제공 | 상태 저장.Stateful. |
개발 | 코드 중심(명령적)Code-first (imperative) | 디자이너 중심(선언적) Designer-first (declarative). |
연결 | 약 12개의 기본 제공 바인딩 형식. 사용자 지정 바인딩에 대한 코드를 작성 | 대규모의 커넥터 컬렉션. B2B 시나리오를 위한 엔터프라이즈 통합 팩. 사용자 지정 커넥터를 빌드 |
작업 | Each activity is an Azure function. Write code for activity functions. | Large collection of ready-made actions. |
모니터링 | Azure Application Insights. | Azure Portal, Log Analytics. |
관리 | REST API, Visual Studio. | Azure Portal, REST API, PowerShell, Visual Studio. |
실행 컨텍스트 | Can run locally or in the cloud. | Runs only in the cloud. |
Window Virtual Desktop
보통은 새 팀에 필요한 모든 개발 도구를 갖춘 여러 대의 새 컴퓨터를 설정해야 한다. 그런 다음, 전국에 있는 각 개발자에게 해당 컴퓨터를 배송해야 한다. 각각의 컴퓨터를 조달, 설정 및 배송하는 데 드는 시간에 따라 막대한 비용이 든다. 또한 모든 신규 개발자는 Windows, Android 및 macOS 등 여러 운영 체제를 실행하는 고유한 컴퓨팅 디바이스를 보유하고 있다. 원격 작업자의 배포 프로세스를 신속하게 진행하는 방법을 찾으려고 합니다. 또한 관리 비용을 최소한으로 유지하려고 합니다. 이 점에서 Windows Virtual Desktop이 좋은 해결책이 될 수 있다.
Azure의 Windows Virtual Desktop은 클라우드에서 실행되는 데스크톱 및 애플리케이션 가상화 서비스이다. 이를 통해 사용자는 모든 위치에서 클라우드 호스트 버전의 Windows를 사용할 수 있다. Windows Virtual Desktop은 Windows, Mac, iOS, Android 및 Linux 같은 여러 디바이스에서 작동 가능하다. 원격 데스크톱 및 앱에 액세스 하는 데 사용할 수 있는 앱에서 작동한다. 또한 대부분의 최신 브라우저를 사용하여 Windows Virtual Desktop 호스트 환경에 액세스 가능하다.
Reference
출처 1 : azure.microsoft.com/en-ca/services/virtual-machine-scale-sets/
출처 2 : docs.microsoft.com/ko-kr/learn/modules/azure-compute-fundamentals/
출처 3 : docs.microsoft.com/ko-kr/learn/modules/serverless-fundamentals/
출처 4 : docs.microsoft.com/ko-kr/azure/virtual-desktop/
출처 5 : docs.microsoft.com/en-us/azure/app-service/
출처 6 : azure.microsoft.com/en-ca/product-categories/compute/
출처 7 : docs.microsoft.com/ko-kr/azure/azure-functions/
내용이 도움이 되셨다면 블로그 구독하기 부탁드리겠습니다.
* 이 글의 모든 저작권은 aliceintr에 있으며 무단 배포 및 사용은 자제해 주시기 바랍니다. *
'MS Azure > Cloud Computing' 카테고리의 다른 글
[Azure Computing] Azure App Service 와 Azure App service Plan (0) | 2021.02.10 |
---|---|
[Azure Computing] Azure Kubernetes Service (0) | 2021.01.24 |
[Azure Computing] Virtual Machine Scale Sets (0) | 2021.01.24 |