지난 몇 달 동안 열심히 노력해 온 내용을 발표할 수 있게 되어 매우 기쁩니다. SDK 팀 전체가 합심하여 더 빠르고, 더 간단한 API를 제공하며, 향후 출시될 서버 기능에 대비하고, 프레임워크 에코시스템과의 통합을 용이하게 하는 완전히 새로운 SDK를 출시하기 시작했습니다.

Java SDK를 개선하는 것 외에도 완전히 새로운 Scala SDK! Scala로 개발하는 모든 사람을 위한 최고 수준의 지원을 제공하며 앞으로 Scala 에코시스템에 훨씬 쉽게 통합할 수 있습니다.

이 모든 것이 새로운 것이니, 용들이 여기 있습니다. 최고의 SDK가 될 수 있도록 모든 피드백과 버그 보고에 감사드립니다.

하이라이트

이 글에서는 주요 내용을 두 섹션으로 나누어 설명합니다. 한 섹션에서는 개편된 API(모든 SDK에 걸쳐)에 대해 설명하고 다른 섹션에서는 Java SDK별 개선 사항을 다룹니다.

크로스 SDK API 개선 사항

API의 사용성을 개선하기 위해 API를 상당히 많이 다듬고 리팩토링했습니다. 그 결과 매우 응집력 있고 규칙적인 API 구조가 만들어졌으며, 처음 사용하는 사용자나 오랜 Couchbase 사용자 모두 훨씬 더 쉽게 사용할 수 있게 되었습니다.

간단한 비교를 위해 다음은 2.x Java SDK의 일부 API입니다:

그리고 물론 타임아웃 과부하도 있습니다:

이를 새 API와 비교해 보세요:

각 메서드는 결과 라는 선택적 블록이 있으며 끝에 옵션. 이전 문서 개념이 API 전체에서 더 간단하고 규칙적인 개념으로 대체되었습니다. 타임아웃, 내구성 요구 사항 또는 CAS와 같은 옵션 속성이 모두 옵션 매개변수로 이동되어 과부하가 줄어들고 "한 곳에서만" 확인할 수 있게 되었습니다.

추후 블로그 게시물에서 API 개편에 대해 자세히 살펴보겠지만, 지금은 Java 관련 개선 사항으로 넘어가겠습니다.

Java 관련 개선 사항

사용자에게 가장 눈에 띄는 두 가지 변경 사항은 다음과 같습니다:

  • 기본 자바 버전인 Java 8
  • RxJava에서 Reactor로 마이그레이션된 반응형 API

RxJava 1.x는 수년 동안 잘 사용되어 왔지만(사실 저희는 이 기술을 가장 먼저 채택한 기업 중 하나였습니다), 수명이 다한 것으로 표시되어 대안을 모색해야 했습니다. 리액티브 스트림이 서로 다른 구현 간의 통합을 위한 사실상의 표준으로 떠오르면서 RxJava 2.x와 리액터 중 하나를 결정해야 했습니다. 두 가지 모두 (대부분) 성능 면에서 정면으로 맞섰지만, 오랜 평가 기간 끝에 다음과 같은 이유로 리액터를 선택하기로 결정했습니다:

  • 네이티브 자바 8 API
  • 일부 주요 워크로드에서 성능이 약간 향상되었습니다.
  • 더 많은 커뮤니티 견인력과 지속적인 성장 (스프링 코어에 통합되어 있기 때문이기도 함)

애플리케이션 플랫폼이 RxJava 2로 구축된 경우에도 걱정하지 마세요. 두 플랫폼 모두 반응형 스트림을 지원하므로 반응형 API 위에 플러그인하기만 하면 됩니다.

2.x SDK에는 차단 API와 RxJava를 통해 노출되는 비동기 API라는 두 가지 API가 있었습니다. SDK 3에서는 더 많은 제어 기능을 제공하기 위해 세 번째 API를 추가했습니다:

  • 차단 API는 그대로 유지됩니다.
  • 반응형 API는 리액터의 모노 및 플럭스 응답을 노출합니다.
  • 비동기 API는 최고 수준의 성능이 필요한 경우 빌딩 블록으로 사용할 수 있는 CompletableFutures를 노출합니다.

마지막으로 모든 반응형 쿼리 API의 주요 개선 사항 중 하나는 백프레셔에 대한 선택적 지원입니다. 대용량 결과를 읽어야 하는데 한 번에 모두 힙에 넣지 않으려는 경우, 이제 내부 비동기 IO 계층까지 확장된 리액터 백프레셔 메카니즘을 사용할 수 있습니다. 이 주제에 대한 심층적인 블로그 포스팅을 준비 중이니 기대해 주세요!

시작하기

사용해 보고 싶으시다면 사전 릴리스 메이븐 리포지토리에서 다운로드할 수 있습니다:

 

종속성이 해결되면 Couchbase Server 5.0보다 이전 버전인 모든 클러스터에 연결할 수 있습니다. 그런 다음 버킷을 열고 원하는 컬렉션을 사용합니다(컬렉션 지원은 곧 출시될 Couchbase Server 릴리즈의 API에 이미 포함되어 있습니다). 이전 릴리즈의 경우 기본 컬렉션 를 입력하면 바로 작동합니다:

이제 문서를 작성하고 읽을 수 있습니다:

자세한 내용을 알아보시려면 새로운 문서 현재 지속적으로 작성되고 구체화되고 있습니다. 코드 예제를 찾아볼 수도 있습니다. 여기.

작성자

게시자 마이클 니칭거

마이클 니칭어는 Couchbase의 수석 소프트웨어 엔지니어로 일하고 있습니다. 그는 JVM에서 최초의 완전 반응형 데이터베이스 드라이버 중 하나인 Couchbase Java SDK의 설계자이자 유지 관리자입니다. 또한 Couchbase Spark Connector를 작성하고 유지 관리하고 있습니다. Michael은 오픈 소스 커뮤니티에서 활발히 활동 중이며, RxJava 및 Netty와 같은 다양한 프로젝트에 기여하고 있습니다.

댓글 남기기