Rafael Ugolini

Rafael Ugolini é um desenvolvedor de software full stack que atualmente trabalha na Famoco em Bruxelas, Bélgica. Ele trabalha com desenvolvimento de software há mais de 10 anos e, ultimamente, tem se concentrado no design de soluções da Web e no desenvolvimento usando Python e Javascript. TwitterLinkedInGithub

Introdução

Neste artigo, vou propor uma off-line primeiro desenvolvimento usando Couchbase como a ferramenta de comunicação entre o backend e o frontend.

Ao estudar o react-redux, algo de que gostei muito foi o Ações assíncronas padrão onde você tem:

Depois de entender um pouco mais sobre o Couchbase e o Gateway de sincronização do CouchbaseSe você tiver um aplicativo off-line totalmente funcional, parece possível aplicar esse tipo de padrão e deixar que o Couchbase lide com toda a comunicação do aplicativo. Esse padrão proporciona uma experiência de usuário muito boa porque você realmente renderiza a página com base no status atual do aplicativo.

Como isso funciona?

How does it work

Aplicativo

O aplicativo em si nunca faz nenhuma chamada para o back-end, a única responsabilidade que ele tem é salvar estados e renderizá-los. Dessa forma, é possível ter um aplicativo totalmente funcional trabalhando off-line.

Couchbase Lite/Sync Gateway

Couchbase Lite será responsável por sincronizar o estado atual do aplicativo com Gateway de sincronização do Couchbase e recuperar novas informações assim que o documento for atualizado no backend.

Ganchos da Web

Quando o Couchbase Sync Gateway receber um documento que corresponda ao filtro, ele fará uma chamada HTTP para o aplicativo Web com o documento que precisa ser atualizado.

Aplicativo da Web

O aplicativo Web pode fazer qualquer tipo de atualização, como:

  • Criação de uma nova tarefa em uma fila de tarefas
  • Recuperação de dados de uma API externa
  • Analisar alguns dados/imagens (por exemplo: OCR)

Mãos à obra

Para ilustrar um pouco como esse conceito funciona, desenvolvi um exemplo simples em que, depois de salvar um documento específico, o aplicativo da Web enviará uma tarefa que obterá um personagem aleatório de Star Wars e atualizará o documento.

Você pode baixar todo o código necessário para executar um exemplo disso solução.

A pilha é composta por:

  • Aplicativo da Web - Flask
  • Fila de tarefas - Celery + RabbitMQ
  • Sync Gateway (modo morsa)

Para colocá-lo em execução, basta clonar o repositório git e executar o docker-compose:

Modelagem de dados

Neste exemplo, a chave ação é a fonte primária dos eventos, o documento deve ser salvo com:

Para criar um documento curl, basta usar o seguinte comando

Gateway de sincronização

Na configuração do gateway de sincronização, foi registrado um manipulador de eventos para cada alteração de documento com action == "person_request"uma chamada de API será feita para o aplicativo Web.

Aplicativo da Web

O aplicativo da Web é uma API simples do Flask que recebe um POST com as informações do documento e envia uma tarefa para o Celery.

A tarefa consultará uma pessoa aleatória de Guerra nas Estrelas de https://swapi.co/ e atualizar o documento:

 

Cliente

Desenvolvi um cliente pouchdb simples que imprimirá todos os documentos do gateway de sincronização para o console. Basicamente, ele executa essa função sempre que há uma alteração no banco de dados.

YVocê pode obtê-lo no seguinte endereço repositório git.

 

Esta postagem foi trazida a você pelo Programa de redação da comunidade Couchbase

 

Autor

Postado por Laura Czajkowski, gerente da comunidade de desenvolvedores, Couchbase

Laura Czajkowski é a Snr. Developer Community Manager da Couchbase, supervisionando a comunidade. Ela é responsável pelo nosso boletim informativo mensal para desenvolvedores.

Um comentário

Deixar uma resposta