카우치베이스 서버

CI/CD 온디맨드 임시 환경용 Couchbase 클러스터를 복제하는 방법

지속적 통합과 지속적 배포는 이제 일반적인 소프트웨어 개발 관행입니다. 데이터베이스의 세계에서 이는 온디맨드, 상태 저장, 임시 환경이 필요하다는 의미로 해석됩니다.  

상태 비저장 환경 프로비저닝은 특정 데이터 소스에 종속되지 않습니다. CI 환경에서 테스트하려는 코드를 실행하기만 하면 됩니다. 이는 대부분의 CI/CD 도구의 기본이며 이 문서에서는 다루지 않습니다. 

조금 더 어려운 부분은 애플리케이션을 제대로 테스트해야 하는 종속성에서 비롯되는데, 이를 종종 외부 서비스라고 합니다. 카우치베이스도 그중 하나입니다. 예를 들어 Docker 컨테이너를 사용하거나 테스트 인프라에서 호스팅하거나 서비스형 외부 솔루션을 사용하는 등 다양한 방법이 있습니다. 테스트를 실행하는 동안 사용할 수만 있다면 어떤 방식이든 상관없습니다. 환경 변수를 사용하여 이러한 인스턴스를 참조하는 것이 좋습니다. 

이러한 서비스가 Couchbase 무료 티어 인스턴스 또는 Docker 컨테이너와 같이 실행 중이라고 가정하면 다음 단계는 이러한 서비스가 올바르게 구성되고 테스트에 필요한 데이터가 시딩되었는지 확인하는 것입니다.

얼마 전에 GitHub 작업의 Couchbase 셸. 여기서는 GitHub Actions와 함께 Couchbase Shell을 사용하는 기본 사항을 설명했지만, 대부분의 CI/CD 솔루션에도 적용할 수 있습니다. 오늘은 여기서 더 나아가 온디맨드 환경에서 클러스터 또는 클러스터의 요소를 복제하는 데 유용한 몇 가지 스크립트를 보여드리고자 합니다.

Couchbase Shell을 사용하여 환경 복제하기

카우치베이스 셸을 사용할 때 어떤 작업을 하고 싶을 때 가장 먼저 떠오르는 것이 바로 그런 기능이 있나요? 현재로서는 무언가를 복제할 수 있는 함수가 없습니다. 사용 가능한 대부분의 함수는 API 기능을 반영하며 현재로서는 복제 API가 없습니다. 하지만 스크립트를 작성할 수 있는 기능이 있으므로 직접 만들 수도 있습니다!

데이터베이스를 관리할 때 가장 먼저 떠오르는 것은 구조와 스키마를 다시 만드는 일입니다. Couchbase는 스키마가 없기 때문에 소스 클러스터의 기존 버킷, 범위, 컬렉션 및 인덱스로만 구성됩니다. 첫 번째 단계는 나중에 다시 가져올 수 있도록 해당 구조를 내보내는 것입니다. 이 함수는 모든 버킷을 나열한 다음 내부 범위와 컬렉션을 나열하고 배열에 추가합니다. 그런 다음 모든 인덱스를 나열하고 출력 JSON에 추가합니다. 

이는 내부적으로 Couchbase Shell이 이식성이 있고(즉, Linux, Windows 또는 OS X에서 동일한 방식으로 작동하므로 다양한 OS를 지원해야 하는 CI/CD 스크립트에 적합), 모든 구조 데이터를 DataFrame으로 간주하여 JSON을 매우 쉽게 조작할 수 있는 새로운 유형의 셸인 Nushell을 사용하기 때문에 가능한 일입니다.

사용해 보려면 다음을 실행하세요. cbsh, 를 클릭한 다음 함수가 포함된 파일을 소싱하세요. 저에게는 ci_scripts.nu. 내 cbsh 구성에 이미 다음과 같은 클러스터가 구성되어 있습니다. local

이제 다음을 열면 local-cluster-export.json, 를 클릭하면 클러스터의 구조를 확인할 수 있습니다:

이 테스트의 목적을 위해 나중에 다시 가져오기 위해 해당 버킷을 삭제했습니다: 버킷 드롭 여행 샘플.

다음 논리적 단계는 이 파일을 입력으로 받아 다른 클러스터에서 전체 구조를 다시 생성하는 함수를 만드는 것입니다:

이제 해당 함수를 실행합니다:

이제 한 클러스터에서 다른 클러스터로 데이터 구조를 내보내고 가져올 수 있는 함수가 완성되었습니다. 이것은 좋은 출발점이지만, 데이터를 다시 가져오는 방법이나 세분성에 대한 질문이 여전히 남아 있습니다. 또한 전체 클러스터를 내보내고 가져오고 싶지 않을 수도 있습니다.

Nushell을 사용하면 데이터 프레임을 필터링할 수 있으므로 가져올 버킷을 필터링하는 것은 매우 쉽습니다:

이렇게 하면 버킷 이름이 여행 샘플 및 이 버킷에 대한 인덱스.

이제 기본적인 클러스터 구조를 관리할 준비가 완료되었습니다. 데이터는 어떻게 가져오나요? 대부분의 키/값 연산은 물론 INSERT/UPSERT 쿼리도 지원하므로 cbsh로 데이터를 가져올 수 있는 방법은 여러 가지가 있습니다. 그리고 문서 가져오기 명령. 사용법은 매우 간단하며 식별된 ID 필드가 있는 행 목록만 있으면 됩니다. 이 목록은 Nushell용 데이터 프레임으로 변환할 수 있는 모든 것(XML, CSV, TSV, Parquet 등)이 될 수 있습니다. 물론 Couchbase SQL++ 쿼리의 JSON 파일일 수도 있습니다. 다음은 쿼리 결과를 파일에 저장하고 해당 파일을 컬렉션으로 다시 가져오는 예제입니다: 


이는 하나의 구체적인 예시이지만 스크립팅 언어 사용의 요점은 자신만의 것으로 만드는 것입니다. 더 완전한 예제는 다음에서 찾을 수 있습니다. 이 깃허브 요점. 소스 및 대상에 대한 환경 변수를 지원하며 클러스터의 모든 버킷, 특정 버킷, 범위 또는 컬렉션을 복제할지 여부를 결정할 수 있습니다.

주저하지 마시고 여기 또는 다음에 의견을 남겨 주세요. 불화, 를 통해 글로벌 카우치베이스 경험을 개선하기 위한 제안을 항상 찾고 있습니다.

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

작성자

게시자 로랑 도귄

Laurent는 파리에 사는 괴짜 금속공학도입니다. 주로 Java로 코드를 작성하고 AsciiDoc으로 구조화된 텍스트를 작성하며 데이터, 리액티브 프로그래밍 및 기타 유행어에 대해 자주 이야기합니다. 또한 Clever Cloud와 Nuxeo의 개발자 옹호자로 활동하며 해당 커뮤니티가 더 크고 강력하게 성장할 수 있도록 자신의 시간과 전문성을 바쳤습니다. 현재 Couchbase에서 개발자 관계를 운영하고 있습니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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