Azure에서 Python 웹앱을 배포하기 위한 로컬 환경 구성

이 문서에서는 Python 웹앱을 개발하고 Azure에 배포하도록 로컬 환경을 설정하는 방법을 안내합니다. 웹앱은 순수 Python이거나 Django, Flask 또는 FastAPI와 같은 일반적인 Python 기반 웹 프레임워크 중 하나를 사용할 수 있습니다.

로컬로 개발된 Python 웹앱은 Azure 앱 Service, Azure Container Apps 또는 Azure Static Web Apps와 같은 서비스에 배포할 수 있습니다. 배포에는 많은 옵션이 있습니다. 예를 들어 App Service 배포의 경우 코드, Docker 컨테이너 또는 정적 웹앱에서 배포하도록 선택할 수 있습니다. 코드에서 배포하는 경우 Visual Studio Code, Azure CLI, 로컬 Git 리포지토리 또는 GitHub 작업을 사용하여 배포할 수 있습니다. Docker 컨테이너에 배포하는 경우 Azure Container Registry, Docker Hub 또는 프라이빗 레지스트리에서 배포할 수 있습니다.

이 문서를 계속 진행하기 전에 Python 및 Azure용 개발 환경 설정에 대한 지침에 대한 개발 환경 설정을 검토하는 것이 좋습니다. 아래에서는 Python 웹앱 개발과 관련된 설정 및 구성에 대해 설명합니다.

Python 웹앱 개발을 위한 로컬 환경 설정을 받은 후에는 다음 문서를 처리할 준비가 됩니다.

Visual Studio Code 작업

Visual Studio Code IDE(통합 개발 환경)는 Python 웹앱을 개발하고 웹앱에서 사용하는 Azure 리소스로 작업하는 쉬운 방법입니다.

Python 확장이 설치되어 있는지 확인합니다. VS Code에서 Python을 사용하는 방법에 대한 개요는 VS Code에서 Python 시작 참조

VS Code에서는 VS Code 확장을 통해 Azure 리소스를 사용합니다. 확장 보기 또는 키 조합 Ctrl+Shift+X에서 확장을 설치할 수 있습니다. Python 웹앱의 경우 다음 확장 중 하나 이상을 사용할 수 있습니다.

Visual Studio Code의 확장은 일반적인 IDE 인터페이스에서 예상한 대로 액세스할 수 있으며 VS Code 명령 팔레트를 사용하여 풍부한 키워드(keyword) 지원됩니다. 명령 팔레트에 액세스하려면 키 조합 Ctrl+Shift+P를 사용합니다. 명령 팔레트는 Azure 리소스에서 수행할 수 있는 모든 가능한 작업을 확인하는 좋은 방법입니다. 아래 스크린샷은 App Service에 대한 몇 가지 작업을 보여 줍니다.

A screenshot of the Visual Studio Code command palette for App Service.

Visual Studio Code에서 개발 컨테이너 작업

Python 개발자는 종종 가상 환경에 의존하여 특정 프로젝트에 대해 격리되고 자체 포함된 환경을 만듭니다. 가상 환경을 사용하면 개발자가 각 프로젝트에 대해 종속성, 패키지 및 Python 버전을 개별적으로 관리할 수 있으므로 다른 패키지 버전이 필요할 수 있는 여러 프로젝트 간의 충돌을 방지할 수 있습니다.

Python에서 사용 가능한 다양한 옵션을 통해 환경을 virtualenvvenv관리할 수 있지만 Visual Studio Code Dev Container 확장(개방형 Dev Container 사양따라)을 사용하면 Docker 컨테이너를 완전한 기능을 갖춘 컨테이너화된 환경으로 사용할 수 있습니다. 이를 통해 개발자는 모든 필수 도구, 종속성 및 미리 구성된 확장으로 일관되고 쉽게 재현할 수 있는 도구 체인을 정의할 수 있습니다. 즉, 시스템 요구 사항, 셸 구성 또는 다른 언어를 완전히 사용하는 경우 Dev Container를 사용하여 기본 Python 환경 외부에 있을 수 있는 프로젝트의 모든 부분을 명시적으로 구성할 수 있습니다.

예를 들어 개발자는 프로젝트 데이터베이스 및 샘플 데이터, Redis 서버, Nginx, 프런트 엔드 코드, React와 같은 클라이언트 라이브러리 등과 함께 PostgreSQL 데이터베이스 서버를 포함하여 프로젝트에서 작업하는 데 필요한 모든 것을 포함하도록 단일 Dev Container를 구성할 수 있습니다. 또한 컨테이너에는 프로젝트 코드, Python 런타임 및 올바른 버전이 있는 모든 Python 프로젝트 종속성이 포함됩니다. 마지막으로 컨테이너는 전체 팀에서 동일한 도구를 사용할 수 있도록 설치할 Visual Studio Code 확장을 지정할 수 있습니다. 따라서 새 개발자가 팀에 합류하면 도구, 종속성 및 데이터를 비롯한 전체 환경이 로컬 컴퓨터에 복제할 준비가 되어 있으며 즉시 작업을 시작할 수 있습니다.

컨테이너 내에서 개발을 참조 하세요.

Visual Studio 2022 작업

Visual Studio 2022 는 Python 애플리케이션 개발을 지원하고 Azure 리소스에 액세스하고 배포할 수 있는 많은 기본 제공 도구 및 확장을 갖춘 완전한 기능을 갖춘 IDE(통합 개발 환경)입니다. Azure에서 Python 웹앱을 빌드하기 위한 대부분의 설명서에서는 Visual Studio Code를 사용하는 데 중점을 두고 있지만 Visual Studio 2022는 이미 설치되어 있고 사용이 편하며 .NET 또는 C++ 프로젝트에 사용하는 경우에 유용한 옵션입니다.

다른 IDE 작업

Azure에 대한 명시적 지원이 없는 다른 IDE에서 작업하는 경우 Azure CLI를 사용하여 Azure 리소스를 관리할 수 있습니다. 아래 스크린샷에서는 PyCharm IDE에서 간단한 Flask 웹앱이 열립니다. 웹앱은 명령을 사용하여 Azure 앱 Service에 az webapp up 배포할 수 있습니다. 스크린샷에서 CLI 명령은 PyCharm 포함된 터미널 에뮬레이터 내에서 실행됩니다. IDE에 포함된 에뮬레이터가 없는 경우 터미널과 동일한 명령을 사용할 수 있습니다. Azure CLI는 컴퓨터에 설치되어 있어야 하며 두 경우 모두 액세스할 수 있어야 합니다.

A screenshot of the PyCharm IDE with an Azure CLI command deploying a web app.

Azure CLI 명령

Azure CLI 명령을 사용하여 웹앱으로 로컬로 작업하는 경우 일반적으로 다음 명령을 사용합니다.

명령 설명
az webapp 웹앱을 관리합니다. 웹앱을 만들기 위해 만든 하위 명령과 로컬 작업 영역에서 만들고 배포할 수 있는 하위 명령이 포함됩니다.
az container app Azure Container Apps를 관리합니다.
az staticwebapp Azure Static Web Apps를 관리합니다.
az group 리소스 그룹 및 템플릿 배포를 관리합니다. 리소스 그룹에 하위 명령 만들기 를 사용하여 Azure 리소스를 배치합니다.
az appservice App Service 계획을 관리합니다.
az config 관리되는 Azure CLI 구성. 키 입력을 저장하려면 다른 명령에서 자동으로 사용하는 기본 위치 또는 리소스 그룹을 정의할 수 있습니다.

다음은 웹앱 및 관련 리소스를 만들고 az webapp up을 사용하여 한 명령으로 Azure에 배포하는 예제 Azure CLI 명령입니다. 웹앱의 루트 디렉터리에서 명령을 실행합니다.

az webapp up \
    --runtime PYTHON:3.9 \
    --sku B1 \
    --logs

이 예제에 대한 자세한 내용은 빠른 시작: Azure 앱 Service에 Python(Django 또는 Flask) 웹앱 배포를 참조하세요.

일부 Azure 워크플로의 경우 Azure Cloud Shell에서 Azure CLI를 사용할 수도 있습니다. Azure Cloud Shell은 Azure 리소스를 관리하기 위한 인증된 대화형 셸로, 브라우저에서 액세스할 수 있습니다.

Azure SDK 키 패키지

Python 웹앱에서 Python용 Azure SDK를 사용하여 프로그래밍 방식으로 Azure 서비스를 참조할 수 있습니다. 이 SDK는 Python용 Azure 라이브러리(SDK) 사용 섹션에서 광범위하게 설명합니다. 이 섹션에서는 웹 개발에 사용할 SDK의 몇 가지 주요 패키지를 간략하게 멘션. 또한 Azure 리소스를 사용하여 코드를 인증하는 모범 사례에 대한 예제를 살펴보겠습니다.

다음은 웹앱 개발에 일반적으로 사용되는 일부 패키지입니다. 를 사용하여 가상 환경에 패키지를 직접 pip설치할 수 있습니다. 또는 requirements.txt 파일에 Python 패키지 인덱스(Pypi) 이름을 넣습니다.

SDK 문서 설치 Python 패키지 인덱스
Azure ID pip install azure-identity azure-identity
Azure Storage Blob pip install azure-storage-blob azure-storage-blob
Azure Cosmos DB pip install azure-cosmos azure-cosmos
Azure Key Vault 비밀 pip install azure-keyvault-secrets azure-keyvault-secrets

azure-identity 패키지를 사용하면 웹앱이 Microsoft Entra ID로 인증할 수 있습니다. 웹앱 코드에서 인증하려면 패키지에서 DefaultAzureCredentialazure-identity 을 사용하는 것이 좋습니다. Azure Storage에 액세스하는 방법의 예는 다음과 같습니다. 이 패턴은 다른 Azure 리소스와 비슷합니다.

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

azure_credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
    account_url=account_url,
    credential=azure_credential)

DefaultAzureCredential 환경 변수 또는 Azure CLI 로그인과 같은 계정 정보를 미리 정의된 위치에서 확인합니다. 논리에 대한 DefaultAzureCredential 자세한 내용은 Python용 Azure SDK를 사용하여 Azure 서비스에 Python 앱 인증을 참조 하세요.

Python 기반 웹 프레임워크

Python 웹앱 개발에서는 Python 기반 웹 프레임워크를 사용하는 경우가 많습니다. 이러한 프레임워크는 페이지 템플릿, 세션 관리, 데이터베이스 액세스 및 HTTP 요청 및 응답 개체에 쉽게 액세스할 수 있는 기능을 제공합니다. 프레임워크를 사용하면 일반적인 기능을 위해 휠을 재창조할 필요가 없도록 할 수 있습니다.

세 가지 일반적인 Python 웹 프레임워크는 Django, Flask 또는 FastAPI입니다. 이러한 웹 프레임워크 및 기타 웹 프레임워크는 Azure에서 사용할 수 있습니다.

다음은 이러한 프레임워크를 로컬로 빠르게 시작하는 방법의 예입니다. 이러한 명령을 실행하면 Azure에 배포할 수 있는 간단한 애플리케이션이 발생합니다. 가상 환경 내에서 이러한 명령을 실행합니다.

1단계: pip를 사용하여 프레임워크를 다운로드합니다.

pip install Django

2단계: hello world 앱을 만듭니다.

django-admin startproject 명령을 사용하여 샘플 프로젝트를 만듭니다. 프로젝트에는 앱을 실행하기 위한 진입점인 manage.py 파일이 포함되어 있습니다.

django-admin startproject hello_world

3단계: 코드를 로컬로 실행합니다.

Django는 WSGI를 사용하여 앱을 실행합니다.

python hello_world\manage.py runserver

4단계: hello world 앱을 찾아봅니다.

http://127.0.0.1:8000/

이 시점에서 requirements.txt 파일을 추가한 다음 Azure에 웹앱을 배포하거나 Docker를 사용하여 컨테이너화한 다음 배포할 수 있습니다.

다음 단계