Otimizando Custos e Energia by Design

Nossos processos de desenvolvimento foram incorporando com o tempo um conjunto de preocupações que não estão relacionadas diretamente com as regras de negócio.

Exemplos? Os dois mais comuns são os relativos aos aspectos de segurança e de desempenho.

A Microsoft, por exemplo, tem um site interessante sobre Security Development Lifecycle. Nos dias conectados de hoje é imprescindível incorporar a análise de ameaças no processo de desenvolvimento. Um bom texto sobre os passos a serem tomados podem ser encontrados em aqui .

image

Quanto ao desempenho, recomendo a leitura do capítulo de Performance Modeling do velho guia do grupo de Patterns&Practices chamado Improving .NET Application Performance and Scalability.

A novidade é que agora existem duas novas preocupações ou aspectos que ganham relevância: Energia e Economia.

A preocupação com o uso mínimo de energia já começa a mudar nossa análise de algoritmos para diminuir, por exemplo, o gasto de energia no acesso ao disco. A idéia é que talvez seja melhor ser um pouco mais lento, mas rodar menos o disco para acessar o dado.

Outro aspecto relevante é o de garantir que nossos programas respeitem os avisos do sistema operacional e deixem que o sistema durma nos momentos de inatividade.

Para quem ficar interessado neste tema sugiro a leitura do artigo Power-manageable hardware can help save energy, but what can software developers do to address the problem?

Quanto à economia, creio que esta é uma preocupação que virá com o uso mais intensivo do modelo de “paga pelo que usa” da Computação em Nuvem. Estamos acostumados a super dimensionar servidores e não nos preocuparmos na otimização dos recursos usados. Já pagamos pelo hardware. Por que economizar no seu uso?

Esta cultura deve mudar quando começarmos a receber a conta no final do mês. Começaremos a nos questionar se é melhor ou não pagar mais CPU para comprimir nossos dados. Temos aqui dois custos distintos: a computação que será de curto prazo durante a compressão; a informação armazenada que pode ou não ter um tempo de vida longo.

Outro exemplo: se faço uma aplicação SaaS para milhões de usuários, consigo minimizar o custo otimizando meus algoritmos. Menos computação, menos custos, mais clientes podem ser servidos pelos mesmos servidores. Esta preocupação é diferente da análise de desempenho que mencionei acima. A análise de desempenho tradicional visa achar otimizações que levem em conta o tempo de resposta satisfatório do sistema. As novas análises deverão levar em conta o custo satisfatório do sistema.

Não tenho nenhum artigo ou leitura sobre este tema para passar para vocês. É um mero “acho”. Mas se alguém achar algo, por favor, me avise. Ok?

Abraços

PS.: Dica – Já dá para assistir online as boas apresentações que forma apresentadas no TechEd americano em https://www.msteched.com/