카우치베이스 서버

카우치베이스 서버를 사용한 Azure 기능

Azure Functions는 Amazon의 Lambdas 또는 Google의 Cloud Functions(일명 "서버리스" 아키텍처)에 대한 Microsoft의 답변입니다. 작은 코드 조각을 배포하고 기본 서버는 Azure가 처리하도록 할 수 있는 방법을 제공합니다. 저는 한 번도 사용해 본 적이 없었기 때문에 "Hello, World"를 넘어 Couchbase Server와 함께 작동하도록 하여 사용해 보려고 생각했습니다.

다음이 있습니다. 더 많은 옵션 에서 단순한 HTTP 이벤트(예: Blob 트리거, GitHub 웹후크, Azure 저장소 큐 트리거 등) 이상의 기능을 사용할 수 있습니다. 하지만 이 블로그 게시물에서는 HTTP 이벤트에만 집중하겠습니다. Couchbase Server와 상호 작용하는 간단한 "Get" 및 "Set" 엔드포인트를 만들어 보겠습니다.

시작하기 전에 다음과 같이 따라할 수 있습니다. 이 블로그 게시물의 소스 코드 에서 확인하세요.

또한 카우치베이스 서버를 사용한 Azure 함수 및 지연 초기화 게시물. 여기에는 카우치베이스 서버 및 Azure 함수 사용에 대한 중요한 업데이트가 포함되어 있습니다.

Azure 함수 개발을 위한 설정하기

이 블로그 게시물에서는 Visual Studio 미리보기.

Visual Studio Preview

제가 이렇게 한 이유는 제작을 위한 편리한 도구 Visual Studio의 Azure 함수 프로젝트.

Azure Functions tool for Visual Studio

하지만 현재로서는 프리뷰 버전에서만 작동합니다. Azure 함수를 개발하기 위해 이러한 도구를 사용할 필요는 없지만 프로세스가 더 간단해졌습니다.

이 도구가 준비되면 파일→새로 만들기→프로젝트로 이동하기만 하면 됩니다. 그런 다음 "클라우드"에서 "Azure 함수"를 선택합니다.

New Azure Functions in Visual Studio

이렇게 하면 몇 개의 JSON 파일이 있는 빈 프로젝트가 생깁니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 항목을 추가한 다음 "Azure 함수"를 선택합니다.

Add Azure Function

다음으로 어떤 종류의 Azure 함수를 만들 것인지 선택해야 합니다. 저는 "HttpTrigger"를 선택했습니다. 또한 이 게시물을 단순하게 유지하기 위해 "익명"을 선택했지만 사용 사례에 따라 인증 토큰이 필요할 수도 있습니다. 이렇게 하면 매우 간단한 함수 셸이 생성됩니다(C# 클래스로). 이 함수를 로컬에서 실행할 수 있으므로(실제로 local.settings.json 파일의 용도가 바로 이것입니다) 아직 Azure에 배포하지 않고도 테스트해 볼 수 있습니다.

"Get" 함수 작성

먼저, ID로 데이터를 '가져오는' 함수와 주어진 데이터를 새로 '설정'하는 함수 두 가지를 만들기로 결정했습니다. 저는 간단한 C# POCO로 데이터의 모양을 정의하는 것으로 시작했습니다:

다음은 카우치베이스 서버에서 해당 문서를 '가져오기' 위해 작성한 Azure 함수입니다:

몇 가지 주의해야 할 사항:

  • 나는 "post" 툴링에 의해 생성된 것만 "get" 함수입니다.
  • 쿼리 매개변수를 구문 분석하는 것은 이 간단한 경우에 많은 추가 코드가 필요한 것처럼 보입니다. 또는 "매개 변수가 있는 함수"를 만들 수 있습니다.
  • GetCluster 그리고 GetBucket 에 대한 자세한 내용은 이 글의 뒷부분에서 설명하겠습니다. 하지만 간단히 설명하자면 이 코드가 로컬에서 작동하고 Azure에 배포되기를 원한다는 것입니다.

그런 다음 이 함수를 로컬에서 실행하면 다음과 비슷한 콘솔 화면이 표시됩니다:

Azure Functions running locally

하단에서 Azure 함수 URL을 확인할 수 있습니다. Couchbase에 문서가 있다고 가정하고(아직 없습니다), 다음과 같이 HTTP 요청을 만들 수 있습니다. 포스트맨과 같은 도구 에: http://localhost:7071/api/HttpTriggerCsharpGet?id=123456

현재 이렇게 하면 유효성 검사나 오류 검사 코드가 없으므로 응답으로 "null"이 반환됩니다. 이제 넘어가서 "Set" 함수를 만들어 보겠습니다.

"집합" 함수 작성

"설정" 기능은 약간 다릅니다. 문서 정보를 게시하고 "ID 123456으로 삽입된 새 문서"와 같은 메시지를 반환하기를 원합니다.

이 함수는 Get 함수와 모양이 비슷하지만 몇 가지 중요한 사항에 유의해야 합니다:

  • 오직 "post" 를 추가합니다.
  • 대신 HttpRequestMessage 를 첫 번째 매개 변수로 사용하기로 결정했습니다. 내 문서를 클릭하고 Azure 함수가 바인딩을 수행하도록 합니다.
  • 저는 HttpRequestMessage를 호출할 수 없습니다. CreateResponse 메서드를 사용할 수 없으므로 대신 새로운 HttpResponseMessage 를 직접 입력하면 마지막에 성공 메시지를 반환합니다.

Postman에서 요청을 만들려면 다음 URL을 사용하겠습니다. http://localhost:7071/api/HttpTriggerCsharpSet. 헤더에서 콘텐츠 유형 을 "application/json"으로 변경합니다. 마지막으로 본문은 JSON이 됩니다:

이제 엔드포인트에 해당 문서를 게시하면 "ID f05ea97e-7c2f-4f88-b72d-19756f6a6f35로 새 문서가 삽입되었습니다"라는 응답 메시지를 받게 됩니다.

카우치베이스 서버에 연결

이러한 기능이 Couchbase Server에 어떻게 연결되는지 간략하게 설명했습니다.

앞서 두 가지 방법을 언급했습니다, GetCluster 그리고 GetBucket 를 생성하여 각각 클러스터와 버킷에 연결합니다.

이 시점에서 이 코드의 대부분은 이전에 Couchbase Server와 Couchbase .NET SDK를 사용해 본 적이 있다면 익숙할 것입니다. 단일 노드 클러스터에 연결한 다음 비밀번호가 설정된 버킷을 연결하고 있습니다(저는 Couchbase Server 4.6을 사용하고 있습니다).

하지만 여기서 지적해야 할 중요한 점은 Configuration.AppSettings. 에서 local.settings.json 파일에서 값 섹션에 이러한 Couchbase 설정을 추가했습니다:

Azure 함수를 로컬에서 실행할 때 이 파일은 구성에 사용됩니다. 저는 "azurefunctions"라는 버킷을 사용하여 로컬에서 Couchbase Server를 실행하고 있습니다. "Values"의 모든 항목은 다음을 통해 액세스할 수 있습니다. Configuration.AppSettings.

Azure에 배포

Azure 함수를 배포하기 전에 Azure에서 Couchbase 클러스터를 만들어야 합니다. Azure Marketplace에 대한 Ben Lackey의 훌륭한 작업 덕분에 이 작업은 매우 쉽습니다. 일단 배포가 완료되면 Visual Studio 덕분에 Azure 함수를 배포하는 것도 쉽습니다.

Couchbase Server를 Azure에 배포하기

다음은 Azure에서 Couchbase Server 클러스터를 만드는 과정을 안내하는 짧은 동영상입니다.

[유튜브 https://www.youtube.com/watch?v=q9mBBu0YqJI&w=560&h=315]

제 예에서는 해당 동영상을 자세히 따라했습니다. 다음은 사용자 이름, 비밀번호 및 리소스 그룹을 구성하는 1단계입니다.

Create Couchbase Cluster step 1

두 번째 단계에서는 가장 작고 저렴한 VM(DS1 v2)에 단일 노드 클러스터만 생성했습니다. 이 예제에서는 동기화 게이트웨이를 사용하지 않으므로 동기화 게이트웨이 노드를 0개 만들었습니다.

Create Couchbase Cluster step 1

3단계는 요약이고 4단계는 확인입니다. Couchbase 클러스터가 Azure에서 시작되는 데 3~5분 정도 걸립니다.

클러스터가 생성되면 클러스터의 첫 번째 노드에 대한 URL을 찾습니다(위 동영상에서 설명한 대로). 제 URL은 다음과 같습니다: http://vm0.server-hsmkrefstzg2t.northcentralus.cloudapp.azure.com:8091. 이 URL로 이동하여 로그인하고 버킷을 만듭니다(저는 로컬에서 했던 것처럼 "azurefunctions"라고 이름 지었습니다).

Azure 함수를 Azure에 배포하기

이제 Couchbase Server가 실행 중입니다. 이제 이 서버와 상호 작용할 Azure 함수를 배포해 보겠습니다.

시작하려면 Visual Studio에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "게시"를 선택합니다. 이 작업을 처음 수행할 때 새 게시 프로필을 만들어야 하지만 이는 간단합니다.

Publish Azure functions

함수에 앱 이름을 지정하고, 구독을 선택하고, 리소스 그룹을 선택하고(새 그룹을 만들거나 위에서 Couchbase용으로 만든 것과 동일한 그룹을 사용할 수 있음), 서비스 요금제를 선택한 다음 마지막으로 저장소 계정을 선택합니다. 필요한 경우 새 계정을 만들 수 있습니다.

Create Publish Profile

"만들기"를 클릭하면 이러한 항목이 Azure에서 만들어지기 시작합니다(1~2분 정도 걸릴 수 있음).

Azure 기능 사용해 보기

마지막으로, Azure 함수가 Couchbase Server에 연결하려면 URI, 버킷 이름 및 비밀번호를 알아야 한다는 점을 기억하세요. 해당 정보는 local.settings.json에 있지만 이 파일은 실제 Azure 배포에는 사용되지 않습니다.

Azure 포털에서 Azure 함수(저는 cbazurefunctions라고 합니다)로 이동한 다음 "애플리케이션 설정"을 선택합니다. "앱 설정"에서 세 가지 설정인 couchbaseUri, couchbaseBucketName 및 couchbaseBucketPassword를 입력합니다.

Azure Functions App settings

이제 위에서 설명한 Postman 프로세스를 반복하여 Azure 기능을 사용해 보고 작동하는지 확인합니다. URL은 다를 수 있지만 제 URL은 다음과 같습니다. http://cbazurefunctions.azurewebsites.net/.

요약

Azure 함수를 사용해 본 것은 이번이 처음입니다. 이 블로그 게시물에서는 간단한 데모를 보여 드리지만 프로덕션 환경에서 사용하기 전에 고려해야 할 다른 요소도 있습니다:

  • 인증 - 간단하게 유지하기 위해 익명의 Azure 함수를 사용했습니다. Azure 함수는 인증 토큰을 제공하여 권한이 있는 사용자 외에는 액세스하지 못하도록 할 수도 있습니다.
  • 앱 설정 - 포털에서 수동으로 설정하는 것이 최선의 해결책이 아닐 수 있습니다. 이 부분을 자동화할 수 있는 방법이 있을 것입니다.
  • HTTPS/TLS - Azure 함수에 데이터를 가져오고 게시할 때 일정 수준의 암호화가 필요할 수 있습니다. 위의 예는 모든 것을 일반 텍스트로 전송합니다.

제가 놓친 것이 있나요? 이 과정을 더 쉽게 또는 더 좋게 만들기 위해 공유할 팁이나 제안이 더 있나요? 아래에 댓글을 남기거나 다음 주소로 핑을 보내주세요. 트위터 @mgroves.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.