Azure Virtual Machines
Azure Virtual Machines는 Azure 안에서 Windows나 Linux를 직접 설치해 돌리는 가상 서버입니다. OS와 실행 환경을 직접 쥐고 있어, 클라우드에서도 기존 서버처럼 세밀한 제어가 필요할 때 바닥 인프라 역할을 맡습니다.
▶아키텍처 다이어그램
🔍 구조 다이어그램점선 애니메이션은 데이터 또는 요청의 흐름 방향을 나타냅니다
서비스를 출시하려면 코드가 돌아갈 서버가 있어야 합니다. 물리 서버를 구매하면 도착까지 며칠이 걸리고, 설치하고 설정하는 데 또 시간이 갑니다. 트래픽 예측이 빗나가면 서버가 남아서 유휴 비용이 발생하거나, 부족해서 서비스가 다운됩니다. 증설이 필요한 순간에는 빠르면 2주, 길면 몇 달을 기다려야 했습니다. 하드웨어 고장, OS 패치, 데이터센터 전력과 냉각까지 직접 챙겨야 하는 팀에서는 인프라 관리 자체가 주요 업무가 됩니다.
2000년대 초반까지 서버 인프라를 갖추려면 장비를 사서 데이터센터에 입주시키는 것이 기본이었습니다. 서비스가 성공해도 서버 추가에는 조달 기간이 따랐고, 실패하면 수천만 원짜리 장비가 창고에 남았습니다. VMware 같은 가상화 소프트웨어가 등장하면서 물리 서버 한 대 위에 여러 가상 서버를 올리는 것이 가능해졌고, 자원 활용률이 높아졌습니다. 여기서 한 단계 더 나아가, AWS EC2가 2006년에 가상 서버를 API로 만들고 없앨 수 있는 서비스로 출시하면서 '분 단위 서버'라는 개념이 현실이 됐습니다. Azure VM은 이 흐름 위에서, 기존 온프레미스 환경에 익숙한 기업들이 클라우드로 넘어올 때 이미 알고 있는 방식 그대로 서버를 쓸 수 있게 해주는 형태로 설계됐습니다.
물리 서버 위에서 실행되는 하이퍼바이저가 CPU·메모리·디스크·네트워크를 가상으로 나눠 VM에게 할당합니다. 사용자 입장에서는 실제 서버처럼 보이지만, 안쪽은 공유 물리 자원의 일부입니다. VM을 만들 때는 크기(size)를 선택합니다. 범용, 컴퓨팅 최적화, 메모리 최적화, GPU 등 시리즈별로 vCPU와 메모리 조합이 다릅니다. 예를 들어 Standard_D2s_v3는 2 vCPU, 8GB RAM이고, Standard_NC6은 GPU가 붙어 있습니다. OS 이미지를 고르면 Windows Server 또는 Linux 배포판이 올라옵니다. VM이 시작되면 Virtual Network의 서브넷에 배치되고, 네트워크 보안 그룹(NSG)이 허용할 포트와 IP를 제어합니다. 스토리지는 OS 디스크와 데이터 디스크를 분리한 관리 디스크(Managed Disk)로 구성되며, 성능 등급도 따로 선택합니다. 고가용성이 필요하면 동일한 VM을 여러 가용성 영역에 분산 배치해 한 영역의 장애가 전체 서비스에 영향을 주지 않도록 합니다.
VM과 App Service는 둘 다 애플리케이션 코드를 실행하는 서비스입니다. 차이는 어느 계층까지 직접 관리하느냐에 있습니다. VM은 OS부터 직접 제어합니다. 커널 파라미터를 조정하거나, 플랫폼이 지원하지 않는 소프트웨어를 설치하거나, 기존 온프레미스 환경의 설정을 그대로 가져와야 할 때 VM이 유일한 선택입니다. 대신 OS 패치, 보안 업데이트, 장애 시 복구는 운영자가 직접 처리해야 합니다. App Service는 런타임과 배포 파이프라인을 플랫폼이 관리합니다. OS에 손댈 수 없는 대신, 지원하는 런타임(.NET, Node.js, Python 등) 위에서 동작하는 애플리케이션이라면 인프라 설정 없이 배포할 수 있습니다. 인프라 관리 인력이 없는 팀이나 빠른 배포가 우선인 경우라면 VM보다 적합합니다. 반면 VM은 컨테이너 오케스트레이션에는 맞지 않습니다. 수십 개의 컨테이너를 자동 배치하고 재시작·스케일링을 관리해야 하는 규모에서는 VM 단위 관리는 한계가 있습니다.
레거시 시스템 마이그레이션 팀에서 가장 많이 선택하는 경로입니다. 온프레미스에서 돌던 Windows Server 기반 애플리케이션, 특정 버전의 Oracle DB나 상용 미들웨어를 그대로 올려야 하는 경우, 클라우드 네이티브 방식으로 바꿀 여유가 없을 때 VM이 가장 빠른 답입니다. 개발·테스트 환경에서도 자주 씁니다. 한 달에 며칠만 켜두면 되는 QA 환경이나, 팀마다 독립된 테스트 서버가 필요한 상황에서 VM을 필요할 때만 켜고 끄면 물리 서버 대비 비용이 크게 줄어듭니다. 반면 VM 운영에는 OS 패치와 보안 업데이트를 놓치지 않을 체계가 필요합니다. 담당자 없이 방치된 VM은 취약점이 쌓이는 위험한 자산이 됩니다. 웹 앱처럼 표준 런타임 위에서 돌아가는 워크로드라면, VM 운영 비용을 따지기 전에 관리형 플랫폼이 더 나은 선택인지 먼저 검토하는 것이 좋습니다.