Ir para o conteúdo principal

[Técnico] Analisar possibilidade de utilização de microsserviços nos sistemas do Time TambaKiss

Data de elaboração30/06/2023
Responsável pelo estudo

Raissa de Sousa Stodulski
Taillon Miguel Gonçalves
Ádelle Camarão Monteiro

Equipe do estudoTambakiss
AlvoMr.Day, Assine Aqui, Gov.Doc, Simeron, Perícia Médica
Origem

Melhoria

ObjetivoLevantar a possibilidade de trazer abordagens tecnológicas a fim de otimizar os sistemas novos e já existentes
Documentação correlata (opcional)
Observações


1. Introdução

Microsserviços são, em resumo, uma abordagem no desenvolvimento de software que consiste em pequenos serviços independentes que se comunicam usando APIs. O uso de microsserviços facilita (e até agiliza) o desenvolvimento de software ao trazer os seguintes benefícios: agilidade (por ter contexto pequeno e mais independência), escalabilidade flexível (permite que se um dos serviços possuir um pico de demanda, não impacte a aplicação como um todo), fácil implantação (por permitir integração e entrega contínua) e muito mais.

2. Desenvolvimento

 2.1 O que é microsserviços?

É uma abordagem arquitetônica que desenha uma grande aplicação em pequenos sistemas distribuídos. Isso surge para solucionar alguns problemas que advém da abordagem do sistema monolítico (dificuldade em entrega contínua, grandes times trabalhando em grandes aplicações, dificuldade na execução ou depuração do sistema, aumento de complexidade e dependência nas linhas de código e muito mais). A ideia central de microsserviços é dividir um grande sistema em alguns serviços soltos que podem ser atualizados de forma independente.

 2.2 Quando utilizar microsserviços?

Em grandes aplicações cujo a complexidade e o escopo são grandes ou a quantidade de usuários impactados (ao ter pico de acessos ou atualização de sistema) é grande. Quando há a necessidade de subir novas atualizações sem impactar o sistema por completo. Quando precisar isolar ou processar dados de forma separada. Quando for necessário permitir um alto grau de autonomia no time (por ter menos acoplamento e dependência).

 2.3 Vantagens

Conforme analisada, as vantagens seriam as seguintes:

  • Melhor escalabilidade - ótimo para continuas atualizações ou pico de acessos
  • Por serem independentes, os microsserviços podem usar tecnologias diferentes. Pode se identificar a necessidade ou curiosidade de implementar/usar diferentes tecnologias em um microsserviço em específico e isso não impactará na compatibilidade com os outros microsserviços
  • Mais simples de subir atualizações e correções devido a menor impacto ao fazer o deploy (por afetar uma porção pequena sistema)
  • Reusabilidade de código através diferentes áreas de negócios 
  • Novas aplicações ou funcionalidades podem entrar no mercado em um ritmo mais rápido devido a facilidade de reutilizar código, menor complexidade (devido menor escopo) e independência dos microsserviços

 2.4 Desvantagens

Conforme analisada, as desvantagens seriam as seguintes:

  • Custos iniciais são maiorias (do que sistemas monolíticos) devido servidores diferentes, curva de aprendizado dos desenvolvedores e outros
  • Controle da interface é crucial pois mudanças na API (do microsserviço) podem impactar os seus consumidores (outros microsserviços)
  • Um tipo de complexidade diferente como ao depurar entre os microsserviços podem dificultar a achar a fonte do problema
  • Maior dificuldade com testes de integração

 2.4 Análise dos sistemas do Time Tambakiss

SistemaPossui pico de acessos?Possui grande escopo e/ou complexidade?Há necessidade de utilizar diferentes tecnologias em partes diferentes do sistema?Há a necessidade de utilizar microsserviços?
Mr.DayNãoNãoNãoNão
Assine AquiNãoNãoNãoNão
Gov.DocNãoNãoNãoNão
SimeronNãoNão mas possui muita regra de negócio NãoNão
Perícia MédicaNãoNão mas possui muita regra de negócioNãoNão
3.Conclusão

Concluímos que no momento não há a necessidade de utilização dos microsserviços, devido aos sistemas não serem tão complexos nem possuírem a alta necessidade de escalabilidade. É possível a utilização (após estruturação de um ambiente passível de microsserviços e disponível para o mesmo dentro da SETIC) mas não há necessidade no momento. A implementação nas circunstâncias atuais acarretaria em esforço, complexidade e custos possivelmente desnecessários.