[MLOps] Azure Web App 기반 Flask 애플리케이션 배포하고 CI/CD 파이프라인 구축하기 1

Junseo·2026년 2월 12일

https://learn.microsoft.com/ko-kr/azure/devops/pipelines/ecosystems/python-webapp?view=azure-devops

마이크로소프트 Azure 공식 문서의 가이드를 따라 Flask 프로젝트를 Azure Web App에 배포해 보자.

Azure Pipelines를 사용하여 Python 웹 앱을 빌드하고 Linux 기반의 Azure App Service에 자동 배포하는 CI/CD 환경을 구축

단순히 앱을 서버에 올리는 것을 넘어, 코드 레포에 커밋이 발생할 때마다 파이프라인이 자동으로 실행되어 빌드, 테스트, 배포가 이루어지는 MLOps의 기초 파이프라인을 경험할 수 있는 실습

1. 프로젝트 시작: 로컬 환경 준비하기

가장 먼저 공식 가이드에 따라 실습에 필요한 샘플 앱을 준비하고 로컬 환경에서 구동 여부를 확인했다.

  • Microsoft의 샘플 저장소인 https://github.com/microsoft/python-sample-vscode-flask-tutorial 을 포크

  • 포크한 레포를 로컬로 클론

  • 가상환경 구축 및 활성화

  • 의존성 설치: 가상환경 내에서 pip install --upgrade pip로 관리 도구를 최신화하고, pip install -r ./requirements.txt를 실행하여 앱 실행에 필요한 패키지들을 모두 설치

  • 로컬 테스트: 로컬 환경에서 flask run을 실행하고 브라우저에서 http://localhost:5000에 접속하여 "Visual Studio Flask Tutorial"이라는 제목이 정상적으로 뜨는지 확인

2. Azure CLI로수동 배포하기

본격적으로 az webapp up 명령어를 써서 Azure 서버에 내 코드를 올려봤는데, 내 계정 환경 때문에 몇 가지 추가 설정이 필요했다.

  • 지역 문제: 처음엔 기본 지역으로 설정됐는데, 구독 정책상 허용되지 않는 지역이라 RequestDisallowedByAzure 에러가 떠서, 그래서 한국 지역인 --location koreacentral을 붙여주니 해결됐다.
  • 할당량 문제: 학생 계정이라 고성능인 PremiumV2 사양을 쓸 수 없어서 에러가 났다. 무료 티어인 --sku F1 옵션을 붙이면 된다.
az webapp up --name first-flask-app --location koreacentral --sku F1

3. Azure Pipelines로 자동 배포 환경 구축

이제 GitHub에 push 자동으로 배포되는 파이프라인을 만들어보자.

  • Azure DevOps 연결: 서비스 연결을 통해 내 Azure와 DevOps 프로젝트를 연결
  • YAML 파일 설정: Azure Pipelines이 자동으로 생성한 YAML 파일을 실습 환경에 맞춰 파이썬 버전만 수정했다.

설정을 다 끝내고 파이프라인을 돌렸는데 빌드가 시작조차 안 되고 실패했다.

Azure Pipelines 공식 트러블슈팅 페이지에 따르면 Azure의 최신 보안 정책 때문에... 신규 조직은 무료 호스팅 서버를 쓸 권한을 수동으로 신청해서 승인받아야 한다고 한다.

그래서 안내에 따라 무료 병렬 처리 요청 폼에 내 정보를 적어 제출했다.

승인 떨어지면 코드 간단하게 변경 후 push해서, 배포하는 과정을 진행하면 된다..


References

https://learn.microsoft.com/ko-kr/azure/devops/pipelines/ecosystems/python-webapp?view=azure-devops

0개의 댓글