Rafael Ugolini

Rafael Ugolini es un desarrollador de software full stack que actualmente trabaja en Famoco en Bruselas, Bélgica. Ha estado trabajando con el desarrollo de software durante más de 10 años y últimamente se centra en el diseño de soluciones web y el desarrollo utilizando Python y Javascript. TwitterLinkedInGithub

Introducción

En este artículo voy a proponer una primero fuera de línea desarrollo mediante Couchbase como herramienta de comunicación entre el backend y el frontend.

Mientras estudiaba react-redux, algo que me gustó mucho es el Acciones asíncronas patrón donde usted tiene:

Después de entender un poco más sobre Couchbase y Pasarela de sincronización CouchbaseEste patrón proporciona una muy buena experiencia de usuario, ya que realmente renderiza la página basada en el estado actual de la aplicación.

¿Cómo funciona?

How does it work

Aplicación

La aplicación en sí nunca hace ninguna llamada al backend, la única responsabilidad que tiene es guardar estados y renderizarlos, de esta manera es posible tener una aplicación completamente funcional trabajando offline.

Pasarela Couchbase Lite/Sync

Couchbase Lite se encargará de sincronizar el estado actual de la aplicación con Pasarela de sincronización Couchbase y recuperar la nueva información una vez que el documento se actualiza en el backend.

Ganchos web

Una vez que Couchbase Sync Gateway recibe un documento que coincide con el filtro, hará una llamada HTTP a la Web App con el documento que necesita actualizar.

Aplicación web

La Web App puede hacer cualquier tipo de actualización como:

  • Creación de una nueva tarea en una cola de tareas
  • Recuperación de datos de una API externa
  • Analizar algunos datos/imágenes (p. ej.: OCR)

Manos a la obra

Para ilustrar un poco cómo funciona este concepto, desarrollo un ejemplo sencillo en el que una vez guardado un documento concreto, la aplicación web enviará una tarea que obtendrá un personaje aleatorio de Star Wars y actualizará el documento.

Puede descargar todo el código necesario para ejecutar un ejemplo de esto solución.

La pila está compuesta por:

  • Aplicación web - Flask
  • Cola de tareas - Celery + RabbitMQ
  • Sync Gateway (modo morsa)

Para ejecutarlo, simplemente clona el repositorio git y ejecuta docker-compose:

Modelado de datos

En este ejemplo, la clave acción es la fuente principal de los eventos, el documento debe guardarse con:

Para crear un documento curl, basta con utilizar el siguiente comando

Pasarela de sincronización

En la configuración de la puerta de enlace de sincronización, su registrado un controlador de eventos que cada cambio de documento con action == "solicitud_persona"se realizará una llamada a la API de la aplicación web.

Aplicación web

La aplicación web es una simple API de Flask que recibe un POST con la información del documento y envía una tarea a Celery.

La tarea consultará a un personaje aleatorio de Star Wars de https://swapi.co/ y actualizar el documento:

 

Cliente

He desarrollado un simple cliente pouchdb que imprimirá todos los documentos de sync gateway a la consola. Básicamente ejecuta esta función cada vez que hay un cambio en la base de datos.

YPuedes conseguirlo en repositorio git.

 

Este artículo ha sido publicado por la Programa de redacción de la comunidad Couchbase

 

Autor

Publicado por Laura Czajkowski, Directora de la Comunidad de Desarrolladores, Couchbase

Laura Czajkowski es la Snr. Developer Community Manager en Couchbase supervisando la comunidad. Es responsable de nuestro boletín mensual para desarrolladores.

1 Comentarios

Dejar una respuesta