O .NET facilita a construção de aplicações ao abstrair diversas complexidades do desenvolvedor. Conhecer seu funcionamento interno não é pré-requisito para iniciar a codificar.
Entretanto, existem objetivos de negócio que demandam maior eficiência do sistema produzido, e conhecer como as coisas funcionam debaixo do capô é diferencial na entrega de aplicações apropriadas para estes cenários. Com o conhecimento “em mãos”, as capacidades vão desde o desenvolvimento de códigos mais performáticos, até a resolução de problemas de forma mais rápida.
Realização de troubleshooting mais rápido
Faz parte do ciclo de vida de um software apresentar comportamentos inesperados. Por exemplo, uma aplicação que leva muito tempo para realizar uma operação e retorna timeout; ou uma aplicação que sofre com alto consumo de memória. Ambos os casos podem ser resolvidos com pouco conhecimento das internas do .NET, porém, com um esforço maior, e possivelmente, não aplicando a solução mais adequada.
Realizar um troubleshooting consiste nas etapas de investigação, análise e resolução do problema, e é em muitos casos uma tarefa complexa, podendo levar dias, e eventualmente até semanas para ser concluída. Investigar nos locais errados do sistema aumenta o tempo de resolução do problema. Entender o comportamento interno do .NET ajuda na investigação, trazendo “luz” aos componentes que realmente estão envolvidos com o problema.
Otimização de desempenho e escala
Aplicações que apresentam lentidão ao executar uma tarefa prejudicam a experiência do usuário, causando insatisfação na utilização. Para resolver estes problemas, percebemos que, frequentemente, os times decidem por soluções que envolvem alterações na arquitetura ou na infraestrutura.
É comum pensar que para suportar mais carga de processamento, ou mais usuários simultâneos, a solução seja balanceamento de carga, processamento distribuído e etc. Entretanto, escolher adequadamente os recursos que o .NET dispõe e entender os impactos de cada escolha, resulta em aplicações capazes de realizar operações em menos tempo e suportar maior escala, possibilitando que alterações arquiteturais aconteçam somente no último momento responsável.
Otimização de consumo de recursos de infra
Deve ser objetivo dos times de desenvolvimento construir aplicações que atendam aos objetivos de negócio, respeitem as restrições e atinjam os atributos de qualidade com o menor custo e risco. Escolhas “inocentes”de recursos do .NET podem levar aplicações à demandarem uma infraestrutura maior do que o necessário, aumentando o custo.
Entender o comportamento interno do .NET possibilita o desenvolvimento de código com estruturas de dados mais adequadas e recursos mais otimizados, reduzindo o hardware necessário.
// TODO
A curva de aprendizagem do funcionamento interno do .NET é alta. O assunto é extenso e complexo, o que pode dificultar o início dos estudos. Porém, obter esse conhecimento auxilia na construção e manutenção de aplicações, facilitando a identificação e resolução de problemas, assim como o suporte a sistemas que demandam alto desempenho e/ou escalabilidade. A leitura da documentação da Microsoft, livros como Pro .Net Memory Management, Writing High-Performance .NET Code, e a capacitação do time através de treinamentos, se tornam atividades essenciais para o desenvolvimento de projetos eficientes.