본문 바로가기

개인공부

[Microsoft Azure] 5. 클라우드 웹 서비스 플랫폼 (1)

서버 올리고, DB 연결하고, 데이터도 저장했다.

그런데 정작 웹 앱은 어디에 띄우지?

VM을 직접 세팅할 수도 있지만,

OS 패치부터 런타임 관리까지 해야해서 귀찮다.

azure에서 제공하는 다양한 관리수준의 플랫폼들을 알아보자.


6-1. 클라우드 기반의 웹 서비스 플랫폼

Azure App Service

웹 애플리케이션, RESTful API, 모바일 백엔드를 호스팅하는 완전 관리형 PaaS 서비스다.

  • 다중 언어 지원: .NET, Java, Node.js, Python, PHP
  • 자동 확장 + 로드 밸런싱 내장
  • CI/CD 통합 및 배포 슬롯 지원
  • SSL 인증서 및 커스텀 도메인 관리

AWS의 Elastic Beanstalk에 해당하는 포지션이다.

Azure Static Web Apps

React, Vue 등으로 빌드된 정적 웹앱 전용 호스팅이다. GitHub 연동으로 push만 하면 자동 빌드+배포되고, 백엔드가 필요하면 Azure Functions로 serverless API를 붙인다. 글로벌 CDN + 무료 SSL까지 기본 제공. Vercel/Netlify와 비슷한 포지션이다.

Azure Container Apps

컨테이너화된 앱을 위한 서버리스 플랫폼이다. 내부적으로 Kubernetes 기반이지만 사용자가 K8s를 직접 관리할 필요가 없다. "Docker 이미지만 올리면 알아서 돌아갔으면 좋겠다"는 요구에 맞는 서비스. AWS의 ECS Fargate와 유사하다.

Azure Virtual Machines

IaaS 솔루션. 완전한 제어가 가능하지만 OS 패치, 런타임, 보안 설정까지 전부 직접 관리해야 한다. 특수 런타임이나 레거시 앱이 아니면 굳이 선택할 이유가 없다.

어떤 걸 써야 할까?

  • App Service → 범용 웹앱, API 서버
  • Static Web Apps → SPA, 정적 사이트
  • Container Apps → 마이크로서비스, 이벤트 기반
  • Virtual Machines → 레거시, 특수 환경

PaaS로 해결 가능하면 PaaS를 쓰자. 관리 노력이 확 줄어든다.


6-2. 웹 앱 서비스의 이해와 활용

App Service는 단순히 웹앱만 올리는 게 아니라 Web Apps, Mobile Apps, Logic Apps, API Apps, Functions 등 여러 워크로드를 지원한다.

배포 방식

Visual Studio Online, Git, GitHub, BitBucket, DropBox, FTP 등 다양한 소스에서 배포할 수 있다. 실무에서는 GitHub Actions + 배포 슬롯 조합이 가장 흔하다. staging 슬롯에 먼저 배포하고, 검증 후 swap하는 방식으로 무중단 배포를 구현한다.

스케일링

Manual Scaling — 인스턴스 수를 직접 지정. 예: 1~6개 고정.

Auto Scaling — CPU 사용률 등 메트릭 기반으로 자동 증감. 예: CPU 60

80% 범위에서 인스턴스 2

6개 자동 조절.

6개 자동 조절.

VM이었으면 로드밸런서 설정부터 인스턴스 프로비저닝까지 직접 해야 했을 일을 슬라이더 하나로 끝낸다. 이게 PaaS의 진짜 장점이다.


6-3. 웹 앱 서비스의 개발

Python + Visual Studio Code

VS Code는 editor의 가벼움을 유지하면서 IDE의 핵심 기능(code understanding, 디버깅, task running)을 확장으로 제공한다. Azure 확장을 설치하면 VS Code에서 직접 Azure 리소스 생성부터 배포까지 가능하다.

Streamlit

Streamlit은 Python만으로 웹 앱을 빠르게 만들 수 있는 프레임워크다. HTML/CSS/JS를 몰라도 된다.

  • Write and Magicst.write()로 텍스트, DataFrame, 차트 등을 출력
  • Data Elementsst.dataframe()으로 인터랙티브 테이블, st.data_editor()로 편집 가능한 데이터 뷰
  • Input Widgetsst.button(), st.download_button() 등 입력 컴포넌트를 한 줄로 생성
  • Chat Elementsst.chat_input(), st.chat_message()로 챗봇 UI 구현

프로토타이핑이나 데이터 대시보드에 최적화되어 있다. 프로덕션 웹 서비스에는 Django, Flask, FastAPI 같은 프레임워크를 써야 한다.


실습 진행

웹 앱 리소스를 만드는 실습을 진행해보자.

리소스의 종류가 다르더라도 기본 맥락은 같아서

이제 리소스 생성은 매우 익숙해졌다.

웹 앱 배포완료

설정에서 스케일 아웃(Scale out) 부분을 설정할 수 있다는 설명을 들었지만

지금은 보이지 않아서 (ㅜㅜ) 직접 확인해보지는 못했다.

이후 VS코드와 파이썬 3.11버전을 다운로드 해야하는데,

기존에 이미 같은 환경을 구축해놓았으므로 이 부분은 생략하고 진행하겠다.

바로 vscode 터미널에서 pip로 streamlit을 설치해준다.

실행 오류

설치 후 데모를 실행해보려고 하였으나, 실행할 수 있는 명령어가 아니라고 뜬다.

설치 하면서 뜬 경고를 보니

환경변수 (PATH)에 파일 경로가 등록되지 않았기 때문으로 추측했다.

따라서 python -m streamlit hello명령어로 코드를 실행해보았다.

성공

지난번 streamlit 실습과 같은 화면을 보는데 성공했다.

이제 커스터마이즈 해보자

코드 작성
실행
결과

너무 간단하게 여러가지 웹 요소들을 추가할 수 있다.


 

정리

  • Azure는 App Service, Static Web Apps, Container Apps, VM 등 다양한 웹 호스팅 옵션을 제공한다
  • App Service는 대표적인 PaaS로, 배포·스케일링·SSL·로드밸런싱을 플랫폼이 처리해준다
  • Auto Scaling으로 트래픽에 따른 인스턴스 자동 증감이 가능하다
  • Streamlit은 Python으로 빠르게 웹 앱을 만들 수 있지만, 프로덕션에는 Django/Flask/FastAPI를 써야 한다

다음 시간에는 웹 앱 서비스의 배포를 다뤄보자.