Sin categoría

Microservicios con el modelo de aplicaciones sin servidor de AWS y Couchbase

Presentación de Amazon Web Services Modelo de aplicación sin servidoro SAM, hace un par de meses. Define una sintaxis simplificada para expresar
recursos sin servidor. SAM amplía AWS CloudFormation para añadir compatibilidad con API Gateway, AWS Lambda y Amazon DynamoDB. Este blog mostrará cómo crear un microservicio sencillo con
SAM. Por supuesto, usaremos Couchbase en lugar de DynamoDB. Este blog también utilizará los conceptos básicos explicados en Microservicios con AWS API Gateway, AWS Lambda y Couchbase. SAM
mostrará la facilidad con la que puede desplegarse y gestionarse toda la pila de microservicios.

A modo de repaso, he aquí los componentes clave de la arquitectura:

serverless-microservice

  • El cliente puede ser curl, AWS CLI/Console, cliente Postman o cualquier otra herramienta/API que pueda invocar un endpoint REST.
  • AWS API Gateway se utiliza para aprovisionar API. El recurso de nivel superior está disponible en la ruta /libros. HTTP GET y POST para el recurso.
  • Cada API activa una función Lambda. Se crean dos funciones Lambda, lista de libros para listar todos los libros disponibles y libro-crear para crear un nuevo libro.
  • Couchbase se utiliza como almacén de persistencia en EC2. Todos los documentos JSON se almacenan y recuperan de esta base de datos.

Otros blogs sobre serverless:

Empecemos.

Plantilla del modelo de aplicación sin servidor (SAM)

Una plantilla de AWS CloudFormation con recursos sin servidor que se ajustan a la norma Modelo SAM de AWS se denomina archivo SAM o plantilla. Se despliega
como una pila de CloudFormation. Echemos un vistazo a nuestra plantilla SAM: Esta plantilla está disponible en github.com/arun-gupta/serverless/blob/master/aws/microservice/template.yml.

Plantilla SAM Especificación proporcionar detalles completos sobre los contenidos de la plantilla. Las partes clave de la plantilla son:

  • Define dos recursos, ambos de tipo Lambda Function identificados por AWS::Sin servidor::Función atributo. El nombre de la función lambda se define mediante Recursos..
  • La clase de cada manipulador se define mediante el valor de Recursos..Propiedades.Manejador atributo
  • Java 8 runtime se utiliza para ejecutar la función definida por Recursos..Propiedades.Runtime atributo
  • El código de la clase se sube a un bucket de S3, en nuestro caso a s3://serverless-microservice/microservice-http-endpoint-1.0-SNAPSHOT.jar
  • Recursos.Propiedades.Variables.de.entorno.COUCHBASE_HOST define el host donde se ejecuta Couchbase. Esto se puede implementar fácilmente en EC2 como se explica en Configurar Couchbase.
  • Cada función de Lambda se activa mediante una API. Se implementa mediante AWS API Gateway. La ruta se define mediante Events.GetResource.Properties.Path. El método HTTP se define mediante Events.GetResource.Properties.Method atributo.

Aplicación Java

La aplicación Java que contiene las funciones Lambda se encuentra en github.com/arun-gupta/serverless/tree/master/aws/microservice/microservice-http-endpoint.
Función lambda activada por HTTP GET se muestra el método:

Un poco de explicación:

  • Cada función Lambda debe implementar la interfaz com.amazonaws.services.lambda.runtime.RequestHandler.
  • La integración de API Gateway y Lambda requiere un formato de entrada y formato de salida.
    Estos formatos se definen como GatewayRequest y GatewayResponse clases.
  • La función lógica utiliza SDK Java de Couchbase para consultar la base de datos Couchbase. N1QL se utiliza para consultar
    la base de datos. A continuación, los resultados y la excepción se envuelven en GatewayRequest y GatewayResponse.

La función lambda activada por el método HTTP POST también es bastante sencilla:

Un poco de explicación:

  • La carga útil de la solicitud entrante se recupera de GatewayRequest
  • El documento insertado en Couchbase se devuelve como respuesta.
  • Al igual que el método anterior, Function logic utiliza SDK Java de Couchbase para consultar la base de datos Couchbase. Los resultados y la excepción son entonces
    envuelto en GatewayRequest y GatewayResponse.

Construir la aplicación Java como:

Cargar función lambda en S3

La plantilla SAM lee el código de un bucket S3. Vamos a crear un cubo S3:

us-oeste-2 región es una de las regiones compatibles con API Gateway. Los nombres de los buckets S3 son únicos a nivel mundial, pero su ubicación es específica de cada región. Cargar
el código al cubo S3:

El código se ha subido al bucket S3. La plantilla SAM está lista para ser desplegada.

Despliegue de la plantilla SAM

Despliegue la plantilla SAM:

Muestra la salida:

Este comando despliega funciones Lambda y recursos REST/API que activan estas funciones Lambda.

Invocar el microservicio

API Gateway publica una API REST que puede invocarse mediante curl, wget, AWS CLI/Console, Postman o cualquier otra aplicación que pueda llamar a una API REST. Este blog utilizará la consola de AWS para mostrar la interacción. Página de inicio de API Gateway en us-west-2.console.aws.amazon.com/apigateway/home?region=us-west-2#/apis espectáculos:
AWS SAM Microservice API
Haga clic en la API para ver todas las API de este recurso:

AWS SAM Microservice API Resources

Haga clic en POST para ver la página por defecto para la ejecución del método POST:

AWS SAM Microservice API POST

Haga clic en Test para probar la API:

AWS SAM Microservice API POST Input

Añada la carga útil en el cuerpo de la solicitud y haga clic en Prueba para invocar la API. Los resultados se muestran a continuación:

AWS SAM Microservice API POST Output

Ahora haga clic en GET para ver la página de ejecución por defecto:

AWS SAM Microservice API GET

Haga clic en Test para probar la API:

AWS SAM Microservice API GET Input

No se necesita ningún cuerpo de solicitud, basta con hacer clic en Probar para invocar la API. Los resultados son los que se muestran:

AWS SAM Microservice API GET Output

La salida de la base de datos Couchbase se muestra en el cuerpo de la respuesta.

Referencias

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Arun Gupta

Arun Gupta es vicepresidente de promoción de desarrolladores en Couchbase. Ha creado y dirigido comunidades de desarrolladores durante más de 10 años en Sun, Oracle y Red Hat. Tiene una gran experiencia en liderar equipos multidisciplinares para desarrollar y ejecutar estrategias, planificar y ejecutar contenidos, campañas de marketing y programas. Anteriormente dirigió equipos de ingeniería en Sun y es miembro fundador del equipo Java EE. Gupta es autor de más de 2.000 entradas de blog sobre tecnología. Tiene una amplia experiencia como conferenciante en más de 40 países sobre innumerables temas y es una JavaOne Rock Star desde hace tres años consecutivos. Gupta también fundó el capítulo Devoxx4Kids en Estados Unidos y sigue promoviendo la educación tecnológica entre los niños. Autor de varios libros sobre tecnología, ávido corredor, trotamundos, campeón de Java, líder de JUG, miembro del Dream Team de NetBeans y capitán de Docker, es fácilmente accesible en @arungupta.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.