Tiago Tartari
Otimização

Software, mesmo que legado, necessita ser mantido

publicado em 22 de março de 2022

Estratégia competitiva é sobre ser diferente. Isso significa deliberadamente escolher um conjunto diferente de atividades para fornecer uma mistura única de valor

Michael Porter
Resumo
O processo para modernização de um software deve fazer parte do plano estratégico da empresa, não do ponto de vista de "como fazer" mas do "porquê fazer" e quais são os objetivos de negócios a ser alcançados. Certamente, quando alguns indicadores começam a ser impactados por tecnologia, por exemplo, custo operacional, talvez seja a hora de pensar em modernização.

Conteúdo

Software, mesmo que legado, necessita ser mantido?

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.

Software, mesmo que legado, necessita ser mantido - conhecendo os clientes que interagem com o sistema

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.

Software, mesmo que legado, necessita ser mantido - Habilitar Keep Alive no IIS pode reduzir memória e cpu

Dessa forma, habilitei no IIS o keep alive na opção HTTP Response Headers \ Set Common Headers

No IIS você pode habilitar o Keep Alive.

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.

A performance de uma aplicação .NET pode ser melhorada significativamente ao entender o kernel cache

Juntamente com o entendimento sobre o kernel cache e o pipeline do IIS, indicamos como configurá-lo. O risco dessa ativação é extremamente baixo.

No IIS você pode habilitar o output caching como forma de garantir uma melhor performance em aplicações .NET
Ao habilitar as extensões no output cache, você garante que o pipeline do IIS não processo a requisição desses arquivos, reduzindo tempo de processamento como CPU

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.

<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.

Módulos do IIS desnecessários causam processamentos desnecessários. Elimine-os e ganhe performance imediata
<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

Gostou? Me ajude a impactar outras pessoas compartilhando esse post.
Tiago Tartari
Tiago Tartari

Ajudo executivos, times de negócios e especialistas técnicos a resolver problemas complexos utilizando a tecnologia como meio para potencializar resultados.