Este blog ha explicado algunos conceptos de Serverless con ejemplos de código:

Esta entrada de blog en particular mostrará cómo utilizar AWS Lambda para almacenar tweets de un tuitero en Couchbase. Estos son los componentes de alto nivel:

lambda-twitter-couchbase

Los conceptos clave son:

El código de muestra completo de este blog está disponible en github.com/arun-gupta/twitter-n1ql.

Modelo de aplicación sin servidor

Modelo de aplicación sin servidoro SAM, define una sintaxis simplificada para expresar recursos sin servidor. SAM amplía AWS CloudFormation a
añadir compatibilidad con API Gateway, AWS Lambda y Amazon DynamoDB. Lea más detalles en Microservicios con el modelo de aplicaciones sin servidor de AWS y Couchbase.
Para nuestra aplicación, la plantilla SAM está disponible en github.com/arun-gupta/twitter-n1ql/blob/master/template-example.yml y se muestra a continuación:

¿Qué vemos aquí?

  • La función está empaquetada y disponible en un bucket S3
  • La clase Handler es org.sample.twittter.TwitterRequestHandler y se encuentra en github.com/arun-gupta/twitter-n1ql/blob/master/twitter-feed/src/main/java/org/sample/twitter/TwitterRequestHandler.java.
    Eso parece:

    Por defecto, esta clase lee el handle de twitter de Donald Trump. Más información en otro blog.
  • COUCHBASE_HOST y COUCHBASE_BUCKET_PASSWORD son variables de entorno que proporcionan el host EC2 donde se ejecuta la base de datos Couchbase y la contraseña del bucket.
  • La función puede activarse por diferentes eventos. En nuestro caso, se activa cada tres horas. Más detalles sobre la expresión utilizada aquí en Programar expresiones utilizando Rate o Cron.

Obtención de tweets con Twitter4J

Los tweets se leen utilizando Twitter4J API. Es una API no oficial de Twitter que proporciona una abstracción Java sobre API REST de Twitter. He aquí un ejemplo sencillo:

Documentos de Twitter4J y Javadocs son bastante completos. La API de Twitter sólo permite leer los últimos 200 tweets. La función lambda se invoca cada 3 horas.
La frecuencia de tuits de @realDonaldTrump no es de 200 cada 3 horas, al menos de momento. Si alcanza ese nivel peligroso, entonces podemos ajustar la tasa para activar la función Lambda con más frecuencia.
La representación JSON de cada tweet se almacena en el servidor Couchbase utilizando SDK Java de Couchbase. AWS Lambda es compatible con Node, Python y C#. Y así
puede utilizar SDK de Couchbase Node, SDK de Couchbase para Python o
SDK .NET de Couchbase para escribir estas funciones también. La API de Twitter4J permite obtener tweets a partir del id de un tweet en particular. Esto permite
garantizar que no se obtengan tweets duplicados. Esto nos obliga a ordenar todos los tweets en un orden determinado y, a continuación, elegir el id del tweet más reciente. Esto se solucionó con el sencillo método Consulta N1QL:

La sintaxis es muy parecida a la de SQL. Más sobre esto en un blog posterior.

Almacenar Tweets en Couchbase

El último punto es almacenar los tweets recuperados en Couchbase. Valor de COUCHABSE_HOST se utiliza para conectarse a la instancia de Couchbase. El valor de COUCHBASE_BUCKET_PASSWORD variable de entorno
es conectarse al bucket seguro donde se almacenan todos los documentos JSON. Es muy importante que el bucket esté protegido por contraseña y no se especifique directamente en el código fuente. Más sobre esto en un blog posterior. El documento JSON
es upserted (insertar o actualizar) en Couchbase usando la API Java de Couchbase:

Esta función lambda lleva funcionando unos días y ha capturado 258 tweets de @realDonaldTrump.

En breve publicaremos un interesante análisis de sus tuits.

Hable con nosotros:

El código de muestra completo de este blog está disponible en github.com/arun-gupta/twitter-n1ql.

Autor

Publicado por Arun Gupta, Vicepresidente, Defensa del Desarrollador, Couchbase

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.

Dejar una respuesta