Formando equipes de alto desempenho, parte 1: Início e fases de evolução
Nesta primeira parte de uma série sobre equipes de alto desempenho e gerenciamento Agile, veja uma introdução geral e uma apresentação dos estágios de formação das equipes.
Disseminando conhecimento e inovação em desenvolvimento de software corporativo
O conteúdo foi adicionado aos favoritos!
Houve um erro ao adicionar aos favoritos! Por favor, tente novamente.
Postado por Abel Avram , traduzido por Samuel Carrijo em 25 Mai 2009
Wille Faler propõe 8 boas práticas para melhorar desempenho e escalabilidade como diminuir a carga no banco de dados, usar cache, minimizar tráfego na rede, entre outros.
1. Diminua a carga do banco de dados – fique longe do banco de dados o máximo que puder. Isso significa não abrir conexões ou iniciar transações a menos que seja realmente necessário.
2. A diferença que o uso de cache faz – cache diminui significativamente a carga em banco de dados, especialmente em aplicações que somente lêem desse banco. Cache em memória é melhor que cache em disco, que é melhor que um banco de dados relacional ou remoto.
3. Use cache em objetos de baixa granularidade – usar cache em objetos pouco granulares “economiza ciclos de CPU e tempo necessário para consultar n zonas de cache, ao invés de uma somente. Além disso, retornando o grafo do objeto completo economiza tempo ao montar o grafo do objeto.
4. Não armazene estado temporário em memória permanente – evite armazenar dados temporários como dados de sessão para um login em um banco de dados.
O “monstro do estado temporário” é uma besta perigosa. Como regra geral, somente dados de negócio reais, necessários, críticos e prontos para processamento devem ser armazenados de forma permanente (banco de dados, disco); nada mais.
5. Localização, Localização – deixe as coisas perto de onde elas devem ser fornecidas. Em vez de utilizar um balanceador de carga, um servidor web, um servidor de aplicação e um banco de dados, lembre-se que é melhor utilizar um balanceador de carga e um servidor web; e obter parte do conteúdo de uma Rede de Fornecimento de Conteúdo (CDN).
6. Restrinja acesso simultâneo a recursos – se mais de uma requisição acessa o mesmo recurso e executa o mesmo cálculo, é melhor que somente a primeira requisição faça o cálculo até o fim, e as demais requisições somente utilizem o resultado final. Permitir que todas as threads acessem o recurso somente tornará o processo mais lento.
7. Processamento assíncrono e em etapas
Algo que costuma fazer maravilhas para escalabilidade e desempenho é separar um processo de forma que seja assíncrono, dividido em etapas separadas por filas e executadas por um número limitado de threads em cada etapa.
8. Diminua a comunicação na rede – tente fazer com que sua aplicação se comunique o mínimo possível através da rede, pois é um processo muito mais lento do que comunicação em memória.
Steve M. Ciske, comentando sobre o post do Faler, é cauteloso em relação a reduzir a carga do banco de dados:
Eu tomaria cuidado ao diminuir a carga do banco de dados. Já vi pessoas no outro extremo que colocam tudo na camada de aplicação.
Pawel Stradomski considera cache remoto em memória mais rápido do que cache local em disco e Faler concorda com ele:
O uso de cache em um host remoto (via rede) pode ser mais rápido que o uso de cache em um disco local. A leitura dados sequenciais em um disco é por volta de três vezes mais lenta que a leitura na memória de hosts remotos; isso desconsiderando o tempo de busca.
Fonte relacionada: Simon Brown escreveu um artigo sobre princípios de escalabilidade.
Nesta primeira parte de uma série sobre equipes de alto desempenho e gerenciamento Agile, veja uma introdução geral e uma apresentação dos estágios de formação das equipes.
O Business Model Canvas é uma ferramenta estratégica para a construção visual de novos produtos ou serviços. Conheça cada um dos seus elementos e como preencher o Canvas, passo a passo.
Nessa segunda e última parte de uma série sobre o Google Apps Script, conheça como funciona o envio de emails, a conversão de documentos e como criar menus e triggers.
Este artigo avalia seis dos mais importantes fornecedores de serviços de cloud computing PaaS para desenvolvedores Java, analisando critérios como desempenho, escalabilidade e tecnologias suportadas.
O Canvas de Modelo de Negócios é um novo modo de comunicar e suportar a validação iterativa, incremental e empírica de modelos de negócio de startups e novos produtos substituindo o plano de negócios.
Nesta segunda e última parte de uma entrevista exclusiva para InfoQ Brasil, Rebecca Parsons, CTO da ThoughtWorks, fala sobre o Agile Distribuído e técnicas para definição de arquiteturas.
Nessa primeira parte de uma entrevista com a CTO da ThoughtWorks, veja recomendações sobre formas de construir e arquitetar sistemas para obter o máximo de flexibilidade e responsividade a mudanças.
Os gerentes de projetos podem assumir o papel crítico de liderar a introdução do Agile. Vejas conceitos, dicas e técnicas para apoiar esse processo de mudanças.
Nenhum comentário
Acompanhar Discussão Responder