Criar arquiteturas orientadas a eventos com o Eventarc

É possível usar o Eventarc e o Firestore para criar arquiteturas orientadas a eventos. Os gatilhos do Firestore para Eventarc geram eventos com base em alterações em um determinado documento no seu banco de dados. O gatilho pode rotear eventos para um destino compatível:

O Eventarc oferece uma solução padronizada para gerenciar o fluxo de mudanças de estado, chamadas de eventos, entre microsserviços separados. Quando acionado, o Eventarc encaminha esses eventos para vários destinos enquanto gerencia entrega, segurança, autorização, observabilidade e tratamento de erros para você.

Limitações

Observe as seguintes limitações para os gatilhos do Firestore para Eventarc:

  • Não garantimos acionamentos em ordem. Alterações rápidas podem acionar eventos em uma ordem inesperada.
  • Os eventos são entregues pelo menos uma vez.

    Certifique-se de que o manipulador de eventos seja idempotente e evite produzir resultados ou efeitos colaterais inesperados quando um evento é entregue mais de uma vez. Consulte Como criar funções idempotentes para saber mais.

  • Um gatilho está associado a um único banco de dados. Não é possível criar um gatilho que corresponda a vários bancos de dados.

  • A exclusão de um banco de dados não remove automaticamente nenhum gatilho dele. O gatilho deixa de entregar eventos, mas continua existindo até que você o exclua.

Locais do Eventarc e Firestore

O Eventarc não oferece suporte a multirregiões para acionadores de eventos do Firestore, mas ainda é possível criar gatilhos para bancos de dados do Firestore em locais multirregionais. O Eventarc mapeia os locais multirregionais do Firestore para as seguintes regiões do Eventarc:

Multirregião do Firestore Região do Eventarc
nam5 us-central1
eur3 europe-west4

Diferenças entre o Cloud Functions (2a geração) e 1a geração

O Cloud Functions (2nd gen) usa eventos do Eventarc para todos os ambientes de execução. Anteriormente, o Cloud Functions (1a geração) usava eventos do Eventarc para apenas alguns ambientes de execução. Os eventos do Eventarc apresentam as seguintes diferenças em relação ao Cloud Functions (1a geração).

  • Os gatilhos do Firestore para Eventarc são compatíveis com outros destinos além do Cloud Functions. É possível rotear CloudEvents para vários destinos, incluindo, entre outros, Cloud Run, GKE e Workflows.

  • Os gatilhos do Firestore para Eventarc recuperam a definição do acionador no início de uma operação de gravação no banco de dados e usam essa definição para decidir se o Firestore precisa emitir um evento. A operação de gravação não leva em conta nenhuma mudança na definição do acionador que pode acontecer durante a execução.

    O Cloud Functions (1a geração) recupera a definição do gatilho durante a avaliação da gravação do banco de dados, e as alterações no gatilho durante a avaliação podem afetar se o Firestore emite um evento ou não.

Interoperabilidade entre o modo Datastore e o evento no modo nativo

O Eventarc é compatível com gatilhos de eventos no modo Datastore e no modo nativo. Esses gatilhos de eventos são interoperáveis com ambos os tipos de banco de dados. Um banco de dados do Firestore em modo nativo pode receber eventos do Datastore, enquanto um banco de dados do Firestore em modo Datastore pode receber eventos do modo nativo.

A interoperabilidade de eventos permite compartilhar o código do Eventarc entre bancos de dados do Firestore de diferentes tipos.

Conversões de eventos

Se você aplicar um acionador de evento do modo nativo a um banco de dados do modo Datastore, o Eventarc fará as seguintes conversões:

  • O namespace da entidade é armazenado no atributo PartitionId do evento.
  • As entidades incorporadas são convertidas em tipos map do modo nativo.

A seguir