Node.js를 사용하여 동일한 프로젝트에서 Couchbase Server 및 Couchbase Mobile 사용

동일한 데이터를 공유하는 웹 애플리케이션과 모바일 애플리케이션을 구축하는 것은 종종 어려운 작업으로 여겨집니다. 웹 애플리케이션을 모바일 애플리케이션에 맞게, 또는 그 반대로 어떻게 디자인할 수 있을까요? 카우치베이스를 사용하여 모바일 기기 간에 데이터를 실시간으로 동기화하면서 웹 브라우저에서도 사용할 수 있게 하려면 어떻게 해야 할까요?

카우치베이스로 이 작업을 수행하는 방법에는 여러 가지가 있지만, 이 가이드에서는 제가 개인적으로 가장 좋아하는 방법 중 하나를 살펴보겠습니다. 데이터 쿼리에는 서버 측 SDK를, 데이터 작성에는 RESTful API를 사용하겠습니다.

요구 사항

이 특정 예제에서는 다음과 같이 하겠습니다. Node.js 사용를 사용할 수 있지만 Couchbase Server SDK만 있으면 어떤 언어를 사용하든 상관없습니다. 이 프로젝트의 요구 사항은 다음과 같습니다:

  • 카우치베이스 서버 4.1+
  • 카우치베이스 동기화 게이트웨이 1.3+
  • Node.js 4.0+

컴포넌트 관점에서 보면 Couchbase Server는 모든 데이터를 저장합니다. 또한 쿼리와 관련된 무거운 작업을 담당하게 됩니다. Node.js SDK에서 Couchbase Server에 직접 쓰지 않고 대신 Couchbase Sync Gateway를 사용할 것입니다. 동기화 게이트웨이는 데이터를 Couchbase Server에 저장하고 모바일 장치 간에 전달합니다. Node.js는 웹 애플리케이션 계층이 됩니다.

이 예제에서는 모바일 애플리케이션을 구축하지는 않겠지만, 모바일 애플리케이션은 동기화 게이트웨이와 통신하며 비슷한 방식으로 사용될 것입니다. 모바일 애플리케이션은 카우치베이스 서버와 직접 통신하지 않습니다.

Couchbase 서버 및 Couchbase 동기화 게이트웨이 구성하기

애플리케이션을 개발하려면 먼저 Couchbase Server와 Couchbase 동기화 게이트웨이를 모두 설치 및 구성해야 합니다.

카우치베이스 서버 다운로드 를 다운로드하고 쿼리(N1QL) 서비스가 활성화되어 있는지 확인하면서 설치를 진행합니다. 이 예제에서는 다음과 같은 Couchbase 버킷을 사용하겠습니다. 예제를 사용하지만 원하는 대로 자유롭게 부르세요.

와 함께 예제 버킷을 생성했다면, 데이터 쿼리를 허용하기 위해 N1QL 인덱스를 추가해야 합니다. 쿼리 워크벤치 또는 CBQ에서 다음을 실행합니다:

쿼리 워크벤치는 카우치베이스 서버 엔터프라이즈 에디션에서 사용할 수 있지만, 명령줄 도구인 CBQ는 두 버전 모두에서 사용할 수 있습니다.

이 시점에서 Couchbase Server를 사용할 준비가 되었습니다.

사용 중인 운영 체제에 맞는 Couchbase 동기화 게이트웨이를 다운로드하여 설치합니다. 동기화 게이트웨이 자체는 구성되지 않지만 다음과 같은 프로젝트 구성 파일이 실행됩니다:

위의 파일을 호출합니다. 동기화 게이트웨이-config.json 를 생성하고 프로젝트에 저장합니다. 기본적으로 동기화 게이트웨이에 특정 카우치베이스 서버 클러스터에 연결하고 버킷을 사용한다고 알려주는 것입니다. 예제. 동일한 컴퓨터에서 RESTful 요청을 사용할 것이므로 포트 3000에서 CORS를 허용해야 합니다.

동기화 로직을 사용하면 읽기 또는 쓰기 규칙 없이 모든 문서가 전달될 수 있습니다.

웹 애플리케이션 만들기

아직 동기화 게이트웨이를 실제로 실행하고 있지는 않지만 Couchbase Server와 동기화 게이트웨이를 모두 사용할 준비가 되었습니다. 이제 Node.js 프로젝트를 만드는 데 집중할 수 있습니다.

프로젝트 자체는 매우 간단한 예제가 될 것입니다. 데이터를 생성하는 엔드포인트와 데이터를 나열하는 엔드포인트, 두 개의 엔드포인트가 있는 RESTful API를 만들겠습니다. 여기서 중요한 점은 한 엔드포인트는 Node.js SDK로 Couchbase Server를 직접 쿼리하고, 다른 엔드포인트는 Sync Gateway RESTful API를 통해 Couchbase Sync Gateway에 데이터를 쓴다는 것입니다.

먼저 프로젝트 생성을 시작해 보겠습니다.

새 프로젝트 만들기 및 코드 부트스트랩하기

Node.js를 사용하기 때문에 모든 작업은 명령 프롬프트(Windows) 또는 터미널(Mac 및 Linux)에서 수행됩니다. 이 중 하나를 사용하여 다음을 실행합니다:

위의 명령은 새 package.json 파일을 만듭니다. 모든 프로젝트 종속성은 이 파일에 저장됩니다.

다음으로 다음을 실행하여 필요한 모든 종속성을 얻습니다:

우리는 카우치베이스 를 사용하여 데이터베이스와 통신할 수 있습니다, express Express 프레임워크용, 본문 파서 요청에서 본문 데이터를 수락하기 위한 요청 를 사용하여 Node.js가 아닌 Node.js 내에서 HTTP 요청을 할 수 있습니다.

이 시점에서 애플리케이션 부트스트랩을 시작할 수 있습니다.

라는 파일을 만듭니다. index.js 를 추가합니다. 전체 애플리케이션에 이 파일을 사용하겠습니다. 규모가 크거나 프로덕션 애플리케이션에서는 유지 관리 편의성을 위해 더 정밀한 파일로 분할하는 것을 고려할 수 있지만 이 예제에서는 이대로도 괜찮습니다.

열기 index.js 를 클릭하고 다음 가져오기를 포함합니다:

이전에 다운로드했던 종속성을 이제 프로젝트로 가져왔습니다. 그러나 초기화되지는 않았습니다.

위의 줄은 Express 프레임워크를 초기화하고, 애플리케이션 내에서 N1QL을 준비하며, 요청 본문 내에서 JSON 및 URL 인코딩된 데이터를 허용하도록 설정합니다.

N1QL은 거의 사용할 수 있지만 서버 클러스터에 연결하거나 버킷을 열지 않았습니다. 이 작업은 다음을 통해 수행할 수 있습니다:

다시 말하지만, 제가 이름을 붙인 버킷을 사용하고 있습니다. 예제 이전 단계에서

마지막으로 프로젝트 부트스트랩의 마지막 단계로 애플리케이션 서비스를 시작할 수 있습니다:

실행 시 웹 애플리케이션은 다음에서 액세스할 수 있습니다. http://localhost:3000 웹 브라우저 등에서 사용할 수 있습니다.

Couchbase Node.js SDK 및 RESTful 동기화 게이트웨이 로직 추가하기

앞서 언급했듯이 이 애플리케이션은 이해하기 쉽도록 단순하게 유지될 것입니다. 엔드포인트는 두 개로, 하나는 Couchbase Server SDK를 사용하는 엔드포인트이고 다른 하나는 동기화 게이트웨이 RESTful API를 사용하는 엔드포인트입니다.

이 두 엔드포인트는 다음과 같이 표시됩니다:

부터 시작하여 /list 엔드포인트에 다음 코드가 있습니다:

이 엔드포인트로 GET 요청이 이루어지면 Couchbase Server에 대해 N1QL 쿼리가 실행됩니다. 이 쿼리는 유형, 이름 속성을 가지고 있는 한 특정 버킷의 모든 문서에 대한 유형 속성과 같은 사람. 오류가 있으면 사용자에게 오류를 반환하고, 그렇지 않으면 검색된 데이터를 반환합니다.

다음 엔드포인트는 Node.js 내에서 HTTP 요청을 사용합니다. 엔드포인트로 바로 넘어가기 전에 이러한 요청을 위한 헬퍼 메서드를 만드는 것이 좋습니다:

위의 메서드는 특정 URL에 대해 자바스크립트 객체를 본문으로 전달하여 POST 요청을 합니다. 성공하면 응답이 반환되고, 그렇지 않으면 오류가 발생합니다.

그리고 makePostRequest 메서드가 실제로 작동하는 모습을 다음에서 확인할 수 있습니다:

위의 코드에서, POST 요청을 할 때 /생성 엔드포인트의 경우, 먼저 본문에 특정 프로퍼티가 존재하는지 확인하고, 존재하지 않으면 오류를 발생시킵니다. 속성이 존재하면 makePostRequest 메서드에서 URL을 전달하여 동기화 게이트웨이 RESTful API 문서.

이 시점에서 성공하면 데이터가 동기화 게이트웨이에서 카우치베이스 서버로 저장되고 연결된 모든 장치에 전달됩니다.

전체 애플리케이션 소스 코드

전체 애플리케이션을 보고 싶다면 아래에서 소스 코드를 확인할 수 있습니다:

다음 단계에서 이 애플리케이션을 실행하는 방법을 살펴보겠습니다.

애플리케이션 실행

이 특정 예시에는 움직이는 부분이 많이 있습니다. 여기에는 Node.js 애플리케이션, Couchbase 서버, Couchbase 동기화 게이트웨이가 있습니다. 나중에 모바일 애플리케이션도 만들 수 있을 것입니다.

가장 먼저 할 일은 동기화 게이트웨이를 시작하고 이미 실행 중인 Couchbase Server 클러스터에 연결하도록 하는 것입니다. 명령줄에서 다음을 실행합니다:

동기화 게이트웨이가 실행 중인 상태에서 Node.js 애플리케이션을 실행하여 실행할 수 있습니다:

이제 애플리케이션은 다음에서 액세스할 수 있습니다. http://localhost:3000 를 특정 엔드포인트 경로에 추가합니다.

결론

방금 Couchbase Mobile과 Couchbase Server 애플리케이션을 통합하는 한 가지 가능한 방법을 살펴보았습니다. 이 가이드에서는 실제로 모바일 애플리케이션을 만들지는 않았지만, 마지막 단계로 이를 가능하게 하는 모든 구성 요소를 사용했습니다. Couchbase Server Node.js SDK와 Couchbase 동기화 게이트웨이를 모두 사용하는 Node.js 애플리케이션을 만들었습니다.

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

작성자

게시자 Nic Raboy, 개발자 옹호자, Couchbase

닉 라보이는 최신 웹 및 모바일 개발 기술을 옹호하는 사람입니다. 그는 Java, JavaScript, Golang 및 Angular, NativeScript, Apache Cordova와 같은 다양한 프레임워크에 대한 경험이 있습니다. Nic은 웹 및 모바일 개발을 보다 쉽게 이해할 수 있도록 자신의 개발 경험에 대해 글을 쓰고 있습니다.

댓글 하나

  1. 안녕하세요,

    여러분의 접근 방식을 사용하고 싶지만 한 가지 고려해야 할 사항이 있습니다. 바로 모바일 기기의 오프라인 케이스입니다. 전화를 걸 수 없는데 어떻게 이 문제를 극복할 수 있을까요? 카우치베이스 라이트에 변경 사항을 작성한 다음 인터넷이 가능할 때마다 서버로 API 호출을 해야 하나요?

    두 번째로, 카우치베이스 모바일과 카우치베이스 서버를 사용하는 다른 방법도 있다고 말씀하셨습니다. 이에 대한 정보를 간략히 알려주시겠어요?

    감사합니다.

    1. 기본적으로 Couchbase Lite는 인터넷 연결이 가능할 때마다 동기화 게이트웨이와 통신하므로 Couchbase 모바일의 엣지 케이스에 대해 걱정할 필요가 없습니다.

      Node 및 Couchbase Lite가 동기화 게이트웨이와 통신하면 모든 것이 정상입니다.

      Couchbase 5.0이 출시되면 모든 기능이 SDK에 포함되므로 이러한 방식으로 커뮤니케이션할 필요가 없습니다.

      1. 따라서 인터넷이 연결되면 앱 서버를 호출하여 해당 요청을 수신하고 동기화 게이트웨이와 통신합니다. 반면에 인터넷이 끊기면 모바일 앱은 자체 로컬 카우치베이스 라이트에 데이터를 삽입합니다. 인터넷 연결이 가능할 때마다 동기화 작업이 처리되고 데이터가 보관됩니다.

        감사합니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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