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의 기초 파이프라인을 경험할 수 있는 실습
가장 먼저 공식 가이드에 따라 실습에 필요한 샘플 앱을 준비하고 로컬 환경에서 구동 여부를 확인했다.
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"이라는 제목이 정상적으로 뜨는지 확인
본격적으로 az webapp up 명령어를 써서 Azure 서버에 내 코드를 올려봤는데, 내 계정 환경 때문에 몇 가지 추가 설정이 필요했다.
RequestDisallowedByAzure 에러가 떠서, 그래서 한국 지역인 --location koreacentral을 붙여주니 해결됐다.PremiumV2 사양을 쓸 수 없어서 에러가 났다. 무료 티어인 --sku F1 옵션을 붙이면 된다.az webapp up --name first-flask-app --location koreacentral --sku F1


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

설정을 다 끝내고 파이프라인을 돌렸는데 빌드가 시작조차 안 되고 실패했다.
Azure Pipelines 공식 트러블슈팅 페이지에 따르면 Azure의 최신 보안 정책 때문에... 신규 조직은 무료 호스팅 서버를 쓸 권한을 수동으로 신청해서 승인받아야 한다고 한다.
그래서 안내에 따라 무료 병렬 처리 요청 폼에 내 정보를 적어 제출했다.
승인 떨어지면 코드 간단하게 변경 후 push해서, 배포하는 과정을 진행하면 된다..
https://learn.microsoft.com/ko-kr/azure/devops/pipelines/ecosystems/python-webapp?view=azure-devops