| Data de elaboração | 17/07/2024 |
|---|---|
| Responsável pelo estudo | Vinicius da Rosa Pereira |
| Equipe do estudo | Liderança Técnica |
| Alvo | Sistemas relacionado ao E-Estado |
| Origem | Implementação: Estudo que verifica a viabilidade técnica para continuação dos projetos E-estado, conforme a User Story: “Fazer estudo técnico para consolidar proposta de nova arquitetura de sistema”. |
| Objetivo | Verificar a viabilidade técnica para continuação dos projetos ligado ao E-estado. |
Essa documentação se baseia no desafio de listar os principais requisitos para uma boa integração/estabilidade no ambiente do projeto e-estado.
Para começar vale listar as tecnologias utilizadas nos principais projetos:
PHP (framework codeigniter)
RabbitMQ (tecnologia de mensageria)
NodeJS
O projeto e-estado web é feito em PHP com framework codeigniter, esse projeto é a “ponta” do projeto, onde é possível visualizar/manipular todos os dados(cautela, imóveis, rh).
Problemáticas atuais são: gerenciamento de log, falta de padrão, estabilidade no banco de dados, código depreciado dentro do projeto.
Solução: ter parte do time para refatorar alguns módulos, por exemplo: em duas sprint mudar a parte de recursos humanos, tirando as querys das models, passando para as repositories, regra de negócios sendo trazidas para service.
Com uma boa arquitetura para migrar para um framework mais robusto, como por exemplo o laravel. Também é possível refatorar e implementar em uma api
O projeto de microservice utiliza principalmente o NodeJs, ele serve o projeto web, como também outros projetos como por exemplo api de servidores serve o projeto portal do servidor.
Problemáticas atuais são:
Implementação de log;
Falta de padrão no projeto;
Código depreciado dentro do projeto;
Necessidade de um APM para monitoramento de rotas;
Versionamento de APIS;
Criação de circuit breaker;
Banco de dados centralizado.
Possui um banco de dados de leitura, assim pode-se minimizar a carga do banco de dados principal.
Imagem retirada do site aws
Porém não basta simplesmente ter um banco de dados réplica, necessita alterar a maior parte da arquitetura do projeto, para configurar quando o banco réplica será utilizado.
Para diminuir o tráfego do banco vale usar uma arquitetura de cache, onde possibilita utilizar cache para consultas rotineiramente usadas, que não são mutáveis a todo o tempo.
O armazenamento em cache ajuda a aliviar o estresse no banco de dados interceptando as solicitações que estão sendo roteadas para ele, permitindo que o mesmo libere seus recursos para trabalhar com outras consultas solicitando dados não armazenados em cache, para conexões abertas ou operações de gravação.
Para uma maior manutenibilidade do projeto necessitamos criar um projeto base, que servirá de exemplos para os novos e os existentes,
os padrões de projeto contribuem para a criação de software de alta qualidade, facilitando o desenvolvimento, manutenção e comunicação entre os envolvidos no projeto.
Para os projetos existentes, vale refatorar e deixar no padrão abaixo:
Os logs são registros das ações realizadas nos sistemas. Eles podem registrar falhas, exceções, ajudar a depurar erros, identificar violações de segurança e fornecer informações úteis para os desenvolvedores analisarem.
O APM (Application Performance Monitoring) do Elasticsearch é uma solução para monitorar a performance de aplicações, que faz parte do Elastic Stack (anteriormente conhecido como ELK Stack, acrônimo para Elasticsearch, Logstash e Kibana). O Elastic APM ajuda desenvolvedores, engenheiros de operações e especialistas em qualidade a identificar problemas de desempenho em suas aplicações de forma rápida e eficiente.
O Elastic APM fornece uma visão detalhada do desempenho de suas aplicações, capturando informações como tempo de resposta de solicitações, taxas de erro, e uso de recursos, entre outras métricas importantes.
As principais características do Elastic APM incluem:
Rastreamento Distribuído: permite acompanhar as solicitações à medida que passam por vários serviços e componentes da aplicação, ajudando a identificar a origem de atrasos ou falhas.
Monitoramento de Performance de Transações: oferece insights sobre a performance de transações específicas, como chamadas a APIs ou execuções de consultas a bancos de dados.
Análise de Erros: captura exceções e erros de log, facilitando a identificação e correção de problemas.
Visualização de Dados: integra-se com o Kibana para fornecer visualizações ricas e interativas dos dados de desempenho, permitindo uma análise detalhada e a criação de dashboards personalizados.
Atualmente todos esse projetos são compartilhados para 3 desenvolvedores, para garantir uma melhor manutenção e execução do projeto, é válido pensar na migração de alguns microservices para o C#, pois é a maior base de “mão de obra” da instituição.
Inicialmente começamos com os projetos menos como por exemplo API de cautela, anexos, almoxarifado, recursos humanos.
Pode-se ter um integrante “chefe” que representa o time esquadrão que cuidaria da parte de migração juntamente com outro time de desenvolvimento para a migração da tecnologia, essa pessoa seria responsável por garantir a regra de negócio, garantir que o novo código seja testável, com devido padrão imposto pelo time de liderança.