Software legado necessita de manutenção? Gerando valor com pequenas mudanças.
Software, mesmo que legado, necessita ser mantido? Se frequentemente você se questiona ou é questionado se o software, dito como legado, necessita ser mantido quando iniciativas de modernização estejam ocorrendo? A resposta é sim.
Essa é uma dúvida que muitas equipes de tecnologia, negócios e executivos tem ao se tratar de modernização de software.
O software legado não deve ser ignorado a medida que a modernização dele já esteja em andamento
Mesmo sendo um software legado, ele não deve ser ignorado, pois, em grande parte das vezes vezes, ele ainda traz uma boa fatia da receita da sua empresa, além de que, qualquer iniciativa de modernização leva tempo e traz riscos à operação.
Sendo assim, empresas que possuem software legado precisam mantê-los funcionando, mesmo com iniciativas de modernização, com o máximo de performance e qualidade possíveis.
A modernização de software traz consigo oportunidades de mostrar resultados significativos e de grande valor para times de tecnologia utilizando quick wins.
Geralmente as quick wins são facilmente atingidas através de melhorias nas configurações de um servidor web, como por exemplo o IIS, melhorias em banco de dados e melhorias nos recursos computacionais.
Nesse caso, como exemplo, vou utilizar um fato real, onde iniciamos o processo de modernização de uma plataforma, mas que precisaríamos manter a plataforma atual.
Manter o software legado necessita conhecer quem são seus clientes
O ponto inicial é identificar quem são os utilizadores do sistema. Isso ajuda a entender como eles interagem com o software, aliás, aqui está um grande oportunidade de entender as principais dores. Outro ponto dessa descoberta é, sem dúvidas, diminuir o risco de interrupções à operação.
Ações que ajudam o software legado a ser mantido
Habilitar Keep Alive ajuda a reduzir o consumo de memória e CPU
Conexões HTTP por padrão são fechadas após cada solicitação. Ao habilitar o keep alive, permitimos que uma coneção TCP permaneça aberta para várias solicitações e respostas.
Manter uma conexão aberta entre o cliente e o servidor reduz o tempo para servir requisições HTTP e HTTPS. Os impactos frequentemente observados quando o keep alive não é utilizado é o consumo de memória e CPU.
Facilmente identificamos se o keep alive está desabilitado ao analisar o response header, a propriedade connection estará como close.
Dessa forma, habilitei no IIS o keep alive na opção HTTP Response Headers \ Set Common Headers
A performance de uma aplicação .NET pode ser melhorada significativamente ao entender o kernel cache
Tendo em vista que, diversos equívocos acontecem pela falta de entendimento a cerca do kernel cache do IIS. Dessa forma, melhoramos significativamente a performance as configurações estiverem corretas.
O HTTP.sys é a porta de entrada no IIS. Ele é o primeiro módulo que receberá as requisições. Quando configurado do jeito certo, ele evita que requisições entram para o pipeline do IIS e ASP.NET, dessa forma, garantindo uma melhor performance.
Juntamente com o entendimento sobre o kernel cache e o pipeline do IIS, indicamos como configurá-lo. O risco dessa ativação é extremamente baixo.
Ao informar as extensões dos arquivos estáticos no output cache, você garante que o pipeline do IIS não irá ser processado, reduzindo tempo de processamento como CPU.
Eliminar processamentos desnecessários é o caminho certo para um software, mesmo que legado ser mantido
Se há a possibilidade de não executar algo, não execute. Um problema muito comum ao utilizar o IIS é o não entendimento de alguns recursos que ele oferece. Dessa forma, perdemos a oportunidade de garantir performance.
Nesse sentido, desabilitar os módulos que não são utilizados irá fazer a diferença na performance do seu sistema legado, outra questão é como os arquivos estáticos podem consumir processamento desnecessário.
Crie um application pool para arquivos estáticos e elimine processamentos desnecessários
Mesmo que um application pool tenha alocação de recursos computacionais, nesse caso, os benefícios superam o custo gerado. Na prática, eliminamos processamentos desnecessários.
Outra vantagem é a capacidade de monitoramento isolado desse application pool caso tenha um APM instalado na aplicação.
Quando utilizado uma CDN, você pode desabilitar o ETag e deixar que a CDN faça esse controle. Como resultado, teremos menos processamento.
Em todas as pastas estáticas que ativou um application pool elimine o processamento de módulos desnecessários.
1 2 3 4 5 |
<configuration> <system.webServer> <modules runAllManagedModulesForAllRequests="false" /> </system.webServer> </configuration> |
Módulos do IIS desnecessários causam processamentos desnecessários. Elimine-os e ganhe performance imediata.
Ter módulos no pipeline do IIS/ASP.NET instalados não significa que você estará os utilizando. Em cenários, por exemplo, que não há necessidade de utilizar o FormsAuthentication ou Session, você deve removê-los.
Dessa forma, abaixo, podemos observar que entre a requisição e a resposta são vários passos que sua aplicação irá passar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<system.webServer> <modules> <add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" preCondition="managedHandler" /> <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" /> <remove name="Session" /> <remove name="WindowsAuthentication" /> <remove name="FormsAuthentication" /> <remove name="DefaultAuthentication" /> <remove name="RoleManager" /> <remove name="UrlAuthorization" /> <remove name="FileAuthorization" /> <remove name="AnonymousIdentification" /> <remove name="Profile" /> <remove name="UrlMappingsModule" /> <remove name="ScriptModule-4.0" /> </modules> </system.webServer> |
Manter um software legado, significa que com pequenas otimizações os ganhos são perceptíveis aos clientes
No IIS são diversas configurações a serem feitas para quick wins sem gerar riscos a operação.
Em conclusão, sempre que pensarmos em otimizações, além de identificar o cliente, diminuir riscos a operação deve ser nossa responsabilidade.
A estratégia de modernizar seu software passa primeiramente em manter o existente, além disso manter ou modernizar um software não pode ser baseado em suposições