DEV Community

Francisco Zanfranceschi
Francisco Zanfranceschi

Posted on • Updated on

[Conceito] - Event-Carried State Transfer

Conteúdo original nessa thread do Twitter


Devs,

Cêis curtem história de amor, né? Então fica aqui que vou mostrar como uma história de amor e angústia foi resolvida com Event-Carried State Transfer ─ um padrão muito bonito ♥️

Vai ter amadurecimento emocional, espaço para o outro ser e muito mais.

cc @sseraphini

🧵

img

img


Lea era muito amada por Rob, mas Rob era muito carente e tudo que planejava fazer, perguntava a ela se ainda o amava. No começo era legal, mas isso consumia muito Lea.

Por vezes, Lea não respondia e isso causava muita dor a Rob.

img

img


A demanda sobre Lea aumentava proporcionalmente ao crescimento dos desejos de Rob. E isso era extenuante a nossa querida Lea.

img


Lea então decidiu que não mais participaria daquilo que considerava uma questão de domínio apenas de Rob! "Chega!", disse a si mesma num momento decisivo. Assim, cortara acesso àquele canal de questionamentos quase retóricos de Rob.

img


Mas o amor de Lea era também genuíno. Precisaria então disponibilizar uma forma para que Rob soubesse de seu amor.

Durante um agradável jantar, Lea ─ firme, porém amorosa ─ explicou à Rob que a partir daquele momento iria avisá-lo sempre que seu amor por ele mudasse.


Rob ─ atento e apreensivo ─ continuou a escutar sua amada.

"Babe, I love you so and vou disponibilizar um canal para informar sempre que houver alguma mudança sobre o que sinto for you, okay?"

Lea disponibilizaria essa possível mudança de estado num barramento de eventos.

img


O começo dessa fase não foi fácil para os dois. Mas com alguns ajustes, tudo ficou bem. E em uma mistura de estreia, despedida, e amadurecimento, Lea publicou no barramento o estado de seu amor por Rob que ─ claro ─ era genuíno e promissor.

img


No começo, Rob estranhou o novo formato. Entretanto, se sentiu mais livre e satisfeito por fazer sua amada também mais livre.

Hoje, após 2 anos dessa mudança difícil, porém importante para a autonomia dos dois, Rob consegue realizar seus desejos de forma muito mais autônoma.

img


Caiu uma lagriminha, vai? 💕

Publicar mudanças de estado num barramento é o tal do Event-Carried State Transfer. Ou seja, em tradução livre "Transferência de Estado Carregada por Evento".

A ideia por trás disso é que o sistema que tiver seu ESTADO ALTERADO notificará isso.


E fazendo isso, seu estado será carregado via evento e transferido para outros sistemas que se interessem por ele, sem que o publicador do evento precise necessariamente saber quem são.

Uma explicação melhor aqui, ó -> https://martinfowler.com/articles/201701-event-driven.html


A ideia fundamental aqui é que Lea e Rob sejam dois microsserviços distintos e que funcionem de forma desacoplada. O banco de dados de Rob é parte do microsserviços de Rob.

Mas continua aqui que a história de Lea e Rob ainda não acabou.


Rob e Lea tiveram um filho lindo ─ Christian ─, mas infelizmente o amor entre eles acabou.

Rob continua trabalhando na Holanda ganhando 15k euros por mês. Lea trabalha para uma empresa Japonesa desenvolvendo games, mora no Nordeste, ganha U$ 240k/ano e vai a Tóquio 5x por ano.


Christian acaba ficando com Lea a maior parte do tempo. Mas Rob o visita quase todos os meses.

Rob e Lea já combinaram de Chris estudar na Holanda quando ficar mais velho.

img


Se chegou até aqui, já sabe, né? É abraço, beijo, elogio e rasgação de seda pra vc! 💕

Discussion (0)