빠른 시작: 기존 MongoDB Node.js 웹앱을 Azure Cosmos DB로 마이그레이션Quickstart: Migrate an existing MongoDB Node.js web app to Azure Cosmos DB

이 빠른 시작에서는 Node.js로 작성된 기존 MongoDB 앱을 사용하는 방법을 보여주고, MongoDB 클라이언트를 지원하는 Azure Cosmos 데이터베이스에 연결합니다.This quickstart demonstrates how to use an existing MongoDB app written in Node.js and connect it to your Azure Cosmos database, which supports MongoDB client. 즉, Cosmos 데이터베이스에서 데이터가 저장되는 애플리케이션에 대해 투명합니다.In other words, it is transparent to the application that the data is stored in a Cosmos database.

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.

완료하고 나면 MEAN 애플리케이션(MongoDB, Express, Angular 및 Node.js)이 Cosmos DB에서 실행됩니다.When you are done, you will have a MEAN application (MongoDB, Express, Angular, and Node.js) running on Cosmos DB.

Azure App Service에서 실행 중인 MEAN.js 응용 프로그램

Azure Cloud Shell 사용Use Azure Cloud Shell

Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스 작업을 수행할 수 있습니다.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. 로컬 환경에 아무 것도 설치할 필요 없이 Azure Cloud Shell의 미리 설치된 명령을 사용하여 이 문서의 코드를 실행할 수 있습니다.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell을 시작하려면 다음을 수행합니다.To start Azure Cloud Shell:

옵션Option 예제/링크Example/Link
코드 블록의 오른쪽 위 모서리에서 사용을 선택합니다.Select Try It in the upper-right corner of a code block. 사용해보기를 선택하면 코드가 Cloud Shell에 자동으로 복사되지 않습니다.Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell에 대한 사용 예제
https://shell.azure.com으로 이동하거나 Cloud Shell 시작 버튼을 선택하여 브라우저에서 Cloud Shell을 엽니다.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. 새 창에서 Cloud Shell 시작Launch Cloud Shell in a new window
Azure Portal 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure Portal의 Cloud Shell 단추

이 문서의 코드를 Azure Cloud Shell에서 실행하려면 다음을 수행합니다.To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell을 시작합니다.Start Cloud Shell.

  2. 코드 블록의 복사 단추를 선택하여 코드를 복사합니다.Select the Copy button on a code block to copy the code.

  3. Windows 및 Linux에서 Ctrl+Shift+V를 선택하거나 macOS에서 Cmd+Shift+V를 선택하여 코드를 Cloud Shell 세션에 붙여넣습니다.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Enter를 선택하여 코드를 실행합니다.Select Enter to run the code.

CLI를 로컬로 설치하여 사용하도록 선택한 경우 이 항목에서 Azure CLI 버전 2.0 이상을 실행해야 합니다.If you choose to install and use the CLI locally, this topic requires that you are running the Azure CLI version 2.0 or later. az --version을 실행하여 버전을 찾습니다.Run az --version to find the version. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.If you need to install or upgrade, see Install Azure CLI.

필수 조건Prerequisites

Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.If you don't have an Azure subscription, create a free account before you begin.

또는 Azure 구독, 요금 및 약정 없이 Azure Cosmos DB 평가판을 사용할 수 있습니다.Alternatively, you can Try Azure Cosmos DB for free without an Azure subscription, free of charge and commitments. 또는 다음 연결 문자열과 함께 이 자습서에 Azure Cosmos DB 에뮬레이터를 사용할 수 있습니다.Or you can use the Azure Cosmos DB Emulator for this tutorial with a connection string of

mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true

Azure CLI 외에도 npmgit 명령을 실행하려면 Node.jsGit가 로컬로 설치되어 있어야 합니다.In addition to Azure CLI, you need Node.js and Git installed locally to run npm and git commands.

Node.js에 대한 실무 지식이 있어야 합니다.You should have working knowledge of Node.js. 이 빠른 시작은 일반적으로 Node.js 애플리케이션을 개발하는 데 도움이 되지 않습니다.This quickstart is not intended to help you with developing Node.js applications in general.

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

다음 명령을 실행하여 샘플 리포지토리를 복제합니다.Run the following commands to clone the sample repository. 이 샘플 리포지토리에는 기본 MEAN.js 애플리케이션이 들어 있습니다.This sample repository contains the default MEAN.js application.

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

    mkdir "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/prashanthmadi/mean
    

애플리케이션 실행Run the application

필요한 패키지를 설치하고 애플리케이션을 시작합니다.Install the required packages and start the application.

cd mean
npm install
npm start

애플리케이션은 MongoDB 원본에 연결을 시도했다가 실패하고, 계속 진행하다가, 출력이 “[MongoError: connect ECONNREFUSED 127.0.0.1:27017]”을 반환하면 애플리케이션을 종료합니다.The application will try to connect to a MongoDB source and fail, go ahead and exit the application when the output returns "[MongoError: connect ECONNREFUSED 127.0.0.1:27017]".

Azure에 로그인Log in to Azure

설치된 Azure CLI를 사용하는 경우 az login 명령을 사용하여 Azure 구독에 로그인하고 화면의 지시를 따릅니다.If you are using an installed Azure CLI, log in to your Azure subscription with the az login command and follow the on-screen directions. Azure Cloud Shell을 사용하는 경우 이 단계를 건너뛸 수 있습니다.You can skip this step if you're using the Azure Cloud Shell.

az login 

Azure Cosmos DB 모듈 추가Add the Azure Cosmos DB module

설치된 Azure CLI를 사용하는 경우 az 명령을 실행하여 cosmosdb 구성 요소가 이미 설치되어 있는지 확인합니다.If you are using an installed Azure CLI, check to see if the cosmosdb component is already installed by running the az command. 기본 명령 목록에 cosmosdb가 있으면 다음 명령으로 진행합니다.If cosmosdb is in the list of base commands, proceed to the next command. Azure Cloud Shell을 사용하는 경우 이 단계를 건너뛸 수 있습니다.You can skip this step if you're using the Azure Cloud Shell.

cosmosdb가 기본 명령 목록에 없으면 Azure CLI를 다시 설치합니다.If cosmosdb is not in the list of base commands, reinstall Azure CLI.

리소스 그룹 만들기Create a resource group

az group create를 사용하여 리소스 그룹을 만듭니다.Create a resource group with the az group create. Azure 리소스 그룹은 웹앱, 데이터베이스, 스토리지 계정이 관리되었는지 등 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다.An Azure resource group is a logical container into which Azure resources like web apps, databases and storage accounts are deployed and managed.

다음 예제에서는 유럽 서부 지역의 리소스 그룹을 만듭니다.The following example creates a resource group in the West Europe region. 리소스 그룹에 고유한 이름을 선택합니다.Choose a unique name for the resource group.

Azure Cloud Shell을 사용하는 경우 시도를 선택하고, 화면의 지시에 따라 로그인한 다음, 명령 프롬프트에 명령을 복사합니다.If you are using Azure Cloud Shell, select Try It, follow the onscreen prompts to login, then copy the command into the command prompt.

az group create --name myResourceGroup --location "West Europe"

Azure Cosmos DB 계정 만들기Create an Azure Cosmos DB account

az cosmosdb create 명령을 사용하여 Cosmos 계정을 만듭니다.Create a Cosmos account with the az cosmosdb create command.

다음 명령에서 <cosmosdb-name> 자리 표시자를 표시하는 고유한 Cosmos 계정 이름을 바꿉니다.In the following command, please substitute your own unique Cosmos account name where you see the <cosmosdb-name> placeholder. 이 고유한 이름은 Cosmos DB 엔드포인트(https://<cosmosdb-name>.documents.azure.com/)의 일부로 사용되므로, Azure의 모든 Cosmos 계정에서 고유해야 합니다.This unique name will be used as part of your Cosmos DB endpoint (https://<cosmosdb-name>.documents.azure.com/), so the name needs to be unique across all Cosmos accounts in Azure.

az cosmosdb create --name <cosmosdb-name> --resource-group myResourceGroup --kind MongoDB

--kind MongoDB 매개 변수는 MongoDB 클라이언트 연결을 사용하도록 설정합니다.The --kind MongoDB parameter enables MongoDB client connections.

Azure Cosmos DB 계정을 만든 경우 Azure CLI는 다음 예와 비슷한 정보를 표시합니다.When the Azure Cosmos DB account is created, the Azure CLI shows information similar to the following example.

참고

이 예서는 Azure CLI 출력 형식으로 JSON을 사용합니다(기본값).This example uses JSON as the Azure CLI output format, which is the default. 다른 출력 형식을 사용하려면 Azure CLI 명령에 대한 출력 형식을 참조하세요.To use another output format, see Output formats for Azure CLI commands.

{
  "databaseAccountOfferType": "Standard",
  "documentEndpoint": "https://<cosmosdb-name>.documents.azure.com:443/",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Document
DB/databaseAccounts/<cosmosdb-name>",
  "kind": "MongoDB",
  "location": "West Europe",
  "name": "<cosmosdb-name>",
  "readLocations": [
    {
      "documentEndpoint": "https://<cosmosdb-name>-westeurope.documents.azure.com:443/",
      "failoverPriority": 0,
      "id": "<cosmosdb-name>-westeurope",
      "locationName": "West Europe",
      "provisioningState": "Succeeded"
    }
  ],
  "resourceGroup": "myResourceGroup",
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "writeLocations": [
    {
      "documentEndpoint": "https://<cosmosdb-name>-westeurope.documents.azure.com:443/",
      "failoverPriority": 0,
      "id": "<cosmosdb-name>-westeurope",
      "locationName": "West Europe",
      "provisioningState": "Succeeded"
    }
  ]
} 

데이터베이스에 Node.js 애플리케이션 연결Connect your Node.js application to the database

이 단계에서는 방금 만든 Cosmos 데이터베이스에 MEAN.js 샘플 애플리케이션을 연결합니다.In this step, you connect your MEAN.js sample application to Cosmos database you just created.

Node.js 애플리케이션에 연결 문자열 구성Configure the connection string in your Node.js application

MEAN.js 리포지토리에서 config/env/local-development.js를 엽니다.In your MEAN.js repository, open config/env/local-development.js.

이 파일 내용을 다음 코드로 바꿉니다.Replace the content of this file with the following code. 또한 두 <cosmosdb-name> 자리 표시자를 해당하는 Cosmos 계정 이름으로 바꿔야 합니다.Be sure to also replace the two <cosmosdb-name> placeholders with your Cosmos account name.

'use strict';

module.exports = {
  db: {
    uri: 'mongodb://<cosmosdb-name>:<primary_master_key>@<cosmosdb-name>.documents.azure.com:10255/mean-dev?ssl=true&sslverifycertificate=false'
  }
};

키 검색Retrieve the key

Cosmos 데이터베이스에 연결하려면 데이터베이스 키가 필요합니다.In order to connect to a Cosmos database, you need the database key. az cosmosdb keys list 명령을 사용하여 기본 키를 검색합니다.Use the az cosmosdb keys list command to retrieve the primary key.

az cosmosdb keys list --name <cosmosdb-name> --resource-group myResourceGroup --query "primaryMasterKey"

Azure CLI는 다음 예와 유사한 정보를 출력합니다.The Azure CLI outputs information similar to the following example.

"RUayjYjixJDWG5xTqIiXjC..."

primaryMasterKey의 값을 복사합니다.Copy the value of primaryMasterKey. local-development.js에 있는 <primary_master_key>에 덮어씁니다.Paste this over the <primary_master_key> in local-development.js.

변경 내용을 저장합니다.Save your changes.

애플리케이션을 다시 실행합니다.Run the application again.

npm start을 다시 실행합니다.Run npm start again.

npm start

이제 콘솔 메시지에서는 개발 환경이 실행된다고 알려 주어야 합니다.A console message should now tell you that the development environment is up and running.

브라우저에서 http://localhost:3000으로 이동합니다.Go to http://localhost:3000 in a browser. 맨 위 메뉴에서 등록을 선택하여 두 개의 더미 사용자를 만듭니다.Select Sign Up in the top menu and try to create two dummy users.

MEAN.js 샘플 애플리케이션은 데이터베이스에 사용자 데이터를 저장합니다.The MEAN.js sample application stores user data in the database. 성공해서 MEAN.js가 생성된 사용자로 자동 로그인하면 Azure Cosmos DB 연결이 작동합니다.If you are successful and MEAN.js automatically signs into the created user, then your Azure Cosmos DB connection is working.

MEAN.js가 MongoDB 연결에 성공

데이터 탐색기에서 데이터 보기View data in Data Explorer

Cosmos 데이터베이스에 저장된 데이터는 Azure Portal에서 살펴보고 쿼리할 수 있습니다.Data stored in a Cosmos database is available to view and query in the Azure portal.

이전 단계에서 만든 사용자 데이터를 보고 쿼리하고 사용하려면 웹 브라우저에서 Azure Portal에 로그인합니다.To view, query, and work with the user data created in the previous step, login to the Azure portal in your web browser.

맨 위 검색 상자에 Azure Cosmos DB를 입력합니다.In the top Search box, enter Azure Cosmos DB. Cosmos 계정 블레이드가 열리면 Cosmos 계정을 선택합니다.When your Cosmos account blade opens, select your Cosmos account. 왼쪽 탐색에서 데이터 탐색기를 선택합니다.In the left navigation, select Data Explorer. 컬렉션 창에서 컬렉션을 확장하면 컬렉션에서 문서를 보고, 데이터를 쿼리하고 저장된 프로시저, 트리거 및 UDF를 만들고 실행합니다.Expand your collection in the Collections pane, and then you can view the documents in the collection, query the data, and even create and run stored procedures, triggers, and UDFs.

Azure Portal의 데이터 탐색기

Azure에 Node.js 애플리케이션 배포Deploy the Node.js application to Azure

이 단계에서는 Node.js 애플리케이션을 Cosmos DB에 배포합니다.In this step, you deploy your Node.js application to Cosmos DB.

개발 환경을 위해 이전에 변경한 구성 파일을 알 수 있습니다(/config/env/local-development.js).You may have noticed that the configuration file that you changed earlier is for the development environment (/config/env/local-development.js). 애플리케이션을 App Service에 배포하면 기본적으로 프로덕션 환경에서 실행합니다.When you deploy your application to App Service, it will run in the production environment by default. 이제 해당 구성 파일을 동일하게 변경해야 합니다.So now, you need to make the same change to the respective configuration file.

MEAN.js 리포지토리에서 config/env/production.js를 엽니다.In your MEAN.js repository, open config/env/production.js.

db 개체에서 다음 예에 표시된 것과 같이 uri 값을 바꿉니다.In the db object, replace the value of uri as show in the following example. 전과 같이 자리 표시자를 바꿔야 합니다.Be sure to replace the placeholders as before.

'mongodb://<cosmosdb-name>:<primary_master_key>@<cosmosdb-name>.documents.azure.com:10255/mean?ssl=true&sslverifycertificate=false',

참고

ssl=true 옵션은 Cosmos DB에서 SSL이 필요하기 때문에 중요합니다.The ssl=true option is important because Cosmos DB requires SSL.

터미널에서 Git에 모든 변경 내용을 커밋합니다.In the terminal, commit all your changes into Git. 두 명령을 복사하여 함께 실행할 수 있습니다.You can copy both commands to run them together.

git add .
git commit -m "configured MongoDB connection string"

리소스 정리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 계정을 만들고, 컬렉션을 만들고, 콘솔 앱을 실행하는 방법을 알아보았습니다.In this quickstart, you've learned how to create a Cosmos account, create a collection and run a console app. 이제 Cosmos 데이터베이스에 추가 데이터를 가져올 수 있습니다.You can now import additional data to your Cosmos database.