Bom pessoal, no vídeo anterior eu falei para vocês de dois mecanismos de sincronização, o Message Queues e o Pub Sub System e também falamos do Schedule Synchronization Jobs. Agora a gente tem mais dois caras aqui que são importantes para a gente falar. Um é chamado de Dual Rights e o outro é chamado de CDC Writes, tá? E o outro é chamado de CDC, ou Change Data Capture. Vamos falar do Dual Writes. O Dual Writes, ele é bem simples, inclusive eu vou mostrar um exemplo aqui para vocês com código, tá? Mas como é que ele funciona aqui no final das contas? Eu tenho um comando e esse comando, ele vai gerar a gravação no meu banco de dados de escrita, tá? ele vai gerar a gravação no meu banco de dados de escrita. Porém, esse comando aqui, internamente, ele pode, por exemplo, gerar um comando interno, um evento interno no meu sistema, e esse evento interno no sistema, guardar, gravar, num banco de dados de leitura. dados de leitura ok então se você perceber o mesmo sistema durante o meu comando ele grava ao mesmo tempo nesses dois lugares tá um ponto importante que eu sempre vou recomendar é que na hora que você envia esse evento de mecanismo de light você também vai gravar nessa leitura e se você tiver algum problema nessa, quer dizer, para gravar essa leitura, você faça o rollback aqui. Vai depender de como você vai querer compensar a transação. O grande ponto que você vai ter que pensar é que você vai ter duas operações distintas, mas que se uma falhar, a outra também tem que voltar atrás, porque esses bancos de dados não têm outro mecanismo de sincronização. Então, eu tenho que garantir que o dado foi gravado aqui e eu tenho que garantir que o dado foi gravado aqui. Então, é muito importante nesse momento você conseguir trabalhar tá então do right você grava tanto um banco de dados de leitura e um banco de dados de gravação aqui também tá e por último pessoal a gente tem um outro mecanismo tá que ele é chamado de change data capture ou se disse o que esse cara faz? Ele faz o seguinte, ele tem um comando, o comando manda para um banco de dados, e aqui eu tenho um sistema que fica lendo os logs desse banco de dados, pegando essas informações e gravando aqui no sistema de leitura. Aqui pode ser, sei lá, um MySQL, aqui pode ser um Mongo, por exemplo. Esse sistema aqui, normalmente, não é você quem desenvolve. Normalmente, são soluções prontas para te ajudar a ter mais facilidade para você trabalhar. Um exemplo muito claro aqui, que pode ser um sistema desse tipo, é um Kafka Connect da vida. O que o Kafka Connect faz? Ele tem um cluster rodando, uma informação rodando aqui, ele tem por exemplo um plugin chamado TheBijon, o que que esse cara faz? Ele fica lendo o seu banco de dados através de um source, tá? A gente chama isso aqui de source. Quando ele lê esses dados ele joga para cá e ele tem outro cara aqui que a gente chama de Sink, que é uma pia onde ele esvazia os dados, onde ele joga para cá. Legal? Então, isso aqui nos ajuda muito, porque para você fazer integração entre sistemas ou gravação em múltiplos bancos de dados, esse cara aqui, ele foi feito para isso. bancos de dados, esse cara aqui, ele fica, ele foi feito para isso. Ele foi feito para ler fonte de dados e ele foi feito para gravar em outros lugares aqui para você. Legal? Então, o Change Data Capture, ele é muito utilizado. Você consegue trafegar ali bilhões de informações, tá? E isso aí é muito, galera, mas é muito bacana mesmo, principalmente quando você tem que fazer integração entre sistemas. Não somente quando você quer trabalhar com CQRS e separar leitura de escrita, mas normalmente quando você tem também outros sistemas que precisam ter bancos de dados populados automaticamente. Então, esses tipos de operação, tá? Eles vão facilitar muito a vida. Você configura um arquivo aqui, você configura um outro cara aqui, e daí ele fica gravando, ele fica lendo e gravando aqui para você. Normalmente, ele lê um log aqui do banco de dados, um log binário, normalmente, para ele ver a diferença do que mudou e começar a mandar os dados para cá. Então, esses são quatro mecanismos de sincronização de dados que vão poder ser utilizados. Obviamente, pessoal, que podem existir outros mecanismos. Eu vou até dar um exemplo para vocês. Por exemplo, sei lá, eu posso estar utilizando o Postgres, eu posso criar uma réplica de gravação e uma réplica de leitura, e aí eu estou feliz e contente. Ou seja, eu vou manter isso sincronizado. Agora, o ponto é que quando você quer ter um esquema diferente de leitura do de gravação para facilitar a minha leitura, aí a coisa muda de figura. Então é por isso que eu tenho esses mecanismos de sincronização para fazer essa diferença aqui para mim. Beleza? Então é isso aí, galera, que eu queria falar aqui sobre esses mecanismos de sincronização.