빠른 시작: Azure Cosmos DB의 MongoDB API를 사용하여 Python 앱 빌드Quickstart: Build a Python app using Azure Cosmos DB's API for MongoDB

Azure Cosmos DB는 전 세계에 배포된 Microsoft의 다중 모델 데이터베이스 서비스입니다.Azure Cosmos DB is Microsoft’s globally distributed multi-model database service. Cosmos DB의 핵심인 글로벌 배포 및 수평적 크기 조정 기능의 이점을 활용하여 문서, 키/값 및 그래프 데이터베이스를 빠르게 만들고 쿼리할 수 있습니다.You can quickly create and query document, key/value, and graph databases, all of which benefit from the global distribution and horizontal scale capabilities at the core of Cosmos DB.

이 빠른 시작 가이드에서는 다음 Flask 예제를 사용하고, Azure Cosmos DB Emulator 및 Azure Cosmos DB의 API for MongoDB를 사용하여 간단한 To-Do Flask 앱을 빌드하는 방법을 보여줍니다.This quickstart guide uses the following Flask example and demonstrates how to build a simple To-Do Flask app with the Azure Cosmos DB Emulator and the Azure Cosmos DB's API for MongoDB.

필수 조건Prerequisites

  • Azure Cosmos DB Emulator를 다운로드합니다.Download the Azure Cosmos DB Emulator. 에뮬레이터는 현재 Windows에서만 지원됩니다.The emulator is currently only supported on Windows. 샘플은 모든 플랫폼에서 수행할 수 있는 Azure의 제품 키로 샘플을 사용하는 방법을 보여 줍니다.The sample shows how to use the sample with a production key from Azure, which can be done on any platform.

  • Visual Studio Code를 아직 설치하지 않은 경우 자신의 플랫폼(Windows, Mac, Linux)에 맞는 VS Code를 빠르게 설치할 수 있습니다.If you don’t already have Visual Studio Code installed, you can quickly install VS Code for your platform (Windows, Mac, Linux).

  • 인기 있는 Python 확장 중 하나를 설치하여 Python 언어 지원을 추가해야 합니다.Be sure to add Python Language support by installing one of the popular Python extensions.

    1. 확장을 선택합니다.Select an extension.

    2. Ctrl+Shift+P 명령 팔레트에 ext install을 입력하여 확장을 설치합니다.Install the extension by typing ext install into the Command Palette Ctrl+Shift+P.

      이 문서의 예제에서는 널리 사용되고 완벽한 Don Jayamanne의 Python 확장을 사용합니다.The examples in this document use Don Jayamanne's popular and full featured Python Extension.

샘플 애플리케이션 복제Clone the sample application

이제 GitHub에서 Flask-MongoDB 앱을 복제하고 연결 문자열을 설정한 다음, 실행해 보겠습니다.Now let's clone a Flask-MongoDB app from GitHub, set the connection string, and run it. 프로그래밍 방식으로 데이터를 사용하여 얼마나 쉽게 작업할 수 있는지 알게 될 것입니다.You see how easy it is to work with data programmatically.

  1. 명령 프롬프트를 git-samples라는 새 폴더를 만든 다음 명령 프롬프트를 닫습니다.Open a command prompt, create a new folder named git-samples, then close the command prompt.

    md "C:\git-samples"
    
  2. Git Bash와 같은 Git 터미널 창을 열고, cd 명령을 사용하여 샘플 앱을 설치할 새 폴더로 변경합니다.Open a git terminal window, such as git bash, and use the cd command to change to the new folder to install the sample app.

    cd "C:\git-samples"
    
  3. 다음 명령을 실행하여 샘플 리포지토리를 복제합니다.Run the following command to clone the sample repository. 이 명령은 컴퓨터에서 샘플 앱의 복사본을 만듭니다.This command creates a copy of the sample app on your computer.

    git clone https://github.com/Azure-Samples/CosmosDB-Flask-Mongo-Sample.git
    
  4. 다음 명령을 실행하여 Python 모듈을 설치합니다.Run the following command to install the python modules.

    pip install -r .\requirements.txt
    
  5. Visual Studio Code에서 해당 폴더를 엽니다.Open the folder in Visual Studio Code.

코드 검토Review the code

이 단계는 선택 사항입니다.This step is optional. 데이터베이스 리소스를 코드로 만드는 방법을 알아보려는 경우 다음 코드 조각을 검토할 수 있습니다.If you're interested in learning how the database resources are created in the code, you can review the following snippets. 그렇지 않으면 웹앱 실행으로 넘어갈 수 있습니다.Otherwise, you can skip ahead to Run the web app.

다음 코드 조각은 모두 app.py 파일에서 가져오고 로컬 Azure Cosmos DB 에뮬레이터에 대한 연결 문자열을 사용합니다.The following snippets are all taken from the app.py file and uses the connection string for the local Azure Cosmos DB Emulator. 그렇지 않으면 구문 분석할 수 없는 슬래시를 받아들이도록 아래와 같이 암호를 분할해야 합니다.The password needs to be split up as seen below to accommodate for the forward slashes that cannot be parsed otherwise.

  • MongoDB 클라이언트를 초기화하고, 데이터베이스를 검색하고, 인증합니다.Initialize the MongoDB client, retrieve the database, and authenticate.

    client = MongoClient("mongodb://127.0.0.1:10250/?ssl=true") #host uri
    db = client.test    #Select the database
    db.authenticate(name="localhost",password='C2y6yDjf5' + r'/R' + '+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw' + r'/Jw==')
    
  • 컬렉션을 검색하거나 아직 없는 경우 컬렉션을 만듭니다.Retrieve the collection or create it if it does not already exist.

    todos = db.todo #Select the collection
    
  • 앱 만들기Create the app

    app = Flask(__name__)
    title = "TODO with Flask"
    heading = "ToDo Reminder"
    

웹앱 실행Run the web app

  1. Azure Cosmos DB Emulator가 실행 중인지 확인합니다.Make sure the Azure Cosmos DB Emulator is running.

  2. 터미널 창을 열고 cd로 앱이 저장된 디렉터리로 이동합니다.Open a terminal window and cd to the directory that the app is saved in.

  3. 그런 다음, Flask 앱에 대한 환경 변수를 set FLASK_APP=app.py, PowerShell 편집기의 경우 $env:FLASK_APP = app.py 또는 Mac을 사용하는 경우 export FLASK_APP=app.py로 설정합니다.Then set the environment variable for the Flask app with set FLASK_APP=app.py, $env:FLASK_APP = app.py for PowerShell editors, or export FLASK_APP=app.py if you are using a Mac.

  4. flask run을 사용하여 앱을 실행하고 http://127.0.0.1:5000/으로 이동합니다.Run the app with flask run and browse to http://127.0.0.1:5000/.

  5. 작업을 추가하거나 제거하고, 컬렉션에서 추가하거나 변경된 작업을 확인합니다.Add and remove tasks and see them added and changed in the collection.

데이터베이스 계정 만들기Create a database account

  1. 새 창에서 Azure Portal에 로그인합니다.In a new window, sign in to the Azure portal.

  2. 왼쪽 메뉴에서 리소스 만들기, 데이터베이스를 차례로 선택한 다음, Azure Cosmos DB에서 만들기를 선택합니다.In the left menu, select Create a resource, select Databases, and then under Azure Cosmos DB, select Create.

    더 많은 서비스와 Azure Cosmos DB를 강조 표시한 Azure Portal의 스크린샷

  3. Azure Cosmos DB 계정 만들기 페이지에서 새 Azure Cosmos DB 계정에 대한 설정을 입력합니다.In the Create Azure Cosmos DB Account page, enter the settings for the new Azure Cosmos DB account.

    설정Setting Value 설명Description
    SubscriptionSubscription 사용자의 구독Your subscription 이 Azure Cosmos DB 계정에 사용하려는 Azure 구독을 선택합니다.Select the Azure subscription that you want to use for this Azure Cosmos DB account.
    리소스 그룹Resource Group 새로 만들기Create new

    다음으로, ID에 제공된 것과 동일한 고유한 이름 입력Then enter the same unique name as provided in ID
    새로 만들기를 선택합니다.Select Create new. 그런 다음, 계정에 대한 새 리소스 그룹 이름을 입력합니다.Then enter a new resource-group name for your account. 간단히 하기 위해 ID와 동일한 이름을 사용합니다.For simplicity, use the same name as your ID.
    계정 이름Account Name 고유한 이름을 입력합니다.Enter a unique name 내 Azure Cosmos DB 계정을 식별하는 고유한 이름을 입력합니다.Enter a unique name to identify your Azure Cosmos DB account. URI를 만들기 위해 제공하는 ID에 documents.azure.com이 추가되므로 고유한 ID를 사용합니다.Because documents.azure.com is appended to the ID that you provide to create your URI, use a unique ID.

    ID는 소문자, 숫자 및 하이픈(-) 문자만 사용할 수 있으며,The ID can use only lowercase letters, numbers, and the hyphen (-) character. 3~31자여야 합니다.It must be between 3 and 31 characters in length.
    APIAPI Azure Cosmos DB의 API for MongoDBAzure Cosmos DB's API for MongoDB API는 만들 계정의 형식을 결정합니다.The API determines the type of account to create. Azure Cosmos DB는 문서 데이터베이스용 Core(SQL), 그래프 데이터베이스용 Gremlin, 문서 데이터베이스용 Azure Cosmos DB의 API MongoDB, Azure Table 및 Cassandra의 5가지 API를 제공합니다.Azure Cosmos DB provides five APIs: Core (SQL) for document databases, Gremlin for graph databases, Azure Cosmos DB's API MongoDB for document databases, Azure Table, and Cassandra. 현재 각 API에 대한 별도의 계정을 만들어야 합니다.Currently, you must create a separate account for each API.

    이 빠른 시작에서는 MongoDB를 사용하는 테이블을 만들 예정이므로 MongoDB를 선택합니다.Select MongoDB because in this quickstart you are creating a table that works with the MongoDB.
    위치Location 사용자와 가장 가까운 지역 선택Select the region closest to your users Azure Cosmos DB 계정을 호스트할 지리적 위치를 선택합니다.Select a geographic location to host your Azure Cosmos DB account. 데이터에 가장 빨리 액세스할 수 있도록 사용자와 가장 가까운 위치를 사용합니다.Use the location that's closest to your users to give them the fastest access to the data.

    검토+만들기를 선택합니다.Select Review+Create. 네트워크태그 섹션을 건너뛸 수 있습니다.You can skip the Network and Tags section.

    Azure Cosmos DB에 대한 새 계정 페이지

  4. 계정 생성에는 몇 분 정도가 소요됩니다.The account creation takes a few minutes. 포털에서 축하합니다! MongoDB에 대한 유선 프로토콜 호환성이 있는 Cosmos 계정이 준비되었습니다. 페이지를 표시할 때까지 기다립니다.Wait for the portal to display the Congratulations! Your Cosmos account with wire protocol compatibility for MongoDB is ready page.

    Azure Portal 알림 창

연결 문자열 업데이트Update your connection string

라이브 Cosmos 계정을 상대로 코드를 테스트하려면 Azure Portal로 이동하여 계정을 만들고 연결 문자열 정보를 가져옵니다.If you want to test the code against a live Cosmos Account, go to the Azure portal to create an account and get your connection string information. 그런 다음 앱에 복사합니다.Then copy it into the app.

  1. Azure Portal의 Cosmos 계정에서 왼쪽 탐색 영역의 연결 문자열을 클릭한 다음, 읽기-쓰기 키를 클릭합니다.In the Azure portal, in your Cosmos account, in the left navigation click Connection String, and then click Read-write Keys. 다음 단계에서 화면의 오른쪽에 있는 복사 단추를 사용하여 사용자, 암호 및 호스트를 Dal.cs 파일에 복사합니다.You'll use the copy buttons on the right side of the screen to copy the Username, Password, and Host into the Dal.cs file in the next step.

  2. 루트 디렉터리에 있는 app.py 파일을 엽니다.Open the app.py file in the root directory.

  3. 포털에서 복사 단추를 사용하여 사용자 이름 값을 복사하고 app.py 파일의 이름 값으로 만듭니다.Copy your username value from the portal (using the copy button) and make it the value of the name in your app.py file.

  4. 그런 다음 포털에서 연결 문자열 값을 복사하고 app.py 파일의 MongoClient 값으로 만듭니다.Then copy your connection string value from the portal and make it the value of the MongoClient in your app.py file.

  5. 마지막으로, 포털에서 사용자의 암호 값을 복사하고 app.py 파일의 암호 값으로 만듭니다.Finally copy your password value from the portal and make it the value of the password in your app.py file.

이제 Cosmos DB와 통신하는 데 필요한 모든 정보로 앱이 업데이트되었습니다.You've now updated your app with all the info it needs to communicate with Cosmos DB. 이전과 같은 방식으로 실행할 수 있습니다.You can run it the same way as before.

Deploy to AzureDeploy to Azure

이 앱을 배포하려면 Azure에서 새 웹앱을 만들고 이 GitHub 리포지토리의 포크로 지속적인 배포를 사용하도록 설정할 수 있습니다.To deploy this app, you can create a new web app in Azure and enable continuous deployment with a fork of this GitHub repo. 자습서에 따라 Azure에서 GitHub를 사용하여 지속적인 배포를 설정합니다.Follow this tutorial to set up continuous deployment with GitHub in Azure.

Azure에 배포할 때 애플리케이션 키를 제거하고 아래 섹션이 주석 처리되어 있지 않은지 확인해야 합니다.When deploying to Azure, you should remove your application keys and make sure the section below is not commented out:

    client = MongoClient(os.getenv("MONGOURL"))
    db = client.test    #Select the database
    db.authenticate(name=os.getenv("MONGO_USERNAME"),password=os.getenv("MONGO_PASSWORD"))

그런 다음, MONGOURL, MONGO_PASSWORD 및 MONGO_USERNAME을 애플리케이션 설정에 추가해야 합니다.You then need to add your MONGOURL, MONGO_PASSWORD, and MONGO_USERNAME to the application settings. Azure Web Apps의 애플리케이션 설정에 대한 자세한 내용은 이 자습서를 참조하세요.You can follow this tutorial to learn more about Application Settings in Azure Web Apps.

이 리포지토리의 포크를 만들지 않으려면 아래의 [Azure에 배포] 단추를 클릭할 수도 있습니다.If you don't want to create a fork of this repo, you can also click the deploy to Azure button below. 그런 다음, Azure로 이동하고 Cosmos DB 계정 정보를 사용하여 애플리케이션 설정을 지정해야 합니다.You should then go into Azure and set up the application settings with your Cosmos DB account info.

Click to Deploy to Azure

참고

GitHub 또는 다른 원본 제어 옵션에 코드를 저장하려면 코드에서 연결 문자열을 제거합니다.If you plan to store your code in GitHub or other source control options, please be sure to remove your connection strings from the code. 대신 웹앱에 대한 애플리케이션 설정을 사용하여 지정할 수 있습니다.They can be set with application settings for the web app instead.

Azure Portal에서 SLA 검토Review SLAs in the Azure portal

Azure Portal에서는 Cosmos DB 계정 처리량, 스토리지, 가용성, 대기 시간 및 일관성을 모니터링합니다.The Azure portal monitors your Cosmos DB account throughput, storage, availability, latency, and consistency. Azure Cosmos DB SLA(서비스 수준 계약)와 관련된 메트릭 차트에는 실제 성능 대비 SLA 값이 표시됩니다.Charts for metrics associated with an Azure Cosmos DB Service Level Agreement (SLA) show the SLA value compared to actual performance. 이 메트릭 모음을 통해 SLA를 투명하게 모니터링할 수 있습니다.This suite of metrics makes monitoring your SLAs transparent.

메트릭 및 SLA를 검토하려면 다음을 수행합니다.To review metrics and SLAs:

  1. Cosmos DB 계정의 탐색 메뉴에서 메트릭을 선택합니다.Select Metrics in your Cosmos DB account's navigation menu.

  2. 대기 시간과 같은 탭을 선택하고, 오른쪽에서 시간 프레임을 선택합니다.Select a tab such as Latency, and select a timeframe on the right. 차트의 실제SLA 줄을 비교합니다.Compare the Actual and SLA lines on the charts.

    Azure Cosmos DB 메트릭 도구 모음

  3. 다른 탭의 메트릭을 검토합니다.Review the metrics on the other tabs.

리소스 정리Clean up resources

웹앱과 Azure Cosmos DB 계정을 모두 사용했으면 추가로 비용을 지불하지 않도록 만든 Azure 리소스를 삭제할 수 있습니다.When you're done with your web app and Azure Cosmos DB account, you can delete the Azure resources you created so you don't incur more charges. 리소스를 삭제하려면:To delete the resources:

  1. Azure Portal의 맨 왼쪽에서 리소스 그룹을 선택합니다.In the Azure portal, select Resource groups on the far left. 왼쪽 메뉴가 축소되어 있으면 확장 버튼을 선택하여 확장합니다.If the left menu is collapsed, select Expand button to expand it.

  2. 이 빠른 시작에서 만든 리소스 그룹을 선택합니다.Select the resource group you created for this quickstart.

    삭제할 리소스 그룹 선택

  3. 새 창에서 리소스 그룹 삭제를 선택합니다.In the new window, select Delete resource group.

    리소스 그룹 삭제

  4. 새 창에서 삭제할 리소스 그룹의 이름을 입력한 다음, 삭제를 선택합니다.In the next window, enter the name of the resource group to delete, and then select Delete.

다음 단계Next steps

이 빠른 시작에서는 Cosmos 계정을 만들고 Flask 앱을 실행하는 방법을 알아보았습니다.In this quickstart, you've learned how to create a Cosmos account and run a Flask app. 이제 Cosmos 데이터베이스에 추가 데이터를 가져올 수 있습니다.You can now import additional data to your Cosmos database.