Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
December 11, 2022 03:06 pm GMT

[Desafio] - Desenhar uma Soluo de Lanamentos Financeiros a Partir de Requisitos

Contedo original em https://twitter.com/zanfranceschi/status/1601954872168837120

Ei dev, achou que minhas threads tinham ido de base, n?

Pra voc que cansou de fazer CRUD e t sem inspirao pra estudar/praticar, vou propor um desafio em que s descrevo os requisitos e restries sobre um assunto conhecido lanamentos financeiros.

cc @sseraphini

Image

Esse tipo de situao comum pra quem trabalha com desenvolvimento. O cliente quer uma aplicao, fala como algumas coisas tm que ser e deixa outras em aberto. um cenrio realista e legal pra quem gosta de arquitetura e/ou quer alguma coisa diferente pra praticar.

DISCLAIMER

Esse um desafio um pouco mais avanando. Ento se vc for iniciante no se preocupe caso no entenda alguma coisa. Se quiser mesmo assim fazer e tiver alguma dvida, s perguntar aqui! S gente legal l minhas threads e algum vai te ajudar!

Vamos ento comear com o que a nossa soluo dever entregar. basicamente uma API mais ou menos como mostra a imagem.

So dois endpoints, um para o saldo atual e outro para mostrar os lanamentos.

Image

Bora pros requisitos.

- Essa API deve ser otimizada pra leitura. Ela deve apenas ler o saldo pronto de um banco de dados sem precisar comput-lo a cada leitura.

- Ela tem que limitar a leitura dos lanamentos uma paginao e filtros por perodo so necessrios.

- Apenas lanamentos de at 90 dias ficam disponveis no endpoint de lanamentos nada antes disso.

- Para lanamentos anteriores a 90 dias, tem que haver um endpoint para fazer a solicitao e ento a aplicao gerar um arquivo para ficar disponvel pra download. +

Ento, na verdade, precisamos de mais alguns endpoints: solicitao de lanamentos anteriores a 90 dias; consulta dessas solicitaes; e download desses lanamentos antigos. Ah, tem que haver um expurgo desses arquivos tambm. (Esteja preparada/o para solicitaes de mudanas!)

- Para alimentar o banco da API, os lanamentos so disponibilizados de duas formas:

1- Um arquivo gerado diariamente; e

2- Uma fila onde, em tempo quase real, os lanamentos so publicados.

Aqui, a abordagem com filas mais desejada do que a leitura de arquivos, t?

- O processamento (tanto das mensagens nas filas ou dos arquivos) precisa ser idempotentes! Ou seja, se a mesma mensagem ou arquivo for processado duas ou mais vezes, o saldo e os lanamentos precisam permanecer corretos.

- Inicialmente, existe uma restrio de runtime em que a primeira verso da soluo precisa ter todos os componentes compartilhando o mesmo processo (API, daemons, consumidores, etc) exceto o banco.

- 4 meses aps o lanamento da primeira verso, os componentes devem ser executados em processos distintos runtimes dedicados , inclusive com execues individuais de CI/CD. E essa mudana de um runtime compartilhado para runtimes dedicados precisa ser a mais rpida possvel!

- A soluo deve funcionar adequadamente com distribuio de carga entre vrios ns/servidores. Ou seja, deve escalar horizontalmente, tratar condies de corrida e possuir o mnimo possvel de estado nos ns que no sejam os de banco de dados.

- Use o banco de dados que quiser.

- Use a lang/stack que quiser.

- No negligencie a observabilidade: mtricas, logs, e talvez rastreabilidade.

- Lembra dos at 90 dias de lanamentos? Tudo que for anterior a isso, mova do banco onde esto os lanamentos para um armazenamento mais barato. E tudo que for anterior a 3 anos, expurgue exclua definitivamente.

isso, gente. Eu poderia ficar horas e horas inventando requisitos, mas a thread ficaria enorme. De toda forma, acredito que tenha conseguido inventar um desafio com requisitos realistas pra vc poder estudar/praticar/pensar. E claro!, adicione seus requisitos tambm, se quiser.

Queria agradecer de corao se voc leu at aqui e/ou me acompanha dando essa moral, sabe? por voc e pelo compartilhamento de experincias que escrevo esse tipo de contedo.

Muito obrigado!


Original Link: https://dev.to/zanfranceschi/desafio-desenhar-uma-solucao-a-partir-de-requisitos-lancamentos-financeiros-33g3

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