분류

Couchbase의 Go - Go SDK 소개

Couchbase와 Go는 모두 확장성과 사용 편의성이라는 비슷한 목표를 가지고 있습니다. 그 자연스러운 일치로 인해 Couchbase와 Go는 훌륭한 조합을 이룹니다. 애플리케이션 개발자는 자신이 설계하는 시스템을 위해 Couchbase와 같은 확장 가능한 데이터 관리 시스템이 필요하므로, 오늘 Couchbase가 간편한 확장성과 자체 Go 개발 프로젝트와의 간단한 통합을 위한 Go SDK를 소개하게 되어 기쁘게 생각합니다.

카우치베이스가 바둑을 사랑하는 데에는 몇 가지 이유가 있습니다:

  1. Go를 사용하면 높은 동시성을 지원하는 효율적인 애플리케이션을 쉽게 구축할 수 있습니다.
  2. Go를 사용하면 간단하고 안정적이며 효율적인 애플리케이션을 구축할 때 JSON으로 쉽게 작업할 수 있습니다. 
  3. Go는 구문과 표준 라이브러리를 단순하게 유지하여 커뮤니티가 나머지를 구축할 수 있도록 잘 문서화되어 있고 강력한 플랫폼입니다. 

각각을 살펴보겠습니다.

높은 동시성

Go는 개발자가 동시 접속자가 많은 프로그램을 쉽게 조립할 수 있는 간단한 구조로 개발할 수 있도록 하는 데 중점을 둡니다. 이를 통해 Go로 작성된 애플리케이션은 최소한의 노력으로 확장할 수 있습니다. 하드웨어와 분산 시스템 아키텍처가 발전함에 따라, Go로 구축된 프로그램은 이러한 리소스를 효율적으로 사용하여 더 많은 사용자로 확장할 수 있는 DNA를 가지고 있습니다. Couchbase도 비슷한 목표를 가지고 있습니다. 애플리케이션 개발자가 선택한 데이터베이스를 최소한의 노력으로 확장할 수 있게 하려는 것입니다. Go에서 확장성을 위한 구축은 주로 병렬로 실행할 로직을 표현하는 고루틴이라는 기본 요소와 병렬 로직 간에 데이터를 안전하게 이동시키는 채널을 통해 이루어집니다.

Go용 Couchbase SDK는 이러한 구조에서 잘 작동합니다. 처음부터 우리는 Go 애플리케이션 개발자에게 고루틴과 채널을 사용해 애플리케이션 내부에 적합한 API 표면 영역을 제공하고자 했습니다. 이 SDK는 애플리케이션 개발자가 표현한 동시성을 쉽게 사용할 수 있도록 설계되었으며, 요청된 작업을 자체적으로 관리할 때 오버헤드를 추가하지 않습니다. 결과는? 최소한의 노력으로 애플리케이션은 Couchbase Server 클러스터의 모든 성능과 확장성의 이점을 누릴 수 있습니다. Go SDK는 Couchbase Server 클러스터를 확장할 때 필요한 세부 사항을 추상화합니다. 

개발의 용이성

Go SDK가 Go에 대한 철학과 완벽하게 조화를 이루는 또 다른 방법은 애플리케이션에서 설정 및 사용이 간편하다는 점입니다. Go 애플리케이션이 고루틴과 채널 전반에서 작동할 데이터 구조를 정의한다는 점을 인식한 Go용 Couchbase SDK는 개발자에게 Couchbase Server 클러스터에서 데이터를 쿼리하고 저장하는 방법을 간단하게 표현할 수 있는 방법을 제공합니다. Go는 JSON을 Go의 데이터 유형에 매핑하는 데 탁월한 지원을 제공합니다. Go SDK는 개발자가 요청하는 작업에서 이를 활용합니다. 데이터를 쿼리하거나 추가할 때 SDK는 애플리케이션에서 정의한 Go 구조로 JSON 응답을 마샬링 및 언마샬링합니다.

Go용 Couchbase SDK는 애플리케이션을 쉽게 개발할 수 있는 Couchbase Server의 새로운 기능을 지원합니다. Couchbase의 새로운 쿼리 언어 N1QL 은 개발자가 익숙한 방식으로 쉽게 쿼리할 수 있도록 SQL을 JSON 문서와 함께 작동하도록 확장합니다. Go 개발자의 손끝에서 JSON 구조화된 데이터를 손쉽게 쿼리할 수 있는 N1QL의 기능을 통해 데이터를 찾고, 조작하고, 저장하는 작업이 쉬워집니다.

표면적으로는 단순하지만 확장 가능

Go 커뮤니티는 표준 라이브러리와 구문을 표면적으로 단순하게 유지하면서도 필요한 사람들에게는 기본 요소를 숨기지 않음으로써 단순성을 추구합니다. Go 커뮤니티의 단순하면서도 심층적인 기능에 대한 열망을 반영하여 Go SDK에 두 개의 레이어를 만들었습니다.

먼저, Go 언어 구조에 매핑된 JSON으로 간단하게 작업할 수 있는 기능을 원하는 개발자를 만족시키기 위해 개발자가 이해하기 쉽고 유형에 안전한 작업을 할 수 있는 간단한 인터페이스인 gocb를 구축했습니다. 이 인터페이스는 또한 Go의 동기식 고루틴 프레임워크에 빠르게 통합됩니다.

개발자가 다른 개발자가 사용할 것으로 예상되는 더 큰 프레임워크에 Couchbase를 통합해야 하는 상황이 몇 가지 있습니다. 예를 들어 순수 비동기 인터페이스가 필요한 새로운 애플리케이션 프레임워크나 시스템 간에 데이터를 이동하는 아키텍처 중간에 반응형 구성 요소가 필요한 경우가 있습니다. 이러한 개발자는 Couchbase SDK가 Couchbase Server 클러스터와 상호 작용하는 가장 낮은 수준에서 긴밀하게 상호 작용해야 할 수 있습니다. 또한 개발자가 약간의 추가 처리 시간을 절약하기 위해 데이터 마샬링을 건너뛰고 싶거나 IO를 위해 100% 비동기 인터페이스로 전환하고 싶은 경우도 있을 수 있습니다. 이러한 각 경우의 요구는 Go용 Couchbase SDK의 gocbcore 계층을 통해 충족됩니다.

다음 단계

소프트웨어는 지속적으로 발전하고 있으며, Google은 앞으로도 Go 커뮤니티의 개선 사항을 반영하기 위해 노력할 것입니다. Google은 Go 1.5의 메모리 관리와 개발 편의성에서 큰 진전을 이루었습니다. 새로운 개발자 도구와 메모리 관리의 재설계는 향후 버전의 Couchbase Server에 도움이 될 것으로 기대하며, 자체 Go 프로그램을 개발하는 분들은 현재 Go 1.5를 지원하는 Go용 Couchbase SDK를 통해 변경 사항을 즉시 활용할 수 있습니다.

Go를 사용하는 카우치베이스 컴포넌트의 경우? 그 미래는 지금 만들어지고 있습니다. 여러 가지 새로운 프로젝트가 있습니다. 오픈 소스로 게시 Couchbase Server 및 Couchbase Mobile의 다음 릴리스에 포함될 것으로 예상됩니다. 이러한 프로젝트의 대부분은 Go로도 작성됩니다.

개발자들이 새로운 Go용 Couchbase SDK로 무엇을 개발할지 기대가 됩니다.

코드 샘플과 비트의 위치 및 문서는 다음에서 찾을 수 있습니다. 브렛 로슨의 GA 블로그. 브렛은 Go SDK의 수석 엔지니어입니다.

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

작성자

게시자 매트 인젠트론

매트 인젠트론은 Couchbase의 엔지니어링 시니어 디렉터로 SDK, 커넥터 및 기타 프로젝트 전반의 개발자 인터페이스에 집중하고 있습니다. 그는 멤캐시드 프로젝트의 기여자이자 Java spymcached 클라이언트의 유지관리자 중 한 명이며 Couchbase의 핵심 개발자입니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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