도구 및 SDK

Alpakka Couchbase와 Akka Streams로 더 나은 파이프라인 구축하기

6 분 읽기

Couchbase 개발자 경험 팀은 Couchbase 사용자들에게 클러스터를 위한 풍부한 오픈 소스 생태계를 제공하는 데 전념하고 있습니다. 최근 당사는 Couchbase Server의 최신 기능에 대한 지원을 포함하도록 Alpakka Couchbase 연동을 업데이트하는 작업을 진행해 왔습니다.

업데이트된 카우치베이스 연동 기능이 알팍카(Alpakka) 10.0.1 릴리스의 일부로 제공됩니다. 이번 포스트에서는 “travel-sample” 데이터셋을 사용하여 이 연동 기능과 그 구성 요소들의 기본적인 사용법을 개요로 살펴볼 수 있는 간단한 프로젝트를 검토해 보겠습니다. 

추가적인 사용 예시를 포함하여 통합 및 해당 API에 대한 가장 포괄적인 정보는 Alpakka 문서에서 확인할 수 있습니다. https://doc.akka.io/libraries/alpakka/current/couchbase.html

전제 조건

참고: Akka 종속성은 Akka의 보안 라이브러리 리포지토리에서 제공됩니다. 이에 액세스하려면 에 지정된 대로 보안 토큰화된 URL을 사용해야 합니다. https://account.akka.io/token.

Alpakka에서 Couchbase 사용법을 시연하기 위해, 이 프로젝트는 설정에서 어떤 Couchbase 클러스터에든 추가할 수 있는 travel-sample 데이터셋을 사용합니다. 이에 대한 자세한 정보는 Couchbase 문서에서 확인할 수 있습니다: https://docs.couchbase.com/java-sdk/current/ref/travel-app-data-model.html

샘플 프로젝트는 두 개의 엔드포인트를 구현합니다. 그중 하나는 도시, 국가, 공항 이름 또는 국제 코드로 공항을 검색할 수 있게 하고, 다른 하나는 식별자로 공항에 대한 전체 정보를 반환합니다.

예제 프로젝트의 소스 코드는 다음 URL에서 확인하실 수 있습니다: https://github.com/couchbaselabs/alpakka-example 

다음 명령어를 사용하여 git으로 복제할 수 있습니다:

깃 클론 https://github.com/couchbaselabs/alpakka-example.git

알팍카 개요

알팍카 프로젝트 자바와 스칼라를 위한 스트림 인식 및 반응형 통합 파이프라인을 구현하기 위한 이니셔티브입니다. 이는 다음을 기반으로 구축되었습니다. 아카 스트림즈, 그리고 처음부터 스트리밍을 네이티브로 이해하도록 설계되었으며, 배압(backpressure)에 대한 내장 지원을 통해 반응형 및 스트림 지향 프로그래밍을 위한 DSL을 제공합니다.

아카 스트림(Akka Streams)은 소스(Source), 싱크(Sink), 플로우(Flow)라는 세 가지 주요 컴포넌트를 중심으로 구조화되어 있습니다. 소스는 데이터를 방출하고, 싱크는 데이터를 소비하며, 플로우는 스트림을 통과하는 데이터를 변환하여 효율적이고 비동기적인 처리를 가능하게 합니다. 

저희 연동은 세 가지 유형의 컴포넌트를 모두 제공합니다.

  • CouchbaseSource 컴포넌트는 Couchbase SQL++ 쿼리를 실행하고 그 결과를 스트림의 데이터 소스로 사용합니다.
  • CouchbaseFlow는 식별자로 문서를 가져오며, 문서의 업서트, 대체 및 삭제도 수행합니다.
  • CouchbaseSink는 스트림의 마지막 단계로 사용할 수 있는 유사한 CouchbaseFlow 연산 세트를 제공합니다.

알파카-카우치베이스 설정

프로젝트 소스 코드는 파일을 포함하고 있습니다 src/main/resources/application.conf 다음 카우치베이스(Couchbase) 설정으로:

이 구성은 기본 설정을 사용하고 Alpakka 애플리케이션과 동일한 컴퓨터에서 실행되는 단일 노드 개발자 클러스터에서 작동해야 합니다. 또는 Couchbase Capella 클라우드 호스팅 클러스터에 대한 자격 증명으로 수정할 수 있습니다. 자격 증명 및 Couchbase 연결에 대한 자세한 내용은 Couchbase Capella에서 확인할 수 있습니다 (https://docs.couchbase.com/cloud/get-started/connect.html) 및 Couchbase Server (https://docs.couchbase.com/server/current/guides/connect.html#connecting-via-client) 문서.

공항 관제사

설정된 Couchbase 연결과 상호 작용하는 예제 코드는 다음에서 확인할 수 있습니다: 공항제어기 위치한, 클래스 src/main/java/travelsample/api/AirportController.java.  The Alpakka-Couchbase integration uses CouchbaseSessionSettings 특정 Couchbase 연결을 참조하는 객체입니다. 세션 설정 객체는 서로 다른 엔드포인트와 액터 간에 재사용할 수 있으므로, 컨트롤러의 생성자에서 생성되어 필드에 저장됩니다.

공항검색 이 클래스의 메서드는 다음을 구현합니다 /search?query= 알파카(Alpakka)에서 위치 인자(positional argument)와 함께 SQL++을 사용하는 엔드포인트와 그 시연: 

SQL++ 쿼리를 실행하려면 먼저 인스턴스를 생성해야 합니다. 카우치베이스소스 클래스를 생성하고 클러스터에 연결하는 데 필요한 정보(sessionSettings), 실행하려는 쿼리, 그리고 QueryOptions 객체로 전달되는 해당 쿼리의 인수를 사용하여 구성합니다. Couchbase Java SDK 문서에 따르면 위치 기반 인수와 이름 기반 인수 모두 지원됩니다. 쿼리 옵션 클래스.

그런 다음, 우리는 알팍카의 싱크 실행 생성된 소스의 메서드를 실행하여 쿼리를 실행하고 그 결과를 객체 스트림으로 가져옵니다.

두 번째 컨트롤러 메서드, ID로 조회, 구현합니다 /byId/{id} 공항 식별자를 받아 해당 식별자를 가진 문서에 저장된 공항 정보를 반환하는 엔드포인트.

We can use Alpakka’s Source::from method with a singleton list containing the requested identifier to create a source instance.

Then we use the Source.via method to route the source Akka stream (in this case of a single identifier) through a 카우치베이스플로우 object that is configured similarly to the 카우치베이스소스 class in the 공항검색 method. The instance of 카우치베이스플로우 will accept the requested identifier from the stream, fetch the corresponding document from the configured collection, and return it to the stream, replacing the identifier with an instance of 카우치베이스문서 object, which contains both the identifier and associated document.

Combining CouchbaseSink, 카우치베이스플로우, and other documented Couchbase objects as steps in the Akka streams together with actors from other Alpakka components allows for the creation of pipelines that can use Couchbase to store and fetch information, as well as use its powerful features for analytics and search.

Documentation and issue tracking

The Alpakka documentation (https://doc.akka.io/libraries/alpakka/current/couchbase.html) contains more information about using this integration, including upserting, modifying 그리고 deleting documents in a Couchbase cluster.  

Any suggestions about the integration or issues with it can be shared via the Alpakka GitHub Issues page.

이 기사 공유하기

작가

Senior Developer Advocate at Couchbase

댓글 남기기

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

개발 시작하기

NoSQL을 탐색하고, 리소스를 찾아보고, 튜토리얼을 시작하려면 개발자 포털을 확인하세요.

카펠라 프리 사용하기

단 몇 번의 클릭으로 카우치베이스(Couchbase)를 직접 체험해 보세요. Capella DBaaS는 시작하기 가장 쉽고 빠른 방법입니다.

연락해

Couchbase 제품군에 대해 더 알고 싶으신가요? 저희가 도와드리겠습니다.