AWS 서버리스 애플리케이션 모델과 카우치베이스를 사용한 마이크로서비스

아마존 웹 서비스 소개 서버리스 애플리케이션 모델또는 SAM이라고도 합니다. 이는 다음을 표현하기 위한 간소화된 구문을 정의합니다.
서버리스 리소스. SAM 확장 AWS 클라우드포메이션 를 추가하여 API 게이트웨이, AWS Lambda 및 Amazon DynamoDB에 대한 지원을 추가했습니다. 이 블로그에서는 다음을 사용하여 간단한 마이크로서비스를 만드는 방법을 보여드립니다.
SAM. 물론 카우치베이스 를 사용하세요! 이 블로그에서는 다음 블로그에서 설명한 기본 개념도 사용합니다. AWS API 게이트웨이, AWS Lambda 및 Couchbase를 사용한 마이크로서비스. SAM
는 마이크로서비스를 위한 전체 스택을 쉽게 배포하고 관리할 수 있음을 보여줍니다.

아키텍처의 주요 구성 요소는 다음과 같습니다:

serverless-microservice

  • 클라이언트는 curl, AWS CLI/콘솔, Postman 클라이언트 또는 REST 엔드포인트를 호출할 수 있는 기타 도구/API가 될 수 있습니다.
  • AWS API 게이트웨이는 API 프로비저닝에 사용됩니다. 최상위 리소스는 다음 경로에서 사용할 수 있습니다. /책. HTTP GET 그리고 POST 메소드가 리소스에 대해 게시됩니다.
  • 각 API는 람다 함수를 트리거합니다. 두 개의 람다 함수가 생성됩니다, 도서 목록 함수를 사용하여 사용 가능한 모든 책을 나열하고 책 만들기 함수를 사용하여 새 책을 만들 수 있습니다.
  • Couchbase는 EC2에서 지속성 저장소로 사용됩니다. 모든 JSON 문서는 이 데이터베이스에서 저장 및 검색됩니다.

서버리스에 대한 기타 블로그:

시작해보자!

서버리스 애플리케이션 모델(SAM) 템플릿

서버리스 리소스가 포함된 AWS CloudFormation 템플릿은 다음을 준수합니다. AWS SAM 모델 를 SAM 파일 또는 템플릿이라고 합니다. 배포됩니다.
를 CloudFormation 스택으로 사용하세요. SAM 템플릿을 살펴보겠습니다: 이 템플릿은 다음에서 사용할 수 있습니다. github.com/arun-gupta/serverless/blob/master/aws/microservice/template.yml.

SAM 템플릿 사양 템플릿의 콘텐츠에 대한 완전한 세부 정보를 제공합니다. 템플릿의 핵심 부분은 다음과 같습니다:

  • 람다 함수 유형으로 식별되는 두 가지 리소스를 정의합니다. AWS::서버리스::함수 어트리뷰트입니다. 람다 함수의 이름은 다음과 같이 정의됩니다. 리소스..
  • 각 핸들러의 클래스는 다음 값으로 정의됩니다. Resources..Properties.Handler 속성
  • Java 8 런타임은 다음에서 정의한 함수를 실행하는 데 사용됩니다. Resources..Properties.Runtime 속성
  • 클래스의 코드는 S3 버킷에 업로드되며, 이 경우 다음 주소로 업로드됩니다. s3://serverless-microservice/microservice-http-endpoint-1.0-SNAPSHOT.jar
  • Resources..Properties.Environment.Variables.COUCHBASE_HOST 속성 값은 카우치베이스가 실행되는 호스트를 정의합니다. 이것은 다음 설명에 따라 EC2에 쉽게 배포할 수 있습니다. 카우치베이스 설정.
  • 각 람다 함수는 API에 의해 트리거됩니다. AWS API 게이트웨이를 사용하여 배포됩니다. 경로는 다음과 같이 정의됩니다. Events.GetResource.Properties.Path. HTTP 메서드는 다음을 사용하여 정의됩니다. Events.GetResource.Properties.Method 속성입니다.

Java 애플리케이션

람다 함수가 포함된 Java 애플리케이션은 다음 주소에 있습니다. github.com/arun-gupta/serverless/tree/master/aws/microservice/microservice-http-endpoint.
다음에 의해 트리거되는 람다 함수 HTTP GET 메서드가 표시됩니다:

약간의 설명이 필요합니다:

  • 각 람다 함수는 인터페이스를 구현해야 합니다. com.amazonaws.services.lambda.runtime.RequestHandler.
  • API 게이트웨이와 Lambda 통합에는 특정 입력 형식 그리고 출력 형식.
    이러한 형식은 다음과 같이 정의됩니다. 게이트웨이 요청 그리고 게이트웨이 응답 클래스.
  • 함수 논리 사용 카우치베이스 자바 SDK 를 사용하여 Couchbase 데이터베이스를 쿼리합니다. N1QL 쿼리는 다음을 쿼리하는 데 사용됩니다.
    를 데이터베이스에 저장합니다. 그런 다음 결과와 예외를 게이트웨이 요청 그리고 게이트웨이 응답.

HTTP POST 메서드로 트리거되는 람다 함수 역시 매우 간단합니다:

약간의 설명이 필요합니다:

  • 수신 요청 페이로드는 다음에서 검색됩니다. 게이트웨이 요청
  • 카우치베이스에 삽입된 문서는 응답으로 반환됩니다.
  • 이전 방법과 마찬가지로 함수 로직은 카우치베이스 자바 SDK 를 사용하여 카우치베이스 데이터베이스를 쿼리합니다. 그러면 결과와 예외는 다음과 같습니다.
    에 싸여 게이트웨이 요청 그리고 게이트웨이 응답.

Java 애플리케이션을 다음과 같이 빌드합니다:

S3에 람다 함수 업로드

SAM 템플릿은 S3 버킷에서 코드를 읽습니다. S3 버킷을 만들어 보겠습니다:

us-west-2 지역 중 하나입니다. API 게이트웨이 지원 지역. S3 버킷 이름은 전 세계적으로 고유하지만 위치는 지역에 따라 다릅니다. 업로드
코드를 S3 버킷에 업로드합니다:

이제 코드가 S3 버킷에 업로드되었습니다. SAM 템플릿을 배포할 준비가 되었습니다!

SAM 템플릿 배포

SAM 템플릿을 배포합니다:

출력이 표시됩니다:

이 하나의 명령으로 Lambda 함수와 이러한 Lambda 함수를 트리거하는 REST 리소스/API를 배포할 수 있습니다.

마이크로서비스 호출

API 게이트웨이는 curl, wget, AWS CLI/콘솔, Postman 또는 REST API를 호출할 수 있는 기타 앱에서 호출할 수 있는 REST API를 게시합니다. 이 블로그에서는 AWS 콘솔을 사용하여 상호 작용을 보여줍니다. API 게이트웨이 홈 us-west-2.console.aws.amazon.com/apigateway/home?region=us-west-2#/apis 를 표시합니다:
AWS SAM Microservice API
이 리소스에 있는 모든 API를 보려면 API를 클릭하세요:

AWS SAM Microservice API Resources

POST를 클릭하면 POST 메서드 실행을 위한 기본 페이지를 볼 수 있습니다:

AWS SAM Microservice API POST

테스트를 클릭하여 API를 테스트합니다:

AWS SAM Microservice API POST Input

요청 본문에서 페이로드를 추가하고 테스트 를 입력하여 API를 호출합니다. 결과는 아래와 같습니다:

AWS SAM Microservice API POST Output

이제 GET을 클릭하여 기본 실행 페이지를 확인합니다:

AWS SAM Microservice API GET

테스트를 클릭하여 API를 테스트합니다:

AWS SAM Microservice API GET Input

요청 본문은 필요하지 않으며 API 호출 테스트를 클릭하기만 하면 됩니다. 결과는 다음과 같습니다:

AWS SAM Microservice API GET Output

카우치베이스 데이터베이스의 출력은 응답 본문에 표시됩니다.

참조

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

작성자

게시자 Arun Gupta, 개발자 지원 부문 부사장, Couchbase

아룬 굽타는 Couchbase의 개발자 지원 담당 부사장입니다. 그는 Sun, Oracle, Red Hat에서 10년 이상 개발자 커뮤니티를 구축하고 이끌었습니다. 그는 콘텐츠, 마케팅 캠페인 및 프로그램의 전략, 계획 및 실행을 개발 및 실행하는 교차 기능 팀을 이끄는 데 있어 깊은 전문성을 보유하고 있습니다. 그 전에는 Sun에서 엔지니어링 팀을 이끌었으며 Java EE 팀의 창립 멤버입니다. Gupta는 기술에 관한 블로그 게시물을 2,000개 이상 작성했습니다. 40여 개국에서 수많은 주제에 대해 광범위한 강연 경험을 가지고 있으며, 3년 연속 JavaOne Rock Star로 선정되었습니다. 또한 미국에서 Devoxx4Kids 지부를 설립하여 어린이를 대상으로 한 기술 교육을 지속적으로 장려하고 있습니다. 기술에 관한 여러 권의 책을 저술했으며, 열렬한 마라토너이자 지구를 횡단하는 사람, Java 챔피언, JUG 리더, NetBeans 드림팀 멤버, Docker 캡틴이기도 한 그는 @arungupta에서 쉽게 만나볼 수 있습니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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