| Data de elaboração | 30/06/2023 |
| Responsável pelo estudo | Raissa de Sousa Stodulski, Taillon Miguel Gonçalves, Ádelle Camarão Monteiro |
| Equipe do estudo | Tambakiss |
| Alvo | Mr.Day, Assine Aqui, Gov.Doc, Simeron, Perícia Médica |
| Origem | Melhoria |
| Objetivo | Levantar a possibilidade de trazer abordagens tecnológicas a fim de otimizar os sistemas novos e já existentes |
| Documentação correlata (opcional) | |
| Observações |
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.
É 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.
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).
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
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
| Sistema | Possui 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.Day | Não | Não | Não | Não |
| Assine Aqui | Não | Não | Não | Não |
| Gov.Doc | Não | Não | Não | Não |
| Simeron | Não | Não, mas possui muita regra de negócio | Não | Não |
| Perícia Médica | Não | Não, mas possui muita regra de negócio | Não | Nã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.