Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
June 28, 2022 03:34 am GMT

Como criar micro servios - Nvel fcil

Criar uma API Rest e estruturar micro servios no precisa ser algo difcil. Nesta sequncia de artigos vamos entender desde a concepo de uma infraestrutura baseada em micro servios at o desenvolvimento completo de uma aplicao.
O que vamos ter nessa aplicao?

Veja o diagrama:

Diagrama de infraestrutura de micro servios

Baseado no diagrama vou explicar a motivao por trs de cada item e como vamos trabalhar com ele.

importante tambm que voc entenda o que vamos levar em considerao como regras de negcio.

Sim, regras de negcio. Ser programador no s sobre sair criando cdigos e scripts de automatizao. Voc precisa resolver problemas! Nada melhor que entender como o problema surge para conseguir uma sada para resolv-lo.

Vamos aos itens do diagrama.

CDN (Frontend Statics)

, essencialmente, nosso frontend. Voc pode entend-lo como a aplicao em HTML e CSS, React, ou seja, l qual o framework/lib que voc queira usar (Vamos usar o React).

Containers

Esse grupo de itens corresponde s APIs que vamos criar separadamente, cada qual com suas respectivas responsabilidades.

Transactions API

Essa nossa API de transaes (ou pagamentos e recebimentos).

Essa API vai manter o histrico de transaes de cada usurio e conta de usurio.

Para simplificar, associe a um banco. Como se voc fosse o usurio e tivesse contas nesse banco, algo como uma conta corrente e uma poupana.

Essa API vai conter algo semelhante ao seu extrato.
Vamos s regras de negcio da Transactions API

Regra 1: S podemos cadastrar transaes, no podemos exclu-las.

Isso significa que uma devoluo ou estorno deve ser uma nova transao com o valor reembolsado.

Regra 2: Toda transao deve ser diretamente relacionada a um usurio e a uma conta deste usurio.

Isso significa que uma transao deve ter um usurio e uma conta deste mesmo usurio como origem/destino.

Regra 3: Toda transao deve ter um tipo, como entrada ou sada. Alm de ter o valor, em centavos, da transao, bem como o mtodo de pagamento (Ex.: pix, dbito, doc ou ted).

Users API

Essa a nossa API de usurios.

Essa API vai manter os dados dos clientes. Aqui teremos e-mail, senha, data de criao e atualizao de conta.
Sero somente esses dados apenas para fins didticos.

Vamos s regras de negcio da Users API

Regra 1: Todo usurio deve fornecer um e-mail e uma senha para cadastro.

Isso significa que ambos campos de identificao do usurio so obrigatrios.

Regra 2: Toda atualizao, adio de transao ou abertura de conta deste usurio deve registrar a data de atualizao do usurio.

Isso significa que nosso campo updated_at sofrer uma atualizao a cada ao de escrita do usurio.

Accounts API

Essa a API de contas de usurio.
Nela vamos manter o tipo da conta do usurio (se corrente ou poupana), o balano, o nmero e o usurio dono da conta.
Vamos s regras de negcio da Accounts API

Regra 1: Toda conta deve ter um tipo. Imagino algo como conta corrente, conta poupana.
Isso significa que no podemos permitir um usurio criar uma conta sem solicitar que seja, conta-corrente ou conta-poupana.

Regra 2: Toda conta deve ter obrigatoriamente um dono.
Isso nos diz que tambm no podemos permitir a criao de uma conta sem que haja um usurio envolvido.

Regra 3: O balano da conta deve ser recalculado sempre que for recebido um evento de nova transao.

Isso significa que sempre que houver uma nova transao nossa API de contas vai ouvir este evento e recalcular o balano baseado nesta nova transao.

Database

Geralmente, micro servios consomem suas prprias bases de dados. Nesta aplicao vamos utilizar uma nica base de dados separando apenas as tabelas.

Isso no algo incomum em grandes sistemas que esto no processo de migrao de um monlito. uma etapa encontrada durante o processo de estrangulamento do sistema, mas isso assunto para outro momento.

Cada micro servio deve ser independente de qualquer outro. Vamos trazer isso para nosso modelo. Caso nossa API de transaes cair por qualquer motivo, a API de usurios ou de contas devem se manter funcionando de forma independente.
Algo que parcialmente verdade em nosso design atual. Caso o usurio queira saber seu saldo total no possvel se nossa API de contas venha a cair.

Para resolver isso, deveramos clonar o balano das contas do usurio dentro da base de usurios. Isso tornaria nossa aplicao independente e caso a API de contas fique fora do ar, nosso cliente ainda consegue ver seu saldo atual.

Ah! mas isso gera duplicidade de dados, n?! Correto!

Esta outra dvida que acontece quando falamos sobre micro servios independentes. Se voc est no incio de sua startup no sei se voc deveria considerar usar micro servios, quando digo no sei, na verdade, quero dizer no aconselho usar.

Micro servios so caros. Voc deve levar em conta a utilizar micro servios em situaes especficas. Por exemplo, quando seu sistema est to grande a ponto de ser muito custoso (em termos de desenvolvimento, no financeiro) para qualquer implementao nova.

Enfim, este outro tema que d um artigo completo.
Quanto s nossas bases de dados, simplesmente teremos trs tabelas, usurios, transaes e contas. Algo como o seguinte diagrama:

Modelagem de tabelas da base de dados

Fila e eventos

Vou te mostrar como trabalhar com fila e eventos no um monstro de sete cabeas.

Fila, como o prprio nome j diz uma fila! (Uau!)

Meme Genius

Em essncia, vamos adicionar um evento na fila e esquec-lo l. Outra parte da nossa aplicao vai ficar monitorando a fila, pegando os eventos (tambm conhecidos como mensagens) e processando os dados recebidos.

Para essa fila de eventos (ou mensagens) vamos utilizar RabbitMQ.

Espero que fique calmo, no algo difcil de utilizar. Voc ver que algo extremamente simples.

importante salientar que diferente utilizar de implantar. RabbitMQ algo complexo para se lidar quando se trata de infraestrutura. Porm, como desenvolvedor algo relativamente simples.

Vamos mo na massa na parte II. Espero voc l.


Original Link: https://dev.to/jeanmolossi/como-criar-micro-servicos-nivel-facil-37me

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To