.NET

카우치베이스 서버를 사용한 Azure 함수 및 지연 초기화

Azure Functions는 아직 익숙하지 않아서 계속 배우고 있습니다. Couchbase를 사용한 Azure Functions에 대해 블로그에 포스팅했습니다. 한 달 전. 이 글을 게시한 직후, 저는 Couchbase 클러스터(및 버킷)를 인스턴스화하는 방식에 대한 유용한 피드백을 받았습니다.

저는 Azure 함수 호출 간에 상태를 저장할 방법이 없다고 (잘못) 생각했습니다. 그래서 저는 GetCluster() 메서드를 호출할 수 있습니다. 하지만 카우치베이스 초기화 클러스터 객체는 비용이 많이 드는 연산입니다. 인스턴스화 빈도가 적을수록 좋습니다.

정적 상태

사용 가능 여부에 대한 문서를 찾는 데 어려움을 겪었습니다. 정적 객체를 만들어 함수 호출 간에 재사용할 수 있습니다. 다음과 같은 실험을 해볼 걸 그랬어요. 동료 마이크로소프트 MVP 마크 히스 가 그랬죠. 대신, 저는 가 스택오버플로에 질문을 던졌습니다..

간단히 말해서 그렇습니다. A 클러스터를 인스턴스화하여 정적 멤버에 저장하면 함수 호출 간에 재사용할 수 있습니다. 위의 마크의 게시물에 따르면 이 값이 얼마나 오래 유지될지는 보장할 수 없습니다. 하지만 이는 "서버리스"로 전환할 때 예상되는 절충안입니다.

Azure 함수 내에서 지연 초기화

단순히 정적 멤버를 사용하면 작동하지만 스레드 안전하지 않습니다. 이 문제를 해결하는 몇 가지 방법이 있지만 .NET 프레임워크에 바로 내장되어 있는 쉬운 방법은 지연 초기화 와 함께 Lazy.

Lazy Initialization in Azure Functions

먼저, 저는 GetBucket 그리고 GetCluster 메서드를 추가했습니다. 다음으로, 저는 Lazy 속성을 대체할 수 있습니다.

이 예제에서는 버킷에 대한 단일 프로퍼티만 만들었으므로 이 정도면 충분합니다. 하지만 클러스터를 사용해야 하는 경우 자체적으로 쉽게 만들 수 있습니다. Lazy 속성을 추가합니다. (클러스터가 있으면 버킷을 얻는 것은 비교적 저렴한 작업입니다).

게으른 속성 사용

인스턴스화할 때 Lazy 객체에 초기화 람다를 제공하면 됩니다. 이 람다는 초기화 람다는 가치 속성이 실제로 처음으로 호출됩니다.

예를 들어 가치 사이 버킷 그리고 GetAsync 를 업데이트했습니다:

처음 사용하는 경우 가치 를 사용하면 클러스터가 초기화됩니다. 그렇지 않으면 이미 초기화된 클러스터를 사용합니다( Guid 대신 버킷).

요약

정적 멤버를 사용하여 Azure 함수 호출 간에 상태를 저장할 수 있습니다. 스레드에 안전한지 확인합니다( Lazy 또는 이와 유사한 것). 해당 객체가 얼마나 오래 있을지에 대해 어떤 가정도 하지 마세요.

제가 놓친 것이 있나요? Couchbase와 함께 Azure Functions를 사용하고 있나요? 여러분의 의견을 듣고 싶습니다. 아래에 댓글을 남기거나 다음 주소로 핑해 주세요. 트위터 @mgroves.

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

작성자

게시자 매튜 그로브스

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

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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