SQL++/N1QL 쿼리

Golang 및 Couchbase NoSQL로 AWS 람다 함수 개발하기

Nic Raboy

닉 라보이 는 최신 웹 및 모바일 개발 기술을 옹호하는 사람입니다. 자바, 자바스크립트, 골랑, 앵귤러, 네이티브스크립트, 아파치 코르도바 등 다양한 프레임워크에 대한 경험이 있습니다. Nic 웹 및 모바일 개발과 관련된 자신의 개발 경험을 알기 쉽게 풀어쓴 글입니다.

약 1년 전, 서비스형 함수(FaaS)가 막 대중화되기 시작했을 때, 저는 다음과 같은 기능을 활용하는 함수 개발에 관한 몇 가지 튜토리얼을 작성한 적이 있습니다. 카우치베이스 를 NoSQL 데이터베이스로 사용할 수 있습니다. 예를 들어 Node.js 및 Couchbase NoSQL과 함께 AWS Lambda 및 API 게이트웨이 사용 는 제가 가장 좋아하는 프로그래밍 기술 중 하나인 Node.js에 중점을 두었습니다. 하지만 당시에는 제가 가장 좋아하는 또 다른 프로그래밍 기술인 Golang이 아직 Amazon Web Services(AWS) Lambda에서 지원되지 않았습니다. 시간이 조금 흐른 지금, Golang은 Lambda에서 지원되고 있으며, 잘 만들어진 Go SDK 의 경우

이 튜토리얼에서는 Go 프로그래밍 언어를 사용하여 Couchbase와 통신하는 함수를 AWS Lambda에서 빌드하는 방법을 살펴보겠습니다.

NoSQL 데이터 생성 및 쿼리를 위한 Go Lambda 함수 만들기

이제 Go가 AWS에서 공식적으로 지원되므로, 자체적으로 구축하는 대신 공식 SDK를 사용할 수 있습니다. $GOPATH** 내에서 새 프로젝트를 생성하고 다음 명령을 실행합니다:

위의 명령은 Lambda SDK와 Golang용 Couchbase SDK를 다운로드합니다. 또한 NoSQL 문서 키를 나타내는 고유 값을 생성할 수 있는 UUID 패키지도 다운로드합니다.

종속성을 사용할 수 있는 상태에서 **main.go** 파일을 만들고 다음 상용구 코드를 포함하세요:

함수 설계에 들어가기 전에 위의 코드를 분석해 보겠습니다.

종속성을 가져오는 것 외에도 두 가지 기본 데이터 구조를 만들고 있습니다. 첫 번째 Todo 데이터 구조는 애플리케이션 내에서 작업할 데이터를 나타냅니다. 이해를 돕기 위해 할 일 항목을 저장하고 해당 항목을 쿼리할 수 있는 간단한 할 일 목록 유형의 애플리케이션을 만들어 보겠습니다. 두 번째 데이터 구조는 함수에 대한 수신 요청을 나타냅니다. 이 예제에서 들어오는 요청은 JSON에 할 일 속성을 사용하거나 전혀 사용하지 않습니다.

또한 글로벌 버킷 변수를 생성하여 코드의 다른 모든 곳에서 액세스할 수 있습니다. 내 메인 함수를 사용하여 Couchbase 인스턴스에 연결하고 해당 버킷을 열 수 있습니다. Couchbase 인스턴스가 다음에서 실행되고 있지 않은 것이 중요합니다. localhost 원격 서비스인 람다에 도달할 수 있어야 하기 때문입니다.

데이터베이스를 구성한 후, Lambda를 시작하고 우리의 핸들러 함수입니다. 일반적으로 각 함수는 특정 작업을 수행해야 하지만, 저희 함수는 데이터 생성뿐만 아니라 쿼리도 처리합니다.

다음 내용을 살펴보십시오. 핸들러 함수 코드를 입력하세요:

람다 함수가 실행될 때 우리는 요청 가 들어오는지 확인합니다. 비어 있거나 관심이 없는 속성만 포함되어 있으면 할 일 항목을 쿼리합니다. 사용 N1QL 를 사용하면 버킷을 쿼리하여 모든 항목을 문자열화된 JSON 응답으로 반환할 수 있습니다.

수신되는 요청 변수가 비어 있지 않다는 것은 데이터베이스에 일부 데이터를 생성하고 싶다는 뜻입니다. UUID를 사용하면 요청을 받아 만료 없이 새 문서를 만들 수 있습니다. 그러면 데이터 자체가 반환됩니다.

전체적인 함수는 더 우아하게 디자인할 수 있지만, 우리가 하는 일의 요점은 분명해야 합니다. Couchbase의 설정과 사용법은 RESTful 또는 GraphQL 애플리케이션에서 사용하는 방법과 크게 다르지 않지만 이번에는 코드를 Lambda 함수로 설계했습니다.

기능이 준비되었으니 이제 배포를 위한 작업을 시작할 수 있습니다.

AWS 람다 함수 배포 및 테스트하기

AWS Lambda의 경우 로컬에서 애플리케이션을 실행하는 방식과 다른 특정 요구 사항이 있습니다. 우선, Lambda는 특정 운영 체제와 우리가 로컬에서 실행하는 것과는 다른 아키텍처를 사용합니다. 따라서 애플리케이션을 교차 컴파일한 다음 번들로 제공해야 합니다.

명령줄에서 다음을 실행합니다:

위의 명령은 Linux용으로 빌드하고 바이너리 아카이브를 생성합니다. 다음 사항을 변경하세요. 바이너리 이름 를 실제 바이너리 이름과 동일하게 설정합니다. 만약 zip 명령이 운영 체제에서 작동하지 않으면 수동으로 아카이브하세요.

Go 애플리케이션 교차 컴파일에 대한 자세한 내용은 이 주제에 대한 이전 튜토리얼을 참조하세요: 라즈베리 파이에서 사용하기 위한 Golang 애플리케이션 교차 컴파일하기.

핸들러.zip** 파일을 사용할 수 있게 되면 AWS 람다 콘솔 에서 새 함수를 만들 수 있습니다.

함수를 만들 때 기본값을 선택하되, 배포할 것이므로 Go 1.x 애플리케이션을 선택해야 합니다. 함수 대시보드에서 이 예제에 대한 트리거를 추가하는 것에 대해 걱정하지 마세요. 대신 **handler.zip** 파일인 함수 코드를 업로드하도록 선택하세요. 핸들러**의 경우 애플리케이션 바이너리 이름을 사용해야 합니다.

배포를 테스트하기 위해 대시보드에서 바로 테스트를 만들 수 있습니다. 화면 상단에서 새 테스트 이벤트를 구성하도록 선택합니다. 테스트 이벤트의 이름은 원하는 대로 지정할 수 있지만 요청 콘텐츠로 다음을 추가합니다:

테스트 이벤트를 저장한 후 대시보드에서 실행하고 결과를 확인합니다. 성공적으로 실행되었으면 Couchbase 데이터베이스에 새 문서가 있어야 합니다.

결론

방금 Go 프로그래밍 언어를 사용하여 다음과 통신하는 새로운 AWS Lambda 함수를 만드는 방법을 살펴보셨습니다. 카우치베이스 서버. 이 프로세스는 매우 간단하며, 사용 관점에서 조금 더 유용하게 만들기 위해 AWS 게이트웨이와 같은 트리거를 사용하여 확장할 수 있습니다.

다음 튜토리얼에서는 이 튜토리얼을 Amazon Alexa 기반 장치를 지원하도록 확장하는 방법을 살펴보겠습니다. 이렇게 하면 Alexa를 트리거로 사용하여 음성으로 문서를 만들거나 쿼리할 수 있습니다.

이 게시물은 카우치베이스 커뮤니티 글쓰기 프로그램의 일부입니다.

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

작성자

게시자 Laura Czajkowski, 개발자 커뮤니티 관리자, Couchbase

로라 챠코브스키는 카우치베이스의 Snr. 개발자 커뮤니티 매니저로 카우치베이스의 커뮤니티를 총괄하고 있습니다. 그녀는 월간 개발자 뉴스레터를 담당하고 있습니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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