Do Monólito ao Microsserviço
Sobre o Autor
Olá sou Eliézer desenvolvedor a mais de 6 anos e entusiasta em pesquisar e aplicar novidades, estou sempre me atualizando, buscando novos desafios e melhorias para processos existentes. Para quem quiser me conhecer melhor deixo meu Linkedin para entrar em contato, caso queira tem o meu GitHub também lá pode ser encontrado alguns dos meus projetos que faço e participo.
Sobre os microsserviços
Os Microsserviços são extremamente importantes para os dias atuais pois executam inúmeras micro tarefas que no final ao juntar o trabalho realizado por cada um temos o serviço concluído e entregue o trabalho que seria feito antigamente por um único processo chamado monolito algo grande e difícil de escalar conforme demanda.
Sobre o projeto
Já te adianto que não posso disponibilizar o código dos projetos que irei comentar aqui, pois eles são privados da empresa, pois nele contém lógica de negócio e informações da empresa que são confidenciais.
Estes microsserviços teve como principal objetivo ganhar uma experiência extra e lógico um desafio novo pois devs adoram problemas, mas claro também trazer resultado para a empresa onde foi comparado o tempo de processamento de uma única mensagem com o processo antigo monolito e o novo processo em microsserviço e foi surpreendentemente muito melhor mais rápido, performático e menos custoso, como pode ser visto abaixo:
Como pode ser visto o monolito demorou 40 segundos e o microsserviço demorou 20 segundos ou seja uma melhora de 50% no tempo de execução o que é muita coisa nos dias atuais!
Todo o fluxo do monolito foi quebrado em 2 microsserviços um responsável por fazer o trabalho de buscar informações regras e tudo mais e o outro microsserviço responsável por fazer a finalização e encaminhamento dos dados, este segundo não é relevante trazer o gráfico dele pois é um processo extremamente rápido que não demora nem 1 segundo pois ele recebe a finalização do primeiro microsserviço e encaminha dados dizendo que finalizou este registro.
Sobre as tecnologias utilizadas e objetivos
- Neste projeto foi utilizado as tecnologias abaixo:
- Python como a linguagem de programação.
- Poetry para gerenciamento de dependências.
- Flask para prover a aplicação e conseguir executá-la.
- Pytest para execução dos testes unitários da aplicação.
- Tecnologia/Serviços utilizado dentro do projeto:
- Para o sistema de filas foi utilizado o rabbit (Estou com planos em migrar para o Pub/Sub por permitir uma capacidade maior de mensagens e tamanho das mesmas), como provedor de cloud a empresa utiliza o GCP e N serviços dentro dele mas nestes microsserviços utilizamos somente o serviço de Bucket.
A ideia principal por trás de utilizar o python foi de ganhar uma experiência extra e um desafio novo, e de quebra fazer um teste se ele conseguiria performar melhor do que o processo que tem hoje dentro da empresa, e adivinha surpreendentemente ele melhorou e muito, este projeto também foi uma quebra de paradigmas dentro da empresa, pois se estava em uma linha de pensamento defasada e que não seria possível sair do que temos hoje no monolito para algo mais atual, com isso este desenvolvimento veio com a ideia de mostrar que sim é possível migrar pontos dentro de um monólito para algo mais gerenciável e performático, com isso se abriu muitas portas e benefícios dentro da empresa, onde a mesma está em uma linha de evolução e pensamento totalmente diferente do que tinha a tempos atrás, toda essa mudança claro não se dá a apenas a conclusão deste microsserviço mas foi algo que incentivou e deu um gás
Sobre o processo de desenvolvimento
A ideia do microsserviço surgiu de realizar constantemente manutenção neste código em busca da solução de algum problema, que estava dentro daquele “monstro”, o que me deixava cada vez mais desanimado em mexer e debugar cada vez todo o processo para achar o problema que poderia ser um número, sintaxe errada, lógica mal feita, enfim N coisas o que me deixava desanimado e frustrado quem via uma task para arrumar alguma parte deste fluxo, até que um dia eu pensei, por que não utilizar este processo como um benefício para minha carreira e entregar algo valioso para a empresa? Com este pensamento comecei a estudar mais a fundo o Python, arquiteturas, padrões de projeto, CICD, docker e algumas outras coisas que envolve o mundo de devops, foi massante e demorou um certo tempo até concluir o estudo de tudo e se sentir preparado para aplicar pois conciliar as tarefas corriqueiras do dia a dia, estudos, saúde, lazer e ainda algo a mais para este desafio foi complicado mas que me deu uma nova perspectivas dos problemas e de códigos complicados e grandes.
O desenvolvimento a todo momento foi muito desafiador, pois só quem já olhou aquele código difícil de ler sabe do que estou falando, sem falar que a todo momento tinha mudanças no código do monolito e elas tinham que ser consideradas no novo processo também.
Apesar de ser um código grande e complexo foi possível entender e desmembrar ele em 2 microsserviços e aplicando uma arquitetura hexagonal nele, com isso temos todo o processo de portas e adaptadores que esta arquitetura nos permite, facilitando assim a troca de algum módulo ou tecnologia que temos utilizando hoje, por exemplo, estou com planos de mudar o rabbit para o pub/sub e sabem o quão complexo seria trocar em um monolito isso, mas na arquitetura hexagonal é só trocar o adaptador do rabbit para o do pub/sub e implementar os mesmos métodos/funções aceitando os mesmos parâmetros claro, e no final tudo sairá funcionando como se nada tivesse alterado, sendo que alteramos um ponto muito crítico, parece até bobagem e impossível né? Mas acredite é possível sim e muito mais fácil do que você leitor imagina, caso não esteja entendo do que estou falando leia este artigo que irá explicar com detalhes o que seria a arquitetura hexagonal e verá que ela tem inúmeras vantagens.
Como todo código quando está se reescrevendo tem por objetivo facilitar o entendimento e melhorar sua performance, neste projeto não foi diferente pois tive que pensar desde o nome de uma função até o nome de um módulo pois tudo tinha que se encaixar dentro do contexto do que estava sendo proposto dentro deste microsserviço.
Todo o processo foi complicado e não foi fácil o caminho mas o que eu sempre tive em mente foi a conclusão deste microsserviço e a melhora que ele traria para todos os lados, mas tive momentos que pensei em desistir e pensar que é loucura o que estou fazendo e que não surtiria efeito, algumas pessoas até duvidaram que seria possível desmembrar algo neste nível, mas ao finalizar e mostrar funcionando obtive sucesso em todo o meu esforço e dedicação.
Hoje como desenvolvedor sou mais experiente e mais preparado para o mercado tendo mais a agregar no currículo de tecnologias que utilizei e conhecimentos que obtive no decorrer de todo este desenvolvimento.
Faça por si os seus desafios, corra e conquiste-os não será perda de tempo e sim investimento em sua carreira.

Diponível para trabalhos freelancer!
Tem algum projeto e precisa de alguma ajuda?
Me envie um e-mail ou entre em contato comigo pelas redes abaixo!
