Azure에서 Python 시작

클라우드에서 호스트되거나 클라우드 서비스를 활용하는 Python 애플리케이션 개발을 시작할 때 이 문서를 검사 목록 및 가이드로 사용합니다. 이 문서의 링크와 지침을 따르는 경우 다음을 수행합니다.

  • 클라우드의 개념과 클라우드를 사용하여 애플리케이션을 디자인하는 방법을 기본적으로 이해합니다.
  • 클라우드 기반 애플리케이션을 빌드하는 데 필요한 도구 및 라이브러리를 포함하여 로컬 개발 환경을 설정합니다.
  • 클라우드 기반 애플리케이션을 개발할 때 워크플로를 이해합니다.

1단계: 개념 알아보기

클라우드용 애플리케이션을 개발하는 것을 처음으로 접하는 경우 동영상이 포함된 이 짧은 문서 시리즈를 통해 빠르게 빠르게 작업할 수 있습니다.

클라우드용 애플리케이션 개발의 기본 사항을 이해한 후에는 개발 환경을 설정하고 빠른 시작 또는 자습서에 따라 첫 번째 앱을 빌드하려고 합니다.

2단계: Azure 개발을 위한 로컬 Python 환경 구성

Azure를 사용하여 Python 애플리케이션을 개발하려면 먼저 로컬 개발 환경을 구성하려고 합니다. 구성에는 Azure 계정 만들기, Azure 개발을 위한 도구 설치 및 해당 도구를 Azure 계정에 연결하는 것이 포함됩니다.

Azure에서 개발하려면 Python 3.8 이상이 필요합니다. 워크스테이션에서 Python 버전을 확인하려면 콘솔 창에서 macOS/Linux 또는 py --version Windows용 명령을 python3 --version 입력합니다.

Azure 계정 만들기

Azure를 사용하여 Python 애플리케이션을 개발하려면 Azure 계정이 필요합니다. Azure 계정은 Azure에 로그인하는 데 사용하는 자격 증명과 Azure 리소스를 만드는 데 사용하는 자격 증명입니다.

직장에서 Azure를 사용하는 경우 회사의 클라우드 관리자에게 문의하여 Azure에 로그인하는 데 사용되는 자격 증명을 가져옵니다.

그렇지 않으면 Azure 계정을 무료로 만들고 12개월 동안 인기 있는 서비스를 무료로 받고 30일 동안 Azure를 탐색할 수 있는 $200 크레딧을 받을 수 있습니다.

Azure Portal 사용

자격 증명이 있으면 .에서 https://portal.azure.comAzure Portal로그인할 수 있습니다. Azure Portal은 일반적으로 Azure를 시작하는 가장 쉬운 방법이며, 특히 Azure 및 클라우드 개발을 접하는 경우 더욱 그렇습니다. Azure Portal에서 리소스 만들기 및 삭제와 같은 다양한 관리 작업을 수행할 수 있습니다.

Azure 및 클라우드 개발 경험이 이미 있는 경우 Visual Studio Code 및 Azure CLI와 같은 도구 사용을 시작할 수 있습니다. Python 개발자 센터의 문서에서는 Azure Portal, Visual Studio Code 및 Azure CLI로 작업하는 방법을 보여 줍니다.

Visual Studio Code 사용

모든 편집기 또는 IDE를 사용하여 Azure용으로 개발할 때 Python 코드를 작성할 수 있습니다. 그러나 Azure 및 Python 개발을 위해 Visual Studio Code를 사용하는 것이 좋습니다. Visual Studio Code는 Azure 및 Python에 대한 많은 확장 및 사용자 지정을 제공하여 개발 주기와 로컬 환경에서 Azure로의 배포를 더 쉽게 만듭니다.

Visual Studio Code를 사용한 Python 개발의 경우 다음을 설치합니다.

  • Python 확장. 이 확장에는 IntelliSense(Pylance), Linting, 디버깅(다중 스레드, 원격), Jupyter Notebook, 코드 서식 지정, 리팩터링, 단위 테스트 등이 포함됩니다.

  • Azure 도구 확장 팩. 확장 팩에는 Azure 앱 Service, Azure Functions, Azure Storage, Azure Cosmos DB 및 Azure Virtual Machines를 하나의 편리한 패키지로 사용하기 위한 확장이 포함되어 있습니다. Azure 확장을 사용하면 Azure를 쉽게 검색하고 상호 작용할 수 있습니다.

Visual Studio Code에서 확장을 설치하려면 다음을 수행합니다.

  1. Ctrl+Shift+X를 눌러 확장 창을 엽니다.
  2. Azure Tools 확장을 검색합니다.
  3. 설치 단추를 선택합니다.

Screenshot of the Visual Studio Code showing extensions panel searching for the Azure Tools extension pack.

Visual Studio Code에서 확장을 설치하는 방법에 대한 자세한 내용은 Visual Studio Code 웹 사이트에서 Extension Marketplace(확장 Marketplace) 문서를 참조하세요.

Azure Tools 확장을 설치한 후 Azure 계정으로 로그인합니다. 왼쪽 패널에 Azure 아이콘이 표시됩니다. 이 아이콘을 선택하면 Azure 서비스의 제어판이 표시됩니다. Azure에 로그인을 선택하여 인증 프로세스를 완료합니다.

Screenshot of the Visual Studio Code showing how to sign-in the Azure tools to Azure.

참고 항목

"이름이 [구독 ID]인 구독을 찾을 수 없습니다."라는 오류가 표시되면 프록시 뒤에 있고 Azure API에 연결할 수 없기 때문일 수 있습니다. 터미널에서 프록시 정보를 사용하여 변수를 구성 HTTP_PROXY 하고 HTTPS_PROXY 환경합니다.

# Windows
set HTTPS_PROXY=https://username:password@proxy:8080
set HTTP_PROXY=http://username:password@proxy:8080
# macOS/Linux
export HTTPS_PROXY=https://username:password@proxy:8080
export HTTP_PROXY=http://username:password@proxy:8080

Azure CLI 사용

Azure Portal 및 Visual Studio Code 외에도 Azure 리소스를 만들고 관리하는 Azure CLI 명령줄 도구도 제공합니다. Azure CLI는 효율성과 반복 가능성을 향상하고 반복 작업을 스크립팅할 수 있는 기능을 제공합니다. 실제로 대부분의 개발자는 Azure Portal과 Azure CLI를 모두 사용합니다.

Azure CLI를 설치한 후 워크스테이션의 터미널 창에 명령을 az login 입력하여 Azure CLI에서 Azure 계정에 로그인합니다.

az login

Azure CLI는 기본 브라우저를 열어 로그인 프로세스를 완료합니다.

Python 가상 환경 구성

Azure용 Python 애플리케이션을 만들 때 각 애플리케이션에 대한 가상 환경을 만드는 것이 좋습니다. 가상 환경은 특정 버전의 Python과 해당 애플리케이션에 필요한 다른 패키지에 대한 자체 포함 디렉터리입니다.

가상 환경을 만들려면 다음 단계를 수행합니다.

  1. 터미널 또는 명령 프롬프트를 엽니다.

  2. 프로젝트에 대한 폴더를 만듭니다.

  3. 다음과 같이 가상 환경을 만듭니다.

    # py -3 uses the global python interpreter. You can also use python3 -m venv .venv.
    py -3 -m venv .venv
    

    이 명령은 Python venv 모듈을 실행하고 ".venv" 폴더에 가상 환경을 만듭니다. 일반적으로 .gitignore 파일에는 ".venv" 항목이 있으므로 가상 환경이 코드 검사ins와 함께 검사 않습니다.

  4. 가상 환경을 활성화합니다.

    .venv\Scripts\activate
    

    참고 항목

    Windows 명령 셸 .venv\Scripts\activate을 사용하는 경우 . Windows의 Visual Studio Code에서 Git Bash를 사용하는 경우 대신 명령을 source .venv/Scripts/activate 사용합니다.

Visual Studio Code에서 자동으로 pip install 수행하는 환경을 활성화하면 해당 환경에만 라이브러리가 설치됩니다. 가상 환경에서 실행되는 Python 코드는 해당 가상 환경에 설치된 특정 패키지 버전을 사용합니다. 서로 다른 가상 환경을 사용하면 다른 애플리케이션에서 패키지의 다른 버전을 사용할 수 있으며, 경우에 따라 필요할 수 있습니다. 가상 환경에 대한 자세한 내용은 Python 문서의 가상 환경 및 패키지를 참조하세요.

예를 들어 요구 사항이 requirements.txt 파일에 있는 경우 활성화된 가상 환경 내에서 다음을 사용하여 설치할 수 있습니다.

pip install -r requirements.txt

3단계: Azure 개발 워크플로 이해

이전 문서: 리소스 프로비저닝, 액세스 및 관리

이제 Azure의 서비스 및 리소스 모델을 이해했으므로 Azure를 사용하여 클라우드 애플리케이션을 개발하는 전체 흐름(프로비전, 코드, 테스트, 배포관리)을 이해할 수 있습니다.

단계 기본 도구 활동
프로비전 Azure SDK 관리 라이브러리를 사용하는 Azure CLI, Azure Portal, VS Code Azure Tools 확장, Cloud Shell, Python 스크립트 리소스 그룹을 만들고 해당 그룹에 리소스를 만듭니다. 앱 코드에서 사용할 준비가 되거나 배포에서 Python 코드를 받을 준비가 되도록 리소스를 구성합니다.
코드 코드 편집기(예: Visual Studio Code 및 PyCharm), Azure SDK 클라이언트 라이브러리, 참조 설명서 Azure SDK 클라이언트 라이브러리를 사용하여 Python 코드를 작성하여 프로비전된 리소스와 상호 작용합니다.
테스트 Python 런타임, 디버거 활성 클라우드 리소스(일반적으로 프로덕션 리소스가 아닌 개발 또는 테스트 리소스)에 대해 로컬로 Python 코드를 실행합니다. 코드 자체는 아직 Azure에서 호스트되지 않으므로 신속하게 디버그하고 반복하는 데 도움이 됩니다.
배포 VS Code, Azure CLI, GitHub Actions, Azure Pipelines 코드를 로컬로 테스트한 후에는 코드 자체가 클라우드에서 실행될 수 있는 적절한 Azure 호스팅 서비스에 코드를 배포합니다. 배포된 코드는 일반적으로 스테이징 또는 프로덕션 리소스에 대해 실행됩니다.
관리 Azure CLI, Azure Portal, VS Code, Python 스크립트, Azure Monitor 앱 성능 및 응답성을 모니터링하고, 프로덕션 환경을 조정하고, 다음 프로비저닝 및 개발을 위해 개선 사항을 개발 환경으로 다시 마이그레이션합니다.

1단계: 리소스 프로비전 및 구성

이 시리즈의 이전 문서에서 설명한 대로 애플리케이션을 개발하는 첫 번째 단계는 애플리케이션의 대상 환경을 구성하는 리소스를 프로비전하고 구성하는 것입니다.

프로비전은 적절한 Azure 지역에 리소스 그룹을 만들어 시작합니다. Azure Portal, Azure Tools 확장을 사용하는 VS Code, Azure CLI 또는 Azure SDK 관리 라이브러리(또는 REST API)를 사용하는 사용자 지정 스크립트를 사용하여 리소스 그룹을 만들 수 있습니다.

그런 다음, 해당 리소스 그룹 내에서 포털, VS Code, CLI 또는 Azure SDK를 사용하여 필요한 개별 리소스를 프로비전하고 구성합니다. (다시, 다음을 검토합니다. 사용 가능한 리소스 종류에 대한 개요에 대한 Azure 개발자 가이드 입니다.)

구성에는 해당 리소스에 액세스할 수 있는 ID(서비스 주체 및/또는 애플리케이션 ID)를 제어하는 액세스 정책 설정이 포함됩니다. 액세스 정책은 Azure RBAC(역할 기반 액세스 제어)를 통해 관리됩니다. 일부 서비스에는 보다 구체적인 액세스 제어도 있습니다. Azure를 사용하는 클라우드 개발자는 보안 문제가 있는 리소스에만 사용하므로 Azure RBAC를 숙지해야 합니다.

대부분의 애플리케이션 시나리오에서는 일반적으로 Azure SDK 관리 라이브러리를 사용하여 Azure CLI 및/또는 Python 코드를 사용하여 프로비저닝 스크립트를 만듭니다. 이러한 스크립트는 애플리케이션의 모든 리소스 요구 사항을 설명합니다(기본적으로 애플리케이션이 배포되는 사용자 지정 클라우드 컴퓨터를 정의함). 스크립트를 사용하면 개발, 테스트, 스테이징 및 프로덕션과 같은 다양한 환경 내에서 동일한 리소스 집합을 쉽게 다시 만들 수 있습니다. 자동화하는 경우 Azure Portal 또는 VS Code에서 여러 반복된 단계를 수동으로 수행하지 않도록 할 수 있습니다. 또한 이러한 스크립트를 사용하면 다른 지역에서 환경을 쉽게 프로비전하거나 다른 리소스 그룹을 사용할 수 있습니다. 소스 제어 리포지토리에서 이러한 스크립트를 기본 경우 전체 감사 및 변경 기록도 있습니다.

2단계: 리소스를 사용하는 앱 코드 작성

애플리케이션에 필요한 리소스를 프로비저닝한 후에는 해당 리소스의 런타임 요소와 함께 작동하도록 애플리케이션 코드를 작성합니다.

예를 들어 프로비저닝 단계에서 Azure Storage 계정을 만들고, 해당 계정 내에 Blob 컨테이너를 만들고, 해당 컨테이너에서 애플리케이션에 대한 액세스 정책을 설정할 수 있습니다. 이 프로비저닝 프로세스는 예제 - Azure Storage 프로비전에 설명되어 있습니다. 이제 코드에서 해당 스토리지 계정으로 인증한 다음, 해당 컨테이너 내에서 BLOB을 생성, 업데이트 또는 삭제할 수 있습니다. 이 런타임 프로세스는 예제 - Azure Storage 사용에서 설명합니다. 마찬가지로, 애플리케이션 코드에서 데이터베이스에 연결하고 일상적인 만들기-읽기-업데이트-삭제 쿼리를 수행할 수 있도록 스키마와 적절한 권한을 사용하여 데이터베이스를 프로비저닝할 수 있습니다(자세한 내용은 예제 - Azure Storage 사용 참조).

앱 코드는 일반적으로 환경 변수를 사용하여 사용할 리소스의 이름과 URL을 식별합니다. 환경 변수를 사용하면 코드를 변경하지 않고 클라우드 환경(개발, 테스트, 준비 및 프로덕션) 간에 쉽게 전환할 수 있습니다. 애플리케이션 코드를 호스팅하는 다양한 Azure 서비스는 필요한 변수를 정의하는 수단을 제공합니다. 예를 들어 Azure 앱 Service(웹앱을 호스트하기 위해) 및 Azure Functions(Azure용 서버리스 컴퓨팅)에서 Azure Portal, VS Code 또는 Azure CLI를 통해 애플리케이션 설정을 정의한 다음, 코드에 환경 변수로 표시됩니다.

Python 개발자는 Python용 Azure SDK 클라이언트 라이브러리를 사용하여 Python에서 애플리케이션 코드를 작성할 가능성이 높습니다. 즉, 클라우드 애플리케이션의 독립적인 부분은 지원되는 모든 언어로 작성할 수 있습니다. 여러 프로그래밍 언어를 사용하여 팀에서 작업하는 경우 애플리케이션의 일부 부분에서 Python, 일부 JavaScript, 일부 Java 및 기타 C#을 사용할 수 있습니다.

애플리케이션 코드는 Azure SDK 관리 라이브러리를 사용하여 필요에 따라 프로비저닝 및 관리 작업을 수행할 수 있습니다. 마찬가지로 프로비저닝 스크립트는 SDK 클라이언트 라이브러리를 사용하여 특정 데이터로 리소스를 초기화하거나 해당 스크립트가 로컬로 실행되는 경우에도 클라우드 리소스에서 하우스키핑 작업을 수행할 수 있습니다.

3단계: 로컬에서 앱 코드 테스트 및 디버그

개발자는 일반적으로 해당 코드를 클라우드에 배포하기 전에 로컬 워크스테이션에서 앱 코드를 테스트하는 것을 좋아합니다. 앱 코드를 로컬로 테스트한다는 것은 일반적으로 스토리지, 데이터베이스 등 클라우드에서 이미 프로비전한 다른 리소스에 액세스한다는 것을 의미합니다. 차이점은 클라우드 서비스 내에서 앱 코드 자체를 아직 실행하지 않는다는 것입니다.

코드를 로컬로 실행하면 Visual Studio Code와 같은 도구에서 제공하는 디버깅 기능을 최대한 활용하고 소스 제어 리포지토리에서 코드를 관리할 수도 있습니다.

로컬 테스트를 위해 코드를 수정할 필요가 없습니다. Azure는 클라우드에 배포하는 것과 동일한 코드를 사용하여 로컬 개발 및 디버깅을 완벽하게 지원합니다. 환경 변수는 다시 핵심입니다. 클라우드에서 코드는 호스팅 리소스의 설정에 환경 변수로 액세스할 수 있습니다. 동일한 환경 변수를 로컬로 만들면 수정 없이 동일한 코드가 실행됩니다. 이 패턴은 인증 자격 증명, 리소스 URL, 연결 문자열 및 기타 다양한 설정에 대해 작동하므로 코드를 클라우드에 배포한 후 로컬 및 프로덕션 리소스를 실행할 때 개발 환경에서 리소스를 쉽게 사용할 수 있습니다.

4단계: Azure에 앱 코드 배포

코드를 로컬로 테스트한 후에는 코드를 호스트하도록 프로비전한 Azure 리소스에 코드를 배포할 준비가 된 것입니다. 예를 들어 Django 웹앱을 작성하는 경우 해당 코드를 가상 머신(사용자 고유의 웹 서버를 제공하는 위치)에 배포하거나 웹 서버를 제공하는 Azure 앱 Service에 배포합니다. 배포된 코드는 로컬 머신이 아닌 서버에서 실행되며, 권한이 부여된 모든 Azure 리소스에 액세스할 수 있습니다.

이전 섹션에서 설명한 것처럼 일반적인 개발 프로세스에서는 먼저 개발 환경에서 프로비전한 리소스에 코드를 배포합니다. 테스트를 마친 후 스테이징 환경의 리소스에 코드를 배포하여 테스트 팀에서 애플리케이션을 사용할 수 있도록 하고 고객을 미리 볼 수 있습니다. 애플리케이션의 성능에 만족하면 프로덕션 환경에 코드를 배포할 수 있습니다. Azure Pipelines 및 GitHub Actions를 사용하여 연속 통합 및 지속적인 배포를 통해 이러한 모든 배포를 자동화할 수도 있습니다.

그러나 이렇게 하면 코드가 클라우드에 배포되면 Azure 데이터 센터의 서버 컴퓨터에서 완전히 실행되는 클라우드 애플리케이션이 됩니다.

5단계: 관리, 모니터링 및 수정

배포 후에는 애플리케이션이 예상대로 수행되고, 고객 요청에 응답하고, 리소스를 효율적으로(그리고 가장 낮은 비용으로) 사용하는지 확인하려고 합니다. 필요에 따라 Azure에서 배포 크기를 자동으로 조정하는 방법을 관리할 수 있으며 Azure Portal, VS Code, Azure CLI 또는 Azure SDK 라이브러리로 작성된 사용자 지정 스크립트를 사용하여 성능 데이터를 수집하고 모니터링할 수 있습니다. 그런 다음, 다시 한 번 같은 도구를 사용하여 프로비저닝된 리소스를 실시간으로 조정하면서 성능을 최적화할 수 있습니다.

모니터링은 클라우드 애플리케이션을 재구성하는 방법에 대한 인사이트를 제공합니다. 예를 들어 웹앱의 특정 부분(예: API 엔드포인트 그룹)이 기본 부분과 비교하여 가끔만 사용되는 것을 확인할 수 있습니다. 그런 다음 해당 API를 서버리스 Azure Functions로 별도로 배포하도록 선택할 수 있습니다. 함수로서 기본 애플리케이션과 경쟁하지 않지만 매월 동전만 요하는 자체 백업 컴퓨팅 리소스가 있습니다. 그러면 기본 애플리케이션은 더 높은 비용 계층으로 확장할 필요 없이 더 많은 고객에게 응답합니다.

다음 단계

이제 Azure의 기본 구조와 전체 개발 흐름에 대해 잘 알고 있습니다. 리소스 프로비전, 코드 작성 및 테스트, Azure에 코드 배포, 해당 리소스 모니터링 및 관리.