Qualidade de código e a Infraestrutura
Fala pessoal!
Falamos recentemente de Observabilidade e FinOps por aqui, o que abre um precedente interessante para incluirmos nesse contexto o desenvolvimento de software.
Desenvolver software reúne uma série de etapas, desde o entendimento funcional até o deploy e disponibilização para os usuários finais. Dentre as fases, onde se insere a codificação, muitas questões são importantes e altamente relevantes quando se busca performance. Abro um parênteses aqui para enfatizar o quanto hoje o mercado exige uma boa velocidade de respostas das aplicações e como os milisegundos são de fato importantes para um bom resultado final.
Há alguns anos, os analistas de testes vêm evoluindo um trabalho fundamental e diretamente ligado à qualidade dos sistemas que são publicados a todo momento, seja em nuvem ou servidores em datacenters. Os testes, sejam automatizados ou não, produzem boa parte dos indicadores de qualidade do software, essenciais para evidenciar o funcionamento do sistema conforme ele foi solicitado e sua aderência ao escopo.
No entanto, além dos testes, é igualmente importante que o desenvolvimento se atente as boas práticas de codificação da linguagem utilizada, que pode ser avaliada por ferramentas como o Sonarqube, que possui as regras de boas práticas e funcionalidades para validar outros quesitos do código, como segurança e antever possíveis bugs em tempo de execução.
E, além dessa revisão de código, que idealmente deve ser automatizada, as ferramentas de APM ganham uma importância similar quando se quer obter a melhor performance de uma aplicação. Soluções como o NewRelic, Datadog, Elastic, dentre outras, passam a ser de extrema importância inclusive para se minimizar custos.
Muitas vezes a performance de um sistema é medida sobre a infraestrutura que foi disponibilizada para ele. Porém incrementar recursos pode não ser efetivo, já que as aplicações precisam estar bem construídas para serem realmente ágeis. Alocação excessiva de memória, por exemplo, considerando a escalabilidade do sistema, podem levar a um consumo exagerado de recursos, produzindo um alto custo de recursos, que em caso dos provedores de nuvem, se traduz em altas cifras.
Os desenvolvedores de sistemas, neste contexto e com apoio do ferramental adequado, ferramentas de APM, podem obter justamente a visão necessária para otimizar seus códigos e, assim, atingirem um nível de consumo de recursos computacionais dentro dos padrões esperados. Este resultado por sua vez, reduz os custos, de forma a seguir em alinhamento as estratégias das empresas, bem como adequar os custos do sistema, principalmente para aqueles em formato SaaS (Software as a Service), que são vendidos pelo consumo, afinal altos custos de infraestrutura, somam valores aos serviços finais.
Em tempo, as ferramentas de APM, seja qual for a escolhida pela empresa ou pelos desenvolvedores, possibilitam a rastreabilidade de processos das aplicações (threads) e deflagram em dashboards os consumos e anomalias. Isso por si só é algo relevante e agregador.
Bora codar com essa preocupação, galera!
Até!