Azure를 처음 배우다 보면 "Azure에 서버를 만든다"는 것이 얼마나 다양한 방법으로 가능한지 놀라게 됩니다. 웹 브라우저로 클릭 몇 번으로 만들 수도 있고, 텍스트 명령어 한 줄로 만들 수도 있고, 수백 개의 서버를 코드 파일 하나로 한 번에 배포할 수도 있습니다.
AZ-900 시험에서 배포 관련 문제는 "각 도구가 언제, 왜 사용되는가"를 이해하는 것이 핵심입니다. 이 글에서는 Azure Portal부터 Azure Arc까지 모든 관리 도구를 비개발자도 완전히 이해할 수 있도록 일상 생활의 비유로 설명합니다.
리소스 관리란 무엇인가?
"리소스"란 Azure에서 만들 수 있는 모든 것을 의미합니다 — 가상 머신(서버), 데이터베이스, 네트워크, 스토리지 계정, AI 서비스 등. 이 리소스들을 만들고, 설정하고, 수정하고, 삭제하는 모든 작업이 "리소스 관리"입니다.
이걸 피자 주문에 비유해 봅시다. 동네 피자 가게에서 피자를 주문하는 방법은 여러 가지입니다: 가게 직접 방문해서 주문 (Azure Portal — GUI 클릭) 전화로 주문 (Azure CLI — 명령어 입력) 앱으로 주문 (Azure PowerShell — 스크립트 실행) 단체 주문 계약서 작성 (ARM 템플릿/Bicep — 코드로 대량 배포)
어떤 방법을 선택하든 최종적으로는 피자 가게 주방에서 피자가 만들어집니다. Azure에서는 이 "주방"이 바로 Azure Resource Manager(ARM)입니다.
Azure Portal — 가게의 키오스크 터치스크린
Azure Portal(portal.azure.com)은 웹 브라우저로 접속하는 그래픽 관리 인터페이스입니다. 마우스 클릭과 폼 입력만으로 가상 머신을 만들고, 설정을 바꾸고, 비용을 확인하고, 모니터링 대시보드를 볼 수 있습니다.
Azure Portal의 특징
Azure Portal은 처음 Azure를 배우는 사람에게 가장 친숙한 환경을 제공합니다. 복잡한 명령어를 외울 필요 없이 화면에 나오는 안내를 따라가면 됩니다.
어느 기기에서나 브라우저로 접속 가능 (portal.azure.com) 그래픽 인터페이스로 클릭만으로 모든 리소스 생성 및 관리 가능 실시간 대시보드로 비용, 성능, 알림 현황 한눈에 파악 모바일 앱(Azure Mobile App)으로도 기본 관리 가능 맞춤형 대시보드를 만들어 자주 보는 정보를 한 화면에 배치 가능
Azure Portal의 한계
Azure Portal은 직관적이지만 반복 작업을 자동화하기 어렵습니다. 예를 들어 "동일한 설정의 가상 머신 50개를 만들어라"는 작업을 Portal에서 하려면 50번 반복 클릭해야 합니다. 이런 경우 CLI나 IaC 도구가 훨씬 효율적입니다.
Azure Cloud Shell — 브라우저 내에 내장된 터미널
Azure Cloud Shell은 Azure Portal 안에 내장된 터미널 환경입니다. 별도로 프로그램을 설치할 필요 없이 브라우저에서 바로 명령어를 입력할 수 있습니다. 마치 피자 가게 키오스크에서 직접 주방에 명령을 입력하는 기능이 내장되어 있는 것과 같습니다.
Azure Cloud Shell의 핵심 장점
설치 불필요: 브라우저만 있으면 어디서든 바로 사용 가능 Bash(Linux 명령어 스타일)와 PowerShell(Windows 명령어 스타일) 중 선택 가능 Azure CLI와 Azure PowerShell 모듈이 모두 사전 설치되어 있음 Python, Node.js, .NET 등의 개발 도구도 기본 포함 작업 파일은 Azure Files(클라우드 스토리지)에 자동으로 저장 — 세션을 닫았다가 다시 열어도 파일이 남아 있음 개인 노트북 없이 태블릿이나 공용 컴퓨터에서도 안전하게 Azure 관리 가능
Azure CLI — 문자 메시지로 주문하기
Azure CLI(Command-Line Interface)는 터미널 창에서 "az"로 시작하는 명령어를 입력해 Azure를 관리하는 도구입니다. 피자를 문자 메시지로 주문하는 것처럼, 짧은 명령어 몇 개로 원하는 작업을 빠르게 처리할 수 있고, 같은 명령을 스크립트 파일로 만들어 반복 실행할 수 있습니다.
Azure CLI 명령어 구조
Azure CLI 명령어는 일관된 구조를 가집니다:
예시: (VM 생성) (VM 목록 조회) (VM 중지) (리소스 그룹 생성)
Azure CLI의 주요 특징
크로스 플랫폼: Windows, macOS, Linux 모두에서 사용 가능 스크립트 자동화에 최적: 반복 작업을 쉘 스크립트로 만들어 자동화 CI/CD 파이프라인에 통합 가능 (자동화된 배포 프로세스) JSON 형식으로 출력하여 다른 도구와 연동하기 쉬움
Azure PowerShell — Windows 관리자를 위한 도구
Azure PowerShell은 PowerShell 환경에서 "Az" 모듈을 사용해 Azure를 관리하는 도구입니다. Windows 서버나 Active Directory를 관리해본 IT 관리자에게 익숙한 PowerShell 문법을 그대로 사용하면서 Azure를 관리할 수 있습니다.
Azure PowerShell 명령어 구조
Azure PowerShell 명령어는 패턴을 사용합니다:
예시: (VM 생성) (VM 목록 조회) (VM 중지) (리소스 그룹 생성)
Azure CLI vs Azure PowerShell 비교
| 비교 항목 | Azure CLI | Azure PowerShell | |---------|---------|----------------| | 명령어 스타일 | Linux/Bash 스타일 | Windows PowerShell 스타일 | | 대상 사용자 | Linux/Mac 친숙한 개발자 | Windows 환경 IT 관리자 | | 기능 차이 | 거의 동일 | 거의 동일 | | 선택 기준 | 개인 취향과 기존 경험 | 개인 취향과 기존 경험 |
둘 다 Azure Cloud Shell에서 바로 사용 가능하며, 기능 면에서는 거의 동일합니다. 무엇을 선택하든 Azure 관리에는 차이가 없으니, 자신에게 더 친숙한 것을 고르면 됩니다.
4가지 관리 도구 종합 비교
| 도구 | 인터페이스 | 자동화 | 설치 필요 | 최적 사용 사례 | |------|-----------|--------|---------|-------------| | Azure Portal | 그래픽(GUI) | 어려움 | 불필요 | 처음 배울 때, 빠른 확인 작업 | | Azure Cloud Shell | 명령줄(브라우저) | 가능 | 불필요 | 브라우저에서 빠른 명령어 실행 | | Azure CLI | 명령줄 | 가능 | 필요 | Linux/Mac 환경, 크로스 플랫폼 스크립팅 | | Azure PowerShell | 명령줄 | 가능 | 필요 | Windows 환경, Windows 관리자 |
Infrastructure as Code (IaC) — 건축 설계도와 시공 매뉴얼
10층 건물을 짓는다고 생각해 보세요. 설계도 없이 매번 현장에서 즉흥적으로 결정하면 건물마다 다르게 지어질 것입니다. 하지만 정밀한 설계도(Blueprint)가 있으면, 서울에 짓든 부산에 짓든 동일한 건물을 일관성 있게 지을 수 있습니다.
IaC(Infrastructure as Code)는 "코드로 인프라를 정의한다"는 개념입니다. Azure 리소스(가상 머신, 네트워크, 데이터베이스 등)를 매번 손으로 만드는 것이 아니라, 코드 파일로 정의해두고 필요할 때마다 자동으로 동일한 환경을 배포합니다.
IaC의 핵심 장점: 반복 가능성: 개발/테스트/프로덕션 환경을 동일하게 배포 가능 일관성: 사람이 클릭해서 만들 때 생기는 실수 방지 버전 관리: Git 등으로 인프라 변경 이력 추적 가능 빠른 복구: 재해 발생 시 코드 한 번 실행으로 전체 환경 복원 가능
Azure Resource Manager (ARM) — 중앙 주문 접수 창구이자 조율자
Azure Resource Manager(ARM)는 Azure의 모든 관리 요청을 처리하는 중앙 허브입니다. Portal을 클릭하든, CLI를 쓰든, PowerShell을 쓰든, REST API를 호출하든, ARM 템플릿을 배포하든 — 모든 요청은 반드시 ARM을 통해 처리됩니다. ARM 없이는 Azure에서 아무것도 만들거나 수정하거나 삭제할 수 없습니다.
ARM이 하는 일
ARM은 단순히 요청을 전달하는 것 이상을 합니다:
인증 및 권한 확인: "이 요청을 한 사람이 이 작업을 할 권한이 있는가?" 의존성 해결: "이 VM을 만들려면 먼저 네트워크와 스토리지가 있어야 한다" 병렬 처리: 의존성이 없는 리소스는 동시에 생성 상태 관리: 배포 중 실패 시 어디까지 완료되었는지 추적 활동 로그: 모든 작업을 감사 로그에 기록
ARM 그룹 관리 기능
ARM은 리소스를 논리적 그룹(리소스 그룹)으로 관리합니다. "웹사이트 프로젝트"라는 리소스 그룹에 웹 서버, 데이터베이스, 캐시 서버를 모두 넣으면, 프로젝트가 끝날 때 리소스 그룹 하나를 삭제하는 것으로 관련 리소스를 모두 정리할 수 있습니다.
ARM 템플릿 — JSON으로 작성된 정밀 설계도
ARM 템플릿은 JSON(JavaScript Object Notation) 형식으로 작성된 파일입니다. "이런 이름의 가상 머신을, 이런 크기로, 이런 운영체제로, 이런 네트워크에 연결해서 만들어라"를 코드로 선언해두면, 나중에 그 파일을 Azure에 제출하는 것만으로 동일한 환경이 자동으로 만들어집니다.
ARM 템플릿의 선언적 방식
프로그래밍에는 두 가지 방식이 있습니다: 명령형(Imperative): "1단계: 리소스 그룹을 만들어라. 2단계: 네트워크를 만들어라. 3단계: VM을 만들어라." 선언형(Declarative): "이런 상태의 환경이 필요하다. Azure가 알아서 만들어라."
ARM 템플릿은 선언형입니다. 최종 원하는 상태만 기술하면 Azure가 현재 상태와 비교해서 필요한 작업을 알아서 처리합니다. 이미 만들어진 리소스는 건드리지 않고, 없는 것만 추가합니다.
ARM 템플릿의 구조