IT/AZURE

[AZ-104] 5. Azure 컴퓨팅 리소스 배포 및 관리

FRONTI 2024. 11. 27. 17:43

5. Azure 컴퓨팅 리소스 배포 및 관리

  • Azure Resource Manager(ARM)
  • Bicep
  • Azure 가상 머신
  • Azure Bastion / SSH / RDP / Azure Cloudshell
  • 가용성집합
  • 장애 도메인(Fault Domain) / 업데이트 도메인(Update Domain)
  • 가용성 영역
  • 수직 스케일링 / 수평 스케일링
  • Azure VMSS
  • Azure 컨테이너 프로비저닝
  • Azure App service

Azure Resource Manager (ARM)

**Azure Resource Manager(ARM)**은 Microsoft Azure에서 제공하는 배포 및 관리 서비스로, Azure 리소스(가상 머신, 스토리지 계정, 네트워크 등)를 효율적으로 생성, 업데이트, 삭제, 관리할 수 있는 중앙 관리 계층입니다. ARM은 **코드형 인프라(Infrastructure as Code, IaC)**를 지원하여 리소스 배포와 관리를 자동화하고 일관성을 유지할 수 있도록 돕습니다.

ARM의 주요 특징

  1. 일관된 관리 계층:
    • Azure 포털, CLI, PowerShell, REST API 등 어떤 도구를 사용하든 ARM을 통해 요청이 처리됩니다.
    • 모든 도구에서 동일한 결과와 기능을 제공합니다.
  2. 리소스 그룹(Resource Group):
    • 리소스를 논리적으로 묶어 관리할 수 있는 컨테이너입니다.
    • 리소스 그룹 단위로 배포, 액세스 제어, 비용 관리 등을 수행할 수 있습니다.
  3. ARM 템플릿:
    • JSON 형식의 선언적 템플릿으로 인프라를 정의하고 배포합니다.
    • 템플릿을 사용하면 동일한 구성을 반복적으로 배포할 수 있습니다.
  4. RBAC(Role-Based Access Control):
    • Azure RBAC와 통합되어 리소스에 대한 접근 권한을 세부적으로 제어할 수 있습니다.
  5. 태그(Tag) 및 정책(Policy):
    • 태그를 사용해 리소스를 분류하고 비용을 추적할 수 있습니다.
    • 정책을 통해 리소스가 조직의 규정을 준수하도록 강제할 수 있습니다.

ARM의 주요 이점

  • 자동화 및 일관성: ARM 템플릿을 사용해 인프라를 자동으로 배포하고 일관된 상태를 유지.
  • 의존성 관리: 리소스 간 종속성을 정의하여 올바른 순서로 배포.
  • 재사용 가능성: 하나의 템플릿으로 여러 환경(개발, 테스트, 운영)에 동일한 구성을 배포 가능.
  • 보안 및 감사: 액세스 제어와 감사 로그를 통해 보안을 강화하고 변경 사항 추적 가능.

Bicep

Bicep은 Azure Resource Manager(ARM) 템플릿의 복잡한 JSON 구문을 대체하기 위해 개발된 간결하고 사용하기 쉬운 선언적 언어입니다. Bicep은 ARM 템플릿과 동일한 기능을 제공하면서도 더 직관적인 문법으로 작성이 간편합니다.

Bicep의 주요 특징

  1. 간단한 문법:
    • JSON 기반의 ARM 템플릿보다 코드가 간결하고 가독성이 높습니다.
    • 예: Bicep 파일은 YAML과 유사한 간단한 구문을 사용합니다.
  2. ARM과 완벽히 호환:
    • Bicep 파일은 배포 시 자동으로 ARM 템플릿(JSON)으로 변환됩니다.
    • 기존 ARM 템플릿과 함께 사용할 수 있습니다.
  3. 모듈화 지원:
    • Bicep은 모듈화를 지원하여 코드를 재사용 가능하게 만듭니다.
    • 예: 네트워크 설정, 가상 머신 구성 등을 모듈로 분리하여 필요할 때마다 호출 가능.
  4. 도구 통합:
    • Visual Studio Code 확장을 통해 코드 작성 시 자동 완성 및 오류 검사를 지원합니다.
  5. 오케스트레이션 지원:
    • 복잡한 작업 순서를 관리하며 병렬 배포를 통해 속도를 최적화합니다.

Bicep vs ARM 템플릿

특징ARM 템플릿(JSON)Bicep
문법 복잡성 복잡하고 긴 JSON 코드 간결하고 직관적인 문법
가독성 및 유지보수성 낮음 높음
모듈화 지원 제한적 완벽히 지원
변환 필요 여부 없음 배포 시 자동으로 ARM 템플릿으로 변환
도구 지원 Visual Studio Code 등 Visual Studio Code 확장 제공

ARM과 Bicep의 관계

  • Bicep은 ARM 템플릿의 상위 레벨 언어로, 사용자 친화적인 방식으로 인프라를 정의하도록 설계되었습니다.
  • Bicep 파일은 배포 시 ARM 템플릿(JSON)으로 변환되므로 기존 ARM 기반 워크플로와 완벽히 호환됩니다.
  • 간단히 말해, Bicep은 ARM 템플릿을 더 쉽게 작성하고 관리하기 위한 도구입니다.

시험 예제 스타일로 설명

예제 1:

"Azure Resource Manager(ARM)의 주요 기능 중 하나는 무엇입니까?"
  • 정답: 리소스를 선언적 템플릿(JSON)을 사용해 반복적으로 배포하고 일관성을 유지할 수 있다.

예제 2:

"Bicep과 ARM 템플릿의 차이점은 무엇입니까?"
  • 정답: Bicep은 ARM 템플릿보다 간결한 문법을 제공하며, 모듈화를 지원하여 코드 재사용성이 높다.

예제 3:

"Bicep 파일은 어떻게 Azure에 배포됩니까?"
  • 정답: Bicep 파일은 배포 시 자동으로 ARM 템플릿(JSON)으로 변환되어 Azure에 적용된다.

결론

  • **ARM(Azure Resource Manager)**는 Azure 리소스를 중앙에서 관리하는 강력한 도구로, 선언적 방식으로 인프라를 정의하고 일관된 상태를 유지합니다.
  • Bicep은 ARM 템플릿을 더 쉽게 작성하도록 설계된 언어로, 복잡한 JSON 대신 간단한 문법을 제공합니다.
  • 시험 준비 시에는 다음 사항에 익숙해지세요:
    1. ARM의 주요 개념(리소스 그룹, RBAC 등).
    2. ARM 템플릿과 Bicep의 차이점 및 사용 사례.
    3. 선언적 인프라 정의 방식과 모듈화 활용법.

**Azure 가상 머신(Azure Virtual Machine, VM)**은 Microsoft Azure에서 제공하는 클라우드 기반의 가상 컴퓨터입니다. 사용자는 Azure VM을 통해 필요한 컴퓨팅 환경(운영 체제, CPU, 메모리, 스토리지 등)을 설정하고 애플리케이션을 실행할 수 있습니다. Azure VM은 온프레미스 환경의 물리적 서버를 대체하거나 보완하며, 유연성과 확장성을 제공합니다.

Azure 가상 머신의 주요 특징

  1. 유연한 구성:
    • 사용자는 VM의 크기(예: CPU 코어 수, 메모리 용량), 운영 체제(Windows, Linux), 네트워크 설정 등을 자유롭게 선택할 수 있습니다.
  2. 확장성:
    • 필요에 따라 VM의 크기를 조정하거나 여러 VM을 추가하여 워크로드를 처리할 수 있습니다.
  3. 고가용성:
    • Azure는 장애 발생 시에도 VM이 지속적으로 실행될 수 있도록 가용성 집합(Availability Set) 및 **가용성 영역(Availability Zone)**을 제공합니다.
  4. 다양한 사용 사례:
    • 애플리케이션 실행, 데이터베이스 호스팅, 개발 및 테스트 환경 구축 등 다양한 용도로 사용 가능합니다.
  5. 비용 효율성:
    • 사용한 만큼만 비용을 지불하는 종량제(Pay-as-you-go) 모델로 운영됩니다.
    • 예약 인스턴스를 구매하면 장기적으로 비용을 절감할 수 있습니다.

Azure 가상 머신의 구성 요소

  1. 운영 체제(OS):
    • Windows Server 또는 다양한 Linux 배포판(Ubuntu, CentOS 등)을 선택하여 설치할 수 있습니다.
  2. 크기(Size):
    • VM의 크기는 CPU 코어 수, 메모리 크기, 디스크 IOPS 등을 기준으로 선택합니다.
    • 예: B 시리즈(저비용), D 시리즈(일반 용도), F 시리즈(고성능 컴퓨팅).
  3. 디스크(Storage):
    • OS 디스크: 운영 체제가 설치된 기본 디스크.
    • 데이터 디스크: 추가 데이터를 저장하기 위한 디스크.
    • Azure는 표준 HDD, 표준 SSD, 프리미엄 SSD 등 다양한 디스크 옵션을 제공합니다.
  4. 네트워크(Networking):
    • 가상 네트워크(VNet): VM이 통신할 수 있는 네트워크 환경.
    • 공용 IP 주소: 외부에서 VM에 접근하기 위한 주소.
    • 네트워크 보안 그룹(NSG): VM에 대한 트래픽을 제어하는 방화벽 역할.
  5. 확장 집합(Scale Set):
    • 동일한 구성을 가진 여러 VM을 자동으로 생성하고 관리하여 확장성을 제공합니다.
  6. 가용성 옵션:
    • 가용성 집합(Availability Set): 동일한 데이터 센터 내에서 VM을 여러 장애 도메인(Fault Domain)과 업데이트 도메인(Update Domain)에 분산 배치.
    • 가용성 영역(Availability Zone): 동일한 지역 내 서로 다른 물리적 데이터 센터에 VM을 배치하여 고가용성 보장.

Azure 가상 머신의 주요 사용 사례

  1. 애플리케이션 실행:
    • 웹 서버(IIS, Apache) 또는 애플리케이션 서버를 호스팅.
  2. 데이터베이스 호스팅:
    • SQL Server, MySQL 등 데이터베이스 시스템 실행.
  3. 개발 및 테스트 환경:
    • 개발자들이 새로운 애플리케이션이나 기능을 테스트하기 위한 환경 제공.
  4. 고성능 컴퓨팅(HPC):
    • 과학적 계산, 빅데이터 분석 등 높은 컴퓨팅 파워가 필요한 작업 수행.
  5. 백업 및 복구:
    • 온프레미스 서버의 백업 또는 재해 복구(DR) 솔루션으로 활용.

Azure 가상 머신 생성 방법

1. Azure 포털에서 생성

  1. Azure 포털에 로그인.
  2. "가상 머신" 메뉴 선택 후 "생성".
  3. 기본 설정 입력:
    • 구독 및 리소스 그룹 선택.
    • 가상 머신 이름 지정.
    • 운영 체제 및 크기 선택.
  4. 인증 방법 설정 (암호 또는 SSH 키).
  5. 네트워크 설정 구성 (VNet, 서브넷 등).
  6. 검토 후 "만들기" 클릭.

2. Azure CLI 사용

bash
az vm create \ --resource-group MyResourceGroup \ --name MyVM \ --image UbuntuLTS \ --size Standard_B2s \ --admin-username azureuser \ --generate-ssh-keys

3. ARM 템플릿 또는 Bicep 사용

  • 선언적 템플릿으로 가상 머신 배포를 자동화할 수 있습니다.

시험 예제 스타일로 설명

예제 1:

"Azure 가상 머신에서 운영 체제를 설치하려고 합니다. 어떤 디스크 유형이 기본적으로 사용됩니까?"

정답: OS 디스크

  • 운영 체제가 설치된 기본 디스크입니다.

예제 2:

"Azure 가상 머신의 고가용성을 보장하기 위해 동일한 데이터 센터 내에서 여러 장애 도메인(Fault Domain)에 분산 배치하려고 합니다. 어떤 옵션을 사용해야 합니까?"

정답: 가용성 집합(Availability Set)

예제 3:

"Azure 가상 머신의 네트워크 트래픽을 제어하려면 어떤 도구를 사용해야 합니까?"

정답: 네트워크 보안 그룹(NSG)

Azure 가상 머신과 관련된 개념 연결

  1. 스토리지 옵션 연결 (LRS/ZRS):
    • VM의 디스크는 Azure Storage를 기반으로 하며, LRS(로컬 중복 스토리지)나 ZRS(영역 중복 스토리지)를 선택해 복제 방식을 결정할 수 있습니다.
  2. ARM 및 Bicep 연결:
    • ARM 템플릿이나 Bicep 파일을 사용해 여러 VM을 자동으로 배포하고 일관성을 유지할 수 있습니다.
  3. SAS 토큰 연결:
    • SAS 토큰을 통해 Blob Storage에 저장된 ISO 파일로 커스텀 이미지를 만들어 VM에 설치 가능.

결론

Azure 가상 머신은 클라우드에서 컴퓨팅 리소스를 유연하게 제공하며, 다양한 애플리케이션과 워크로드를 지원합니다. 시험 준비 시에는 다음 내용을 숙지하세요:

  1. Azure VM의 주요 구성 요소(OS 디스크, 네트워크 등).
  2. 고가용성을 위한 옵션(가용성 집합 vs 가용성 영역).
  3. CLI/포털/템플릿을 통한 배포 방법 차이점 이해.
  4. 비용 최적화 방법(예: 예약 인스턴스).

Azure 가상 머신(VM)을 연결하는 방법에는 Azure Bastion, SSH, RDP, 그리고 Azure Cloud Shell이 있습니다. 각각의 개념과 사용 목적을 간단히 설명하고, 차이점도 함께 정리해 드릴게요.

1. Azure Bastion

  • 개념:
    • Azure Bastion은 가상 머신에 안전하게 연결할 수 있는 관리형 서비스입니다.
    • VM에 직접 공용 IP 주소를 부여하지 않고도 Azure 포털을 통해 웹 브라우저 기반으로 RDP(Windows)나 SSH(Linux) 연결을 제공합니다.
  • 특징:
    • 공용 IP 주소 없이도 VM에 접근 가능.
    • 네트워크 보안 그룹(NSG)을 통해 외부 공격으로부터 보호.
    • 브라우저에서 바로 VM에 연결 가능(추가 소프트웨어 설치 불필요).
  • 사용 사례:
    • 보안이 중요한 환경에서 VM에 안전하게 접근해야 할 때.
    • 공용 인터넷을 통한 연결을 피하고 싶을 때.

2. SSH (Secure Shell)

  • 개념:
    • SSH는 Linux 기반 가상 머신에 연결하기 위한 암호화된 원격 접속 프로토콜입니다.
    • 터미널에서 명령어를 사용해 VM에 접속하고 관리할 수 있습니다.
  • 특징:
    • 암호 또는 SSH 키를 사용하여 인증.
    • CLI(Command-Line Interface)를 통해 VM 관리 가능.
    • SSH 클라이언트(예: PuTTY, OpenSSH)가 필요.
  • 사용 사례:
    • Linux VM을 원격으로 관리하거나 애플리케이션을 배포할 때.
    • 개발 및 테스트 환경에서 명령줄 작업이 필요한 경우.

3. RDP (Remote Desktop Protocol)

  • 개념:
    • RDP는 Windows 기반 가상 머신에 연결하기 위한 Microsoft의 원격 데스크톱 프로토콜입니다.
    • 원격으로 Windows GUI 환경에 접속하여 작업할 수 있습니다.
  • 특징:
    • Windows 운영 체제를 사용하는 VM에 적합.
    • 원격 데스크톱 클라이언트(Windows 내장 RDP, macOS/리눅스용 클라이언트)가 필요.
    • 공용 IP 주소와 포트(기본적으로 TCP 포트 3389)가 필요.
  • 사용 사례:
    • Windows 서버를 관리하거나 GUI 기반 애플리케이션을 실행할 때.
    • 개발, 운영, 유지보수 작업 중 GUI 환경이 필요한 경우.

4. Azure Cloud Shell

  • 개념:
    • Azure Cloud Shell은 브라우저 기반의 명령줄 인터페이스로, Azure 리소스를 관리하기 위한 도구입니다.
    • Bash(Linux 스타일) 또는 PowerShell(Windows 스타일) 환경에서 Azure 리소스를 관리할 수 있습니다.
  • 특징:
    • 브라우저에서 바로 실행 가능(추가 설치 불필요).
    • Azure CLI 및 PowerShell 명령어를 지원하며, 다양한 도구가 사전 설치됨.
    • 가상 머신뿐만 아니라 모든 Azure 리소스를 관리 가능.
  • 사용 사례:
    • 가벼운 작업이나 빠른 명령 실행이 필요한 경우.
    • 별도의 클라이언트를 설치하지 않고 Azure 리소스를 관리하고 싶을 때.

차이점 요약

방법주요 목적연결 방식사용 사례
Azure Bastion 안전한 브라우저 기반 RDP/SSH 웹 브라우저 보안 중심 환경에서 안전한 접근
SSH Linux VM에 암호화된 CLI 접속 SSH 클라이언트 Linux 서버 관리 및 배포
RDP Windows VM에 GUI 기반 원격 접속 원격 데스크톱 클라이언트 Windows 서버 GUI 환경에서 작업
Cloud Shell 브라우저 기반 CLI로 Azure 리소스 관리 웹 브라우저 빠른 명령 실행 및 간단한 작업

시험 예제 스타일로 설명

예제 1:

"Linux 기반 가상 머신에 터미널을 통해 암호화된 방식으로 접속하려면 어떤 방법을 사용해야 합니까?"

정답: SSH

예제 2:

"Windows 기반 가상 머신에 GUI 환경으로 접속하려면 어떤 프로토콜을 사용해야 합니까?"

정답: RDP

예제 3:

"VM에 공용 IP 주소 없이 안전하게 브라우저를 통해 연결하려면 어떤 서비스를 사용해야 합니까?"

정답: Azure Bastion

예제 4:

"추가 소프트웨어 설치 없이 브라우저에서 CLI를 사용해 Azure 리소스를 관리하려면 어떤 도구를 사용해야 합니까?"

정답: Azure Cloud Shell

결론

Azure에서는 다양한 방식으로 가상 머신(VM)에 연결할 수 있으며, 각각의 방법은 특정 목적과 환경에 따라 적합합니다:

  1. 보안 중심 → Azure Bastion
  2. Linux CLI 작업 → SSH
  3. Windows GUI 작업 → RDP
  4. 빠른 명령 실행 및 리소스 관리 → Azure Cloud Shell

**가용성 집합(Availability Set)**은 Azure에서 제공하는 고가용성을 보장하기 위한 기능으로, 가상 머신(VM)을 여러 장애 도메인(Fault Domain)과 업데이트 도메인(Update Domain)에 분산 배치하여 단일 장애로 인한 서비스 중단을 방지합니다. 이를 통해 애플리케이션의 가용성을 높이고 안정성을 확보할 수 있습니다.

왜 가용성 집합이 필요한가?

클라우드 환경에서도 데이터 센터의 하드웨어(서버, 네트워크, 전원 등)나 소프트웨어 업데이트로 인해 장애가 발생할 수 있습니다. 가용성 집합을 사용하면 다음과 같은 문제를 방지할 수 있습니다:

  1. 하드웨어 장애: 서버나 랙(Rack) 수준의 하드웨어 오류로 인한 서비스 중단.
  2. 소프트웨어 업데이트: Azure 플랫폼에서 VM을 업데이트하거나 유지보수 작업을 수행할 때 발생하는 잠재적인 중단.

가용성 집합의 작동 방식

1. 장애 도메인(Fault Domain):

  • 장애 도메인은 공유된 전원 공급 장치와 네트워크 스위치를 사용하는 물리적 하드웨어 그룹입니다.
  • 가용성 집합에 포함된 VM은 자동으로 여러 장애 도메인에 분산 배치됩니다.
  • 예: 하나의 장애 도메인에 문제가 발생해도 다른 장애 도메인의 VM은 영향을 받지 않습니다.

2. 업데이트 도메인(Update Domain):

  • 업데이트 도메인은 Azure가 소프트웨어 업데이트나 유지보수 작업을 수행할 때 동시에 재부팅되는 VM 그룹입니다.
  • 가용성 집합에 포함된 VM은 여러 업데이트 도메인에 분산 배치되므로, 한 번에 모든 VM이 재부팅되지 않습니다.
  • 기본적으로 5개의 업데이트 도메인이 제공되며, 필요에 따라 조정 가능합니다.

가용성 집합의 주요 특징

  1. 고가용성 보장:
    • 가용성 집합을 사용하면 SLA(Service Level Agreement)에서 보장하는 99.95% 가용성을 달성할 수 있습니다.
  2. 자동 분산 배치:
    • Azure는 가용성 집합 내 VM을 자동으로 여러 장애 도메인과 업데이트 도메인에 분산 배치합니다.
  3. 비용 절감:
    • 가용성 집합은 추가 비용 없이 사용할 수 있으며, 고가용성을 보장함으로써 서비스 중단으로 인한 손실을 줄일 수 있습니다.
  4. 로드 밸런서와 통합 가능:
    • Azure Load Balancer와 함께 사용하여 트래픽을 여러 VM으로 분산시킬 수 있습니다.

사용 사례

  1. 웹 애플리케이션:
    • 여러 웹 서버를 가용성 집합에 배포하여 한 서버에 문제가 생겨도 다른 서버가 요청을 처리하도록 설정.
  2. 데이터베이스 서버:
    • 데이터베이스 서버를 가용성 집합에 배포하여 장애나 업데이트로 인한 데이터베이스 중단 방지.
  3. 엔터프라이즈 애플리케이션:
    • 중요한 비즈니스 애플리케이션이 항상 실행되도록 고가용성을 보장.

가용성 집합 구성 방법

1. Azure 포털에서 생성

  1. Azure 포털에 로그인.
  2. "가상 머신" 메뉴로 이동 후 새 VM 생성.
  3. "고급" 탭에서 "가용성 옵션"에서 "가용성 집합" 선택.
  4. 새 가용성 집합 생성 또는 기존 가용성 집합 선택.

2. Azure CLI 사용

bash
# 가용성 집합 생성 az vm availability-set create \ --name MyAvailabilitySet \ --resource-group MyResourceGroup \ --platform-fault-domain-count 2 \ --platform-update-domain-count 5 # 가상 머신 생성 시 가용성 집합 연결 az vm create \ --resource-group MyResourceGroup \ --name MyVM \ --availability-set MyAvailabilitySet \ --image UbuntuLTS

시험 예제 스타일로 설명

예제 1:

"Azure에서 고가용성을 보장하기 위해 VM을 여러 장애 도메인과 업데이트 도메인에 분산 배치하려고 합니다. 어떤 기능을 사용해야 합니까?"

정답: 가용성 집합(Availability Set)

예제 2:

"Azure 가상 머신이 포함된 가용성 집합은 몇 개의 장애 도메인(Fault Domain)과 업데이트 도메인(Update Domain)을 기본적으로 제공합니다?"

정답:

  • 기본적으로 최대 3개의 장애 도메인과 5개의 업데이트 도메인을 제공합니다.

예제 3:

"가용성 집합 내에서 동시에 재부팅되지 않도록 설계된 VM 그룹은 무엇입니까?"

정답: 업데이트 도메인(Update Domain)

LRS/ZRS와 연결

  • LRS(로컬 중복 스토리지)와 ZRS(영역 중복 스토리지)는 데이터를 복제하여 저장하는 방식이고, 가용성 집합은 VM 자체의 고가용성을 보장하는 방식입니다.
  • 예를 들어, LRS/ZRS는 데이터를 안전하게 보호하지만, VM이 실행 중이어야 애플리케이션이 정상 작동하므로, 두 개념은 상호 보완적입니다.

결론

Azure의 **가용성 집합(Availability Set)**은 고가용성이 중요한 애플리케이션에서 필수적인 기능입니다. 장애 및 업데이트로 인한 서비스 중단을 최소화하며, SLA에서 보장하는 높은 신뢰성을 제공합니다.시험 준비 시에는 다음 내용을 숙지하세요:

  1. 장애 도메인과 업데이트 도메인의 개념 및 역할.
  2. 가용성 집합의 구성 방법(Azure 포털 및 CLI).
  3. LRS/ZRS와 같은 데이터 복제 옵션과의 차이점.

Azure에서 말하는 **도메인(Domain)**은 우리가 흔히 웹사이트 주소에서 사용하는 "도메인"과는 다른 의미로, 리소스를 관리하거나 구성하는 논리적인 그룹 또는 범위를 뜻합니다. Azure의 **가용성 집합(Availability Set)**에서 나오는 **장애 도메인(Fault Domain)**과 **업데이트 도메인(Update Domain)**은 각각 특정한 역할과 의미를 가지고 있습니다. 이를 쉽게 설명해볼게요!

1. 장애 도메인(Fault Domain)

  • : 장애 도메인은 물리적인 하드웨어 그룹을 의미합니다.
    • 같은 전원 공급 장치나 네트워크 스위치를 사용하는 서버들을 하나의 "장애 도메인"으로 묶습니다.
    • 한 장애 도메인이 고장 나더라도 다른 장애 도메인의 서버는 영향을 받지 않도록 설계된 것입니다.
  • 쉽게 비유:
    • 아파트에 여러 동(빌딩)이 있다고 생각해보세요.
      • 한 동(빌딩)의 전기나 수도가 끊겨도 다른 동은 영향을 받지 않죠?
      • 여기서 각 동이 "장애 도메인"에 해당합니다.
  • Azure에서의 역할:
    • 가용성 집합에 포함된 VM은 자동으로 여러 장애 도메인에 분산 배치됩니다.
    • 예를 들어, VM 3개를 배포하면 각각 다른 장애 도메인(서버 랙)에 배치되어, 한 랙이 고장 나더라도 나머지 VM은 정상 작동합니다.

2. 업데이트 도메인(Update Domain)

  • : 업데이트 도메인은 Azure가 소프트웨어 업데이트나 유지보수 작업을 수행할 때 동시에 재부팅되는 VM 그룹을 의미합니다.
    • Azure는 한 번에 하나의 업데이트 도메인만 작업하므로, 나머지 업데이트 도메인의 VM은 계속 실행됩니다.
  • 쉽게 비유:
    • 학교에서 여러 반(클래스)이 있다고 생각해보세요.
      • 각 반이 순서대로 시험을 본다고 가정하면, 한 반이 시험을 보는 동안 다른 반은 수업을 계속 진행할 수 있죠.
      • 여기서 각 반이 "업데이트 도메인"에 해당합니다.
  • Azure에서의 역할:
    • 가용성 집합에 포함된 VM은 여러 업데이트 도메인에 분산 배치됩니다.
    • 예를 들어, VM 5개를 배포하면 기본적으로 각 VM이 서로 다른 업데이트 도메인에 배치되어, Azure가 소프트웨어 업데이트를 수행할 때 한 번에 모든 VM이 중단되지 않습니다.

장애 도메인 vs 업데이트 도메인의 차이

특징장애 도메인(Fault Domain)업데이트 도메인(Update Domain)
의미 물리적 하드웨어 그룹 (전원, 네트워크 공유) 소프트웨어 업데이트 시 동시에 재부팅되는 VM 그룹
목적 하드웨어 장애로부터 보호 소프트웨어 업데이트로 인한 중단 방지
예방 가능한 문제 전원 공급 문제, 네트워크 스위치 오류 Azure 플랫폼 업데이트로 인한 서비스 중단
분산 방식 동일 데이터 센터 내 물리적 서버 랙 간 분산 논리적으로 여러 그룹으로 나누어 순차적으로 작업 수행

시험 예제 스타일로 설명

예제 1:

"Azure 가용성 집합에서 장애 도메인은 무엇을 나타냅니까?"

정답:

  • 동일한 전원 공급 장치와 네트워크 스위치를 공유하는 물리적 하드웨어 그룹입니다.

예제 2:

"Azure 가용성 집합에서 소프트웨어 업데이트로 인해 동시에 재부팅되지 않도록 설계된 VM 그룹은 무엇입니까?"

정답:

  • 업데이트 도메인(Update Domain)

예제 3:

"VM을 가용성 집합에 배포할 때 Azure는 어떻게 장애와 업데이트를 방지합니까?"

정답:

  • VM을 여러 장애 도메인(Fault Domain)과 업데이트 도메인(Update Domain)에 분산 배치하여 하드웨어 오류 및 소프트웨어 업데이트로 인한 중단을 방지합니다.

결론

Azure에서 말하는 "도메인"은 리소스를 보호하거나 관리하기 위해 논리적으로 묶어둔 범위를 뜻합니다:

  1. 장애 도메인(Fault Domain): 물리적 하드웨어(전원, 네트워크 등)를 기준으로 리소스를 분산하여 하드웨어 장애로부터 보호.
  2. 업데이트 도메인(Update Domain): 소프트웨어 업데이트 시 서비스 중단을 방지하기 위해 리소스를 순차적으로 재부팅.

따라서 Azure 가용성 집합은 이러한 두 가지 개념을 활용해 고가용성을 보장합니다.


**가용성 영역(Availability Zone)**은 Azure에서 제공하는 고가용성을 보장하기 위한 물리적 데이터 센터의 분리된 그룹입니다. 동일한 Azure 지역(Region) 내에 있는 독립적인 데이터 센터로 구성되며, 각 가용성 영역은 별도의 전원 공급, 네트워크, 냉각 시스템을 갖추고 있어 한 데이터 센터에 장애가 발생하더라도 다른 가용성 영역에 영향을 주지 않습니다.

가용성 영역의 주요 특징

  1. 물리적 분리:
    • 동일한 지역(Region) 내에서 여러 가용성 영역(AZ)이 물리적으로 분리되어 있습니다.
    • 각 가용성 영역은 서로 독립적인 전원 공급 장치, 네트워크, 냉각 시스템을 사용합니다.
  2. 지역 내 고가용성 제공:
    • 가용성 영역은 지역 전체 장애를 대비하지는 않지만, 지역 내에서 데이터 센터 장애에 대한 복원력을 제공합니다.
    • SLA(Service Level Agreement)에서 99.99% 이상의 가용성을 보장합니다.
  3. 데이터 복제:
    • ZRS(Zone-Redundant Storage)와 같은 스토리지 옵션을 사용하면 데이터를 여러 가용성 영역에 복제하여 데이터 손실을 방지할 수 있습니다.
  4. 저지연 통신:
    • 동일한 지역 내에 있기 때문에 가용성 영역 간의 네트워크 지연 시간이 매우 낮습니다.

가용성 영역과 가용성 집합의 차이

특징가용성 집합(Availability Set)가용성 영역(Availability Zone)
복제 위치 동일한 데이터 센터 내의 장애 도메인(Fault Domain)에 분산 동일한 지역(Region) 내의 여러 독립적인 데이터 센터에 분산
보호 범위 데이터 센터 내 하드웨어 장애 데이터 센터 전체 장애
구현 방식 논리적 배치 물리적 배치
SLA (가용성 보장) 99.95% 99.99%

가용성 영역의 주요 사용 사례

  1. 고가용성이 필요한 애플리케이션:
    • 금융 서비스, 전자상거래 플랫폼 등 다운타임이 허용되지 않는 애플리케이션.
    • 예: 웹 서버와 데이터베이스 서버를 서로 다른 가용성 영역에 배치하여 장애 발생 시에도 서비스 지속 가능.
  2. 재해 복구 시나리오:
    • 한 데이터 센터에 문제가 생겨도 다른 가용성 영역에서 복구 가능.
    • 예: ZRS(Zone-Redundant Storage)를 사용해 데이터를 여러 가용성 영역에 복제.
  3. 로드 밸런싱:
    • Azure Load Balancer를 사용해 트래픽을 여러 가용성 영역으로 분산하여 성능과 안정성을 향상.

Azure에서 가용성 영역 설정 방법

1. Azure 포털에서 VM 생성 시

  1. Azure 포털에서 "가상 머신" 메뉴로 이동.
  2. 새 VM 생성 시 "고급" 탭에서 "가용성 옵션" 선택.
  3. "가용성 옵션"에서 "가용성 영역" 선택 후 특정 AZ(AZ1, AZ2 등) 지정.

2. Azure CLI 사용

bash
az vm create \ --resource-group MyResourceGroup \ --name MyVM \ --image UbuntuLTS \ --size Standard_B2s \ --zone 1 \ --admin-username azureuser \ --generate-ssh-keys
  • --zone 옵션으로 특정 가용성 영역 지정 가능.

시험 예제 스타일로 설명

예제 1:

"Azure 가상 머신(VM)을 물리적으로 분리된 데이터 센터에 배치하려면 어떤 기능을 사용해야 합니까?"

정답: 가용성 영역(Availability Zone)

예제 2:

"Azure 가상 머신이 포함된 가용성 집합은 동일한 데이터 센터 내에서만 작동합니다. 그러나 데이터 센터 전체 장애를 방지하려면 어떤 옵션을 선택해야 합니까?"

정답: 가용성 영역(Availability Zone)

예제 3:

"Azure Storage 데이터를 동일한 지역 내 여러 데이터 센터에 복제하려면 어떤 스토리지 옵션을 사용해야 합니까?"

정답: ZRS (Zone-Redundant Storage)

LRS/ZRS와 연결

  • LRS(로컬 중복 스토리지)는 단일 데이터 센터 내에서 데이터를 복제합니다.
  • ZRS(영역 중복 스토리지)는 데이터를 여러 가용성 영역(AZ)에 복제하여 한 데이터 센터 장애에도 데이터를 보호합니다.
  • 따라서, ZRS는 가용성 영역과 밀접하게 연관되어 있으며, 고가용성이 필요한 애플리케이션에 적합합니다.

결론

Azure의 **가용성 영역(Availability Zone)**은 물리적으로 독립된 데이터 센터 간의 분산 배치를 통해 고가용성과 안정성을 제공합니다. 특히 중요한 애플리케이션이나 재해 복구 시나리오에서 필수적인 기능입니다.시험 준비 시에는 다음 내용을 숙지하세요:

  1. 가용성 집합과의 차이점.
  2. SLA 및 보호 범위.
  3. ZRS와 같은 스토리지 옵션과의 연관 관계.

**수직 스케일링(Vertical Scaling)**과 **수평 스케일링(Horizontal Scaling)**은 시스템의 성능과 처리 능력을 확장하기 위한 두 가지 기본적인 방법입니다. 이 개념은 클라우드 컴퓨팅뿐만 아니라 서버나 데이터베이스 같은 IT 인프라 전반에서 사용됩니다. 아래에서 각각의 개념을 쉽게 설명하고, 차이점과 사용 사례를 정리해드릴게요.

1. 수직 스케일링(Vertical Scaling)

  • 정의:
    • 수직 스케일링은 기존의 리소스(서버, VM 등)의 성능을 업그레이드하여 처리 능력을 향상시키는 방식입니다.
    • 예를 들어, CPU 코어 수를 늘리거나 메모리(RAM)를 추가하는 식으로 기존 서버의 사양을 높이는 것입니다.
  • 특징:
    1. 단일 리소스의 성능 증가:
      • 기존 서버를 더 강력한 하드웨어로 업그레이드.
    2. 단순한 구조:
      • 애플리케이션 아키텍처 변경 없이 처리 능력을 향상시킬 수 있음.
    3. 한계 존재:
      • 하드웨어 업그레이드에는 물리적 한계가 있으며, 일정 수준 이상 확장하기 어렵습니다.
  • 예시:
    • Azure VM의 크기를 Standard_B2s에서 Standard_D4s_v3로 변경하여 더 많은 CPU와 RAM 제공.
    • 데이터베이스 서버에서 더 많은 메모리를 추가하여 쿼리 처리 속도 향상.

2. 수평 스케일링(Horizontal Scaling)

  • 정의:
    • 수평 스케일링은 서버나 VM을 추가로 배포하여 시스템의 처리 능력을 확장하는 방식입니다.
    • 하나의 리소스를 업그레이드하는 대신, 동일한 역할을 하는 여러 리소스를 병렬로 추가하는 방식입니다.
  • 특징:
    1. 리소스 추가:
      • 동일한 기능을 수행하는 서버나 VM을 추가로 배포.
    2. 확장성 우수:
      • 필요에 따라 무제한으로 리소스를 추가할 수 있어 대규모 워크로드 처리에 적합.
    3. 복잡한 관리 필요:
      • 로드 밸런싱(Load Balancer)과 같은 추가 구성 요소가 필요하며, 애플리케이션이 분산 환경에 적합하도록 설계되어야 함.
  • 예시:
    • Azure Virtual Machine Scale Set(VMSS)를 사용해 동일한 VM을 여러 대 배포하고 자동으로 트래픽 분산.
    • 웹 애플리케이션 서버를 여러 대 배포하고 Azure Load Balancer를 통해 요청 분산.

수직 스케일링 vs 수평 스케일링

특징수직 스케일링(Vertical Scaling)수평 스케일링(Horizontal Scaling)
방법 기존 리소스의 성능 업그레이드 동일한 리소스를 추가로 배포
확장성 한계 하드웨어 한계로 인해 제한적 필요에 따라 무제한 확장 가능
구현 복잡성 간단 (애플리케이션 수정 불필요) 복잡 (로드 밸런싱 및 분산 설계 필요)
비용 효율성 초기 비용은 낮지만 확장 시 비용 증가 대규모 워크로드에서 더 경제적
사용 사례 단일 서버 기반 애플리케이션 분산 환경이나 대규모 트래픽 처리
예시 (Azure) VM 크기 업그레이드 Virtual Machine Scale Set 또는 컨테이너 오토스케일

사용 사례

수직 스케일링:

  1. 데이터베이스 서버 업그레이드:
    • CPU와 RAM을 늘려 쿼리 처리 속도를 높임.
  2. 소규모 애플리케이션:
    • 단순히 서버 성능만 높여도 충분히 처리가 가능한 경우.

수평 스케일링:

  1. 웹 애플리케이션:
    • 다수의 사용자가 동시에 접속하는 경우 여러 서버를 배포하여 트래픽 분산.
  2. 빅데이터 처리:
    • 병렬 작업이 필요한 데이터 분석 및 머신 러닝 워크로드.

Azure에서의 구현 예시

수직 스케일링 (VM 크기 변경):

bash
az vm resize \ --resource-group MyResourceGroup \ --name MyVM \ --size Standard_D4s_v3
  • 기존 VM의 크기를 변경하여 더 많은 CPU와 메모리를 제공.

수평 스케일링 (VM Scale Set):

bash
az vmss create \ --resource-group MyResourceGroup \ --name MyScaleSet \ --image UbuntuLTS \ --upgrade-policy-mode automatic \ --instance-count 3
  • 동일한 구성을 가진 VM 세 대를 자동으로 생성하고 관리.

시험 예제 스타일로 설명

예제 1:

"Azure Virtual Machine의 CPU와 RAM을 늘려 성능을 향상시키려면 어떤 확장 방식을 사용해야 합니까?"

정답: 수직 스케일링(Vertical Scaling)

예제 2:

"대규모 트래픽을 처리하기 위해 동일한 역할을 하는 가상 머신(VM)을 여러 대 추가하려면 어떤 확장 방식을 사용해야 합니까?"

정답: 수평 스케일링(Horizontal Scaling)

예제 3:

"Azure Virtual Machine Scale Set(VMSS)는 어떤 유형의 확장을 지원합니까?"

정답: 수평 스케일링(Horizontal Scaling)

결론

  • 수직 스케일링(Vertical Scaling): 기존 리소스의 성능을 업그레이드하여 간단히 확장 가능하지만, 물리적 한계가 있음.
  • 수평 스케일링(Horizontal Scaling): 동일한 리소스를 여러 개 추가하여 대규모 워크로드를 처리할 수 있지만, 관리가 복잡할 수 있음.

시험 준비 시에는 두 개념의 차이점과 Azure에서 이를 구현하는 방법(VM 크기 변경, VM Scale Set 등)을 숙지하면 도움이 됩니다.


**Azure VMSS(Azure Virtual Machine Scale Set)**는 Azure에서 제공하는 자동화된 수평 스케일링(Horizontal Scaling) 서비스로, 동일한 구성을 가진 가상 머신(VM)을 여러 대 생성하고 관리할 수 있는 기능입니다. VMSS를 사용하면 애플리케이션의 워크로드 증가 또는 감소에 따라 자동으로 VM 인스턴스를 추가하거나 제거하여 고가용성과 확장성을 제공합니다.

Azure VMSS의 주요 특징

  1. 자동 스케일링(Auto Scaling):
    • 트래픽 부하나 CPU 사용량과 같은 메트릭을 기준으로 VM 인스턴스를 자동으로 추가하거나 제거합니다.
    • 예: CPU 사용량이 80%를 초과하면 VM을 추가하고, 30% 미만이면 VM을 제거.
  2. 동일한 구성:
    • 모든 VM은 동일한 이미지(운영 체제, 애플리케이션 설치 등)와 설정을 공유합니다.
    • 이를 통해 관리가 간소화되고 일관성이 유지됩니다.
  3. 고가용성 및 분산 배치:
    • VMSS는 기본적으로 여러 가용성 영역(Availability Zone)이나 가용성 집합(Availability Set)에 VM을 분산 배치하여 장애 복원력을 제공합니다.
  4. 로드 밸런싱 통합:
    • Azure Load Balancer 또는 Application Gateway와 통합하여 트래픽을 여러 VM 인스턴스로 분산시킬 수 있습니다.
  5. 유연한 크기 조정:
    • 수동 또는 자동으로 인스턴스 수를 조정할 수 있습니다.
    • 최소 및 최대 인스턴스 수를 설정하여 비용을 제어할 수도 있습니다.
  6. 다양한 운영 체제 지원:
    • Windows 및 Linux 기반 운영 체제를 모두 지원합니다.

VMSS의 주요 구성 요소

  1. 이미지(Image):
    • VMSS는 Azure Marketplace 이미지(예: Ubuntu, Windows Server 등)나 커스텀 이미지를 사용해 동일한 구성을 가진 VM을 생성합니다.
  2. 인스턴스 수:
    • 초기 생성 시 기본적으로 몇 개의 VM을 배포할지 설정합니다.
    • 이후 자동 스케일링 정책에 따라 인스턴스 수가 동적으로 변경됩니다.
  3. 자동 스케일링 정책:
    • CPU 사용률, 메모리 사용량, 네트워크 트래픽 등의 메트릭을 기반으로 스케일링 조건을 설정합니다.
  4. 부하 분산(Load Balancing):
    • Azure Load Balancer 또는 Application Gateway를 통해 트래픽을 모든 VM으로 균등하게 분산합니다.
  5. 업데이트 정책(Update Policy):
    • 롤링 업데이트: 기존 VM을 순차적으로 업데이트.
    • 자동 업데이트: 새로 생성된 VM에 최신 업데이트 적용.

VMSS의 주요 사용 사례

  1. 웹 애플리케이션 호스팅:
    • 대규모 트래픽을 처리하기 위해 웹 서버를 여러 대 배포하고 로드 밸런서를 통해 트래픽 분산.
  2. 빅데이터 처리:
    • 데이터 분석 작업이 증가하면 필요한 만큼의 컴퓨팅 리소스를 추가로 배포하여 작업 처리 속도 향상.
  3. 비즈니스 연속성 보장:
    • 장애 발생 시에도 다른 가용성 영역(AZ)의 VM이 서비스 지속 가능하도록 설계.
  4. 비용 최적화:
    • 워크로드가 적은 시간대에는 자동으로 인스턴스를 줄여 비용 절감.

Azure에서 VMSS 생성 방법

1. Azure 포털에서 생성

  1. Azure 포털에 로그인.
  2. "Virtual Machine Scale Set" 메뉴 선택 후 "생성".
  3. 기본 설정 입력:
    • 구독 및 리소스 그룹 선택.
    • 가상 머신 이미지(예: Ubuntu, Windows Server) 선택.
  4. 스케일링 정책 설정:
    • 최소 및 최대 인스턴스 수 지정.
    • 자동 스케일링 조건(CPU 사용률 등) 설정.
  5. 네트워킹 구성:
    • Azure Load Balancer와 연결하여 트래픽 분산 설정.
  6. 검토 후 "만들기" 클릭.

2. Azure CLI 사용

bash
az vmss create \ --resource-group MyResourceGroup \ --name MyScaleSet \ --image UbuntuLTS \ --upgrade-policy-mode automatic \ --instance-count 2 \ --admin-username azureuser \ --generate-ssh-keys
  • --instance-count: 초기 인스턴스 수 설정.
  • --upgrade-policy-mode: 업데이트 정책 설정(예: automatic).

시험 예제 스타일로 설명

예제 1:

"Azure Virtual Machine Scale Set(VMSS)의 주요 이점은 무엇입니까?"

정답:

  • 동일한 구성을 가진 여러 VM을 자동으로 생성하고 관리하며, 워크로드에 따라 수평적으로 확장하거나 축소할 수 있습니다.

예제 2:

"VMSS에서 CPU 사용량이 80%를 초과하면 인스턴스를 추가하고, 30% 미만이면 인스턴스를 줄이도록 설정하려면 어떤 기능을 사용해야 합니까?"

정답: 자동 스케일링(Auto Scaling)

예제 3:

"VMSS에서 트래픽을 모든 가상 머신(VM)으로 균등하게 분산하려면 어떤 도구를 사용해야 합니까?"

정답: Azure Load Balancer

VMSS와 관련된 개념 연결

  1. 수평 스케일링(Horizontal Scaling):
    • VMSS는 동일한 구성을 가진 여러 VM을 추가로 배포하는 방식으로 수평 스케일링을 지원합니다.
  2. 가용성 영역(Availability Zone):
    • VMSS는 여러 가용성 영역에 걸쳐 배포되어 데이터 센터 장애에도 서비스 지속성을 보장합니다.
  3. 스토리지 옵션(ZRS):
    • ZRS(Zone-Redundant Storage)를 활용하면 데이터를 여러 가용성 영역에 복제하여 데이터 손실 방지와 함께 사용할 수 있습니다.

결론

Azure Virtual Machine Scale Set(VMSS)는 클라우드 환경에서 고가용성과 확장성을 제공하는 강력한 도구입니다. 특히 대규모 웹 애플리케이션이나 빅데이터 처리와 같은 상황에서 유연하게 리소스를 관리할 수 있습니다.시험 준비 시에는 다음 내용을 숙지하세요:

  1. 자동 스케일링 정책 설정 방법(CPU, 메모리 기준).
  2. 로드 밸런서를 통한 트래픽 분산 방식.
  3. 가용성 집합과의 차이점(수평 확장 vs 단일 서버 고가용성).

Azure 포털에서 **컨테이너(Container)**를 프로비저닝하고 관리하는 것은 Azure의 다양한 컨테이너 서비스를 활용하여 애플리케이션을 실행하고 배포하는 과정입니다. Azure는 컨테이너화된 애플리케이션을 쉽게 실행하고 관리할 수 있도록 여러 서비스를 제공합니다. 여기서는 Azure 포털을 사용해 컨테이너를 프로비저닝(생성 및 배포)하고 관리하는 방법과 관련된 주요 개념을 설명하겠습니다.

Azure에서 컨테이너를 실행하고 관리하는 주요 서비스

  1. Azure Container Instances (ACI):
    • Azure에서 컨테이너를 가장 간단하게 실행할 수 있는 서비스.
    • 가상 머신이나 클러스터 설정 없이 단일 컨테이너를 빠르게 실행 가능.
    • 서버리스(Serverless) 방식으로 동작하며, 사용한 만큼만 비용 지불.
  2. Azure Kubernetes Service (AKS):
    • Kubernetes 기반으로 컨테이너 오케스트레이션을 지원하는 완전 관리형 서비스.
    • 대규모 애플리케이션을 배포하고, 여러 컨테이너 간의 네트워크 및 스케일링을 자동화.
    • 복잡한 워크로드와 다중 컨테이너 애플리케이션에 적합.
  3. Azure App Service (컨테이너 지원):
    • 웹 애플리케이션을 컨테이너로 패키징하여 배포 가능.
    • 기본적인 웹 애플리케이션 호스팅과 함께 컨테이너 이미지를 지원.
  4. Azure Red Hat OpenShift (ARO):
    • OpenShift 기반의 컨테이너 플랫폼으로, Kubernetes와 유사하지만 더 많은 자동화 및 개발자 친화적인 기능 제공.

Azure 포털에서 컨테이너 프로비저닝 및 관리

1. Azure Container Instances (ACI)

ACI는 단일 컨테이너를 빠르게 실행하려는 경우 적합합니다.

  • 프로비저닝 방법:
    1. Azure 포털에 로그인.
    2. "Container Instances" 선택 후 "Create" 클릭.
    3. 다음 정보를 입력:
      • 구독 및 리소스 그룹: 사용할 리소스 그룹 선택.
      • 컨테이너 이름: 실행할 컨테이너 이름 지정.
      • 이미지 소스: Docker Hub, Azure Container Registry(ACR), 또는 커스텀 이미지 선택.
      • CPU/메모리: 컨테이너가 사용할 리소스 크기 설정.
      • 네트워킹: 공용 IP 주소를 활성화하여 인터넷에서 접근 가능하도록 설정.
    4. 검토 후 "Create" 클릭.
  • 관리 방법:
    • ACI 대시보드에서 실행 중인 컨테이너 상태 확인.
    • 로그 보기 및 명령 실행(예: kubectl exec와 유사한 작업).

2. Azure Kubernetes Service (AKS)

AKS는 대규모 애플리케이션과 여러 컨테이너를 관리할 때 적합합니다.

  • 프로비저닝 방법:
    1. Azure 포털에 로그인.
    2. "Kubernetes Services" 선택 후 "Create" 클릭.
    3. 다음 정보를 입력:
      • 클러스터 이름: Kubernetes 클러스터 이름 지정.
      • 노드 풀(Node Pool): 클러스터 내 노드 수 및 크기 설정(예: VM 크기).
      • 컨테이너 레지스트리: Docker Hub 또는 Azure Container Registry(ACR) 연결.
      • 네트워킹: 기본 네트워킹 또는 고급 네트워킹 옵션 선택(VNet 통합 등).
    4. 검토 후 "Create" 클릭.
  • 관리 방법:
    • Azure 포털에서 클러스터 상태 확인 및 노드 추가/제거.
    • Kubernetes CLI(kubectl)를 사용해 Pod, Deployment 등을 관리.

3. Azure App Service (컨테이너 지원)

웹 애플리케이션을 컨테이너로 배포하려는 경우 적합합니다.

  • 프로비저닝 방법:
    1. Azure 포털에 로그인.
    2. "App Services" 선택 후 "Create" 클릭.
    3. 다음 정보를 입력:
      • 앱 이름(App Name): 웹 애플리케이션 이름 지정.
      • 컨테이너 이미지 소스: Docker Hub, ACR, 또는 커스텀 이미지 선택.
      • 배포 슬롯(Deployment Slot): 프로덕션/개발 환경 구분 가능.
      • 스케일링 옵션: 기본적으로 자동 스케일링 지원(Azure Monitor와 통합 가능).
    4. 검토 후 "Create" 클릭.
  • 관리 방법:
    • App Service 대시보드에서 배포 상태 확인.
    • 트래픽 모니터링 및 스케일링 정책 설정.

시험 예제 스타일로 설명

예제 1:

"Azure에서 단일 컨테이너를 빠르게 실행하고 싶습니다. 가장 적합한 서비스는 무엇입니까?"

정답: Azure Container Instances (ACI)

예제 2:

"대규모 애플리케이션을 여러 컨테이너로 구성하고, 이를 자동으로 관리하려면 어떤 서비스를 사용해야 합니까?"

정답: Azure Kubernetes Service (AKS)

예제 3:

"웹 애플리케이션을 Docker 이미지를 사용해 배포하려고 합니다. 가장 적합한 서비스는 무엇입니까?"

정답: Azure App Service (컨테이너 지원)

ACI와 AKS의 비교

특징ACI (Azure Container Instances)AKS (Azure Kubernetes Service)
사용 사례 단순한 단일 컨테이너 실행 복잡한 다중 컨테이너 오케스트레이션
확장성 제한적 고도로 확장 가능
관리 필요성 거의 없음 클러스터 관리 필요
비용 효율성 소규모 워크로드에 적합 대규모 워크로드에 적합
복잡성 수준 낮음 높음

결론

Azure 포털에서 컨테이너를 프로비저닝하고 관리하는 방법은 사용 사례에 따라 다릅니다:

  1. 단일 컨테이너 → ACI
  2. 복잡한 다중 컨테이너 → AKS
  3. 웹 애플리케이션 → App Service

시험 준비 시에는 각 서비스의 사용 사례와 특징을 숙지하고, CLI나 포털에서 설정하는 과정을 연습하면 도움이 됩니다.


Azure App Service는 Microsoft Azure에서 제공하는 **완전 관리형 PaaS(Platform as a Service)**로, 웹 애플리케이션, API, 모바일 백엔드 등을 빠르고 쉽게 배포하고 실행할 수 있는 서비스입니다. 개발자는 서버나 인프라를 직접 관리할 필요 없이 애플리케이션을 실행하고 확장할 수 있으며, 다양한 언어와 프레임워크를 지원합니다.

Azure App Service의 주요 특징

  1. 다양한 애플리케이션 유형 지원:
    • 웹 애플리케이션: ASP.NET, Node.js, Python, Java 등으로 작성된 웹 앱.
    • API 앱: RESTful API를 쉽게 배포하고 관리.
    • 모바일 앱 백엔드: 모바일 애플리케이션의 백엔드 서비스를 제공.
    • 컨테이너 기반 앱: Docker 컨테이너를 사용해 애플리케이션 배포 가능.
  2. 자동화된 관리:
    • Azure App Service는 인프라 관리(서버 패치, 운영 체제 업데이트 등)를 자동으로 처리합니다.
    • 개발자는 애플리케이션 코드에만 집중할 수 있습니다.
  3. 자동 확장 및 로드 밸런싱:
    • 트래픽 증가에 따라 자동으로 리소스를 확장하거나 축소할 수 있습니다.
    • Azure Load Balancer와 통합되어 트래픽을 여러 인스턴스로 분산.
  4. CI/CD 통합:
    • GitHub, Azure DevOps, Bitbucket 등과 연동하여 지속적인 통합(CI) 및 배포(CD) 파이프라인을 쉽게 구축 가능.
  5. 보안 및 인증:
    • Azure AD(Azure Active Directory), Facebook, Google 등과 통합하여 사용자 인증 제공.
    • HTTPS 기본 지원 및 SSL 인증서 추가 가능.
  6. 멀티 언어 및 플랫폼 지원:
    • 다양한 언어와 프레임워크 지원: .NET, Java, Python, PHP, Node.js, Ruby 등.
    • Windows 및 Linux 기반 환경 모두 지원.
  7. 서버리스 컴퓨팅과 통합:
    • Azure Functions와 통합하여 이벤트 기반 서버리스 컴퓨팅을 구현 가능.

Azure App Service의 주요 구성 요소

  1. App Service Plan (앱 서비스 플랜):
    • App Service가 실행되는 리소스(컴퓨팅 파워)를 정의합니다.
    • CPU, 메모리 크기 및 가격 모델을 선택할 수 있습니다.
      • 예: Free(F1), Basic(B1), Standard(S1), Premium(P1v3) 등.
    • 동일한 App Service Plan에 여러 앱을 배포하여 리소스를 공유할 수 있습니다.
  2. App Settings (앱 설정):
    • 환경 변수처럼 애플리케이션에서 사용할 설정 값을 저장합니다.
      • 예: 데이터베이스 연결 문자열, API 키.
  3. Deployment Slots (배포 슬롯):
    • 동일한 App Service 내에서 여러 환경(예: 개발/테스트/운영)을 설정할 수 있습니다.
    • 새로운 버전을 테스트한 후 운영 환경으로 쉽게 전환 가능(슬롯 스왑).
  4. Custom Domains and SSL (커스텀 도메인 및 SSL):
    • 사용자 지정 도메인을 연결하고 HTTPS를 활성화하여 보안을 강화할 수 있습니다.
  5. Monitoring and Diagnostics (모니터링 및 진단):
    • Azure Monitor와 통합하여 성능 데이터를 추적하고 로그를 분석 가능.

Azure App Service의 주요 사용 사례

  1. 웹 애플리케이션 호스팅:
    • 정적 또는 동적 웹사이트를 빠르게 배포하고 실행.
      • 예: 전자상거래 사이트, 블로그 플랫폼.
  2. RESTful API 배포:
    • 모바일 또는 웹 클라이언트와 통신하는 API 백엔드를 쉽게 배포.
      • 예: IoT 데이터 처리 API.
  3. 모바일 앱 백엔드:
    • 모바일 애플리케이션의 데이터 동기화 및 사용자 인증 처리.
  4. 컨테이너 기반 앱 실행:
    • Docker 컨테이너 이미지를 사용해 복잡한 애플리케이션을 실행.
  5. 지속적인 배포(CI/CD):
    • GitHub 또는 Azure DevOps와 연동하여 코드 변경 시 자동으로 새 버전을 배포.

Azure 포털에서 App Service 생성 방법

1. Azure 포털에서 생성

  1. Azure 포털에 로그인.
  2. "App Services" 메뉴 선택 후 "Create" 클릭.
  3. 다음 정보를 입력:
    1. 구독 및 리소스 그룹 선택.
    2. 앱 이름(App Name) 지정.
    3. 런타임 스택 선택(.NET, Node.js, Python 등).
    4. 운영 체제 선택(Windows 또는 Linux).
  4. App Service Plan 설정:
    1. 새 플랜 생성 또는 기존 플랜 선택.
    2. 가격 계층(Free/B1/S1/P1v3 등) 선택.
  5. 검토 후 "Create" 클릭.

2. CI/CD 설정

  • GitHub 또는 Azure DevOps와 연결하여 지속적인 빌드 및 배포 파이프라인 구성 가능.

시험 예제 스타일로 설명

예제 1:

"Azure App Service Plan은 무엇을 정의합니까?"

정답:

  • App Service가 실행되는 컴퓨팅 리소스(CPU, 메모리 크기)를 정의합니다.

예제 2:

"Azure App Service에서 새로운 버전을 테스트한 후 운영 환경으로 쉽게 전환하려면 어떤 기능을 사용해야 합니까?"

정답:

  • Deployment Slots (배포 슬롯)

예제 3:

"Azure App Service에서 HTTPS를 활성화하려면 어떤 기능을 설정해야 합니까?"

정답:

  • Custom Domains and SSL (커스텀 도메인 및 SSL)

Azure App Service와 관련된 개념 연결

  1. 컨테이너 관련 서비스(Azure Container Instances/AKS):
    • App Service는 간단한 컨테이너 기반 웹 애플리케이션 실행에 적합하며, 복잡한 오케스트레이션은 AKS(Azure Kubernetes Service)를 사용합니다.
  2. 수평 스케일링(Horizontal Scaling):
    • App Service는 자동 스케일링 기능을 통해 트래픽 증가 시 인스턴스를 추가로 생성하여 처리량을 높입니다.
  3. ARM 템플릿/Bicep 파일 사용:
    • ARM 템플릿이나 Bicep 파일로 App Service를 자동화된 방식으로 배포할 수 있습니다.

결론

Azure App Service는 클라우드 환경에서 웹 애플리케이션과 API를 빠르고 안정적으로 배포하고 관리하는 데 최적화된 서비스입니다. 서버 관리 부담 없이 고가용성과 확장성을 제공하며 다양한 언어와 플랫폼을 지원합니다.시험 준비 시에는 다음 내용을 숙지하세요:

  1. App Service Plan의 역할과 가격 계층 이해.
  2. CI/CD 통합 방법 및 Deployment Slots 활용법.
  3. 스케일링 옵션(수평/수직)과 보안 설정(HTTPS/SSL)