Documento técnico de negócios Introdução da produção nos testes de desempenho O valor do fornecimento contínuo de desempenho de aplicativos Desafios comuns em testes de desempenho Nos últimos 20 anos, os aplicativos de negócios evoluíram de sistemas de mainframe centralizados e monolíticos para sistemas complexos, distribuídos e compostos que operam em nuvens públicas e privadas. Em paralelo às mudanças na tecnologia subjacente, a abordagem que adotamos para projetar, construir e entregar aplicativos de negócios também mudou. Evoluímos a partir de uma rigorosa e rígida abordagem em cascata, para uma abordagem de desenvolvimento ágil, leve, sem redundâncias e responsiva. Os tempos dos ciclos de desenvolvimento são agora medidos em semanas e até dias, em oposição a anos. Alterações tanto na tecnologia quanto na metodologia de desenvolvimento aumentaram a pressão sobre os engenheiros que planejam e executam os testes de desempenho. Além da avaliação de novos aplicativos, os engenheiros de desempenho continuam a tratar de problemas de desempenho de aplicativos legados. No centro dos testes de desempenho, situa-se a arte de simular a atividade e o comportamento reais do usuário e, em seguida, avaliar como o sistema responde. No entanto, a exatidão na modelagem do comportamento do usuário real pode, muitas vezes, ser incerta. Com sistemas totalmente novos, o engenheiro de desempenho é forçado a fornecer uma hipótese fundamentada para o comportamento do usuário com base em casos de uso, requisitos e projeto. E mesmo com os sistemas existentes, muitas vezes é igualmente desafiador modelar de maneira eficaz o comportamento e a interação do usuário com o sistema. Outro desafio comum da engenharia de desempenho é utilizar de modo confiável dados de uma infraestrutura limitada, que não é de produção, para assim, prever com precisão como o aplicativo irá funcionar em um ambiente de produção mais robusto. A produção é quase sempre muito diferente do teste. Engenheiros de desempenho fazem o seu melhor para extrapolar e tentar prever como o sistema irá funcionar, mas muitas vezes obtêm um sucesso limitado na previsão de desempenho. Por fim, a resposta final é muitas vezes fortemente dependente de arte e julgamento. Exploração das riquezas de dados de desempenho em produção É difícil imaginar que esses desafios permaneçam depois que um aplicativo encontra-se operativo em produção. Uma vez que um aplicativo tenha usuários reais e esteja gerando dados reais de desempenho, é de se supor que os desafios da engenharia de desempenho desaparecerão, mas este raramente é o caso. Muito frequentemente, o foco muda para outros projetos, impedindo as equipes de desenvolver dados de uso e ferramentas de previsão. 2 Problemas organizacionais ou de confiança, ou simplesmente a falta de iniciativa, impedem o compartillhamento de dados entre teste e produção. A cada dia os usuários acessam o sistema e desenvolvem padrões reais de fluxo de trabalho e transações, o que seria inestimável para futuros testes de desempenho, mas muitas vezes esses dados não são capturados. A produção também é rica em dados armazenados em aplicativos, servidores e logs de banco de dados, os quais ajudam a descrever como o sistema funciona e se comporta. O monitoramento da produção é a fonte de dados final, onde tanto a atividade do usuário quanto dados de desempenho são frequentemente medidos e ativamente gerenciados. Mesmo que o ambiente de produção seja uma fonte de insight incrível, os engenheiros de desempenho muitas vezes se esforçam para tirar proveito dos dados ao planejar e executar testes de desempenho. Os dados de produção podem ser difíceis de serem coletados, organizados e analisados. Estão também frequentemente distribuídos em diversas plataformas sob uma variedade de formatos, o que complica ainda mais o trabalho de obtenção de dados significativos. Uma vez coletados, a quantidade de dados torna a análise um obstáculo final. No final das contas, os dados de produção podem ser muito difíceis de serem obtidos e analisados quando os testes de desempenho se deparam com um prazo final que se aproxima. CIO Gerenciamento do desempenho de vários aplicativos ao longo de todo o ciclo de vida Equipe de desenvolvimento Equipe de produção P&D e QA Operações e linhas de negócios • Valida o desempenho • Testa os cenários corretos de utilização • Identifica todos os problemas antes de entrar em funcionamento • Gerencia mudanças de produto de forma previsível • Provê disponibilidade • Atende ou supera SLAs • Detecta mudanças em tempo real • Reduz a complexidade de gerenciamento Prática de desempenho em silos Falta de tempo e de recursos Barreiras para soluções manuais são abundantes É claro que engenheiros de desempenho sempre encontraram maneiras criativas e inovadoras para modelar cenários de teste e avaliar aplicativos. Com os novos aplicativos, eles se debruçam sobre requisitos, casos de uso e documentos de projeto para antecipar como o novo sistema será utilizado. Frequentemente, eles se envolvem com especialistas no assunto para entender melhor os fluxos de negócios e os modelos de utilização prováveis. Então, com essa visão, eles tentam projetar cenários de teste que representem a forma como acreditam que o novo sistema será realmente utilizado. No caso de um sistema já existente, o engenheiro de desempenho frequentemente tem acesso a usuários e dados reais. Agora, eles podem entrevistar e observar os usuários reais do sistema para saber como eles o utilizam. São também capazes de analisar os logs dos sistemas e os relatórios de monitoramento para aprender sobre o uso do aplicativo e padrões de carga. Se forem minuciosos, irão pesquisar também o desempenho do aplicativo sob a perspectiva do help-desk para entender os problemas comuns e outras questões. No final das contas, essa informação de utilização de produção, quando coletada, consolidada e analisada, ajuda o engenheiro de desempenho a projetar scripts e cenários de teste de desempenho mais realistas e confiáveis. No entanto, o custo e o esforço para coletar e analisar as informações de desempenho são frequentemente uma barreira em todos os aplicativos, à exceção dos mais críticos. A complexidade dos aplicativos modernos torna freqüentemente a coleta e análise manuais muito difíceis. Além disso, a divisão entre desenvolvimento e operações pode se tornar uma barreira para o fornecimento de aplicativos de forma eficiente. As duas equipes têm frequentemente prioridades e objetivos concorrentes, que podem tornar a colaboração e a coordenação um desafio. Muitas vezes, essa divisão é mais evidente quando os aplicativos entram em funcionamento dentro do prazo (cumprindo as metas da equipe de desenvolvimento) apenas para experimentar problemas de disponibilidade e de desempenho (impactando os objetivos da equipe de produção). 3 Monitores Monitores SLAs SLOs Teste de desemp. Produção Scripts/sessões Scripts Carga de transações Cenário O desempenho contínuo causa impacto. A abordagem de vincular informações de desempenho da produção a testes é o que chamamos de fornecimento contínuo de desempenho de aplicativos. O objetivo final de se ter uma abordagem contínua para desempenho é aumentar a eficiência e a eficácia das atividades de engenharia de desempenho, acelerando a entrega de aplicativos e reduzindo os riscos de incidentes e paralisações relacionados com desempenho. Devemos quebrar os silos entre desenvolvimento e operações e permitir que as duas equipes coordenem e colaborem. Para atingir os objetivos de uma abordagem contínua para fornecimento de desempenho, a equipe precisa estabelecer um método para compartilhar dados de desempenho de aplicativos entre produção e teste. Por exemplo: • Dados de uso — Como usuários reais utilizam o sistema? • Dados de uso — Quais são as transações mais comuns? • Dados de desempenho — Qual é a utilização de pico e quando? • Dados de desempenho — Qual é a resposta provável da produção na utilização de pico? • Dados de monitoramento — Como monitorar o aplicativo em produção? Como uma abordagem manual para preencher a lacuna entre produção e teste é demorada e frequentemente produz resultados imperfeitos, isso deve ser incorporado como um fluxo de trabalho automático nas soluções de testes. Engenheiros de desempenho devem ser capazes de eficientemente incorporar um insight de produção ao planejar e implementar testes de desempenho de aplicativos. A abordagem contínua para fornecimento de desempenho de aplicativos baseia-se numa série de passos, que em conjunto levam a testes de desempenho mais confiáveis e válidos. 4 De quais informações de produção os testadores podem tirar proveito? Há um grande número de informações que as equipes de testes podem obter das métricas de produção. • Quais processos de negócios devo testar? Quais scripts devo construir para executar testes? Muitas vezes, um desafio é determinar os processos de negócios a testar. Em teoria, se você é capaz de visualizar as sessões reais de usuários no ambiente de produção por meio de um produto, como o HP Real User Monitoring (RUM), você deve ser capaz de tirar proveito desse dado para construir scripts que reflitam os processos de negócios reais de usuários. Além disso, considerando que o desenvolvimento de scripts pode ser uma tarefa demorada, que muitas vezes consome a maior parte de todo o ciclo de teste, se a organização já tem uma solução para monitoramento sintético de transações, como o HP Business Process Monitoring (BPM), você deve ser capaz de tirar proveito dos scripts usados p ara monitoramento da produção em seus trabalhos de testes de desempenho. Uma combinação entre essas duas abordagens pode ajudar a acelerar os trabalhos de testes, assim melhorando a eficiência dos mesmos. • Qual combinação de transações devo testar? Estou testando as condições de utilização corretas? Um dos desafios durante os testes de desempenho é descobrir exatamente: o que você precisa para testar? Para quantos usuários você deve fazer o teste? Qual é a combinação de transações que devo testar? A fim de criar cenários de teste, se possível, você deve usar informações de produção para garantir que está testando os itens certos. Por exemplo, em hora de pico, há um total de 450 usuários no sistema, com 50% dos usuários executando ações de "navegação", 20% realizando transações de "busca" e 10% fazendo transações de "compra". Ou, em hora de pico de uso, você tem uma combinação de 10 buscas, 15 compras, etc. Esses dados geralmente estão disponíveis em produtos de monitoramento, como o HP RUM (Real User Monitoring), e em outros produtos como o Webtrends, ou mesmo em logs de servidores. A solução de teste deve ser capaz de obter esses dados de utilização em hora de pico dos aplicativos de monitoramento, a fim de criar cenários de testes precisos. Além disso, quando você dispõe das informações de utilização de produção e é capaz de construir testes baseados nelas, também deve ser capaz de comparar a utilização de produção e de testes para determinar a precisão de seus testes — quão próxima a combinação de transações de testes ficou da combinação de produção? O ajuste dos cenários de teste de desempenho pode ajudar a promover confiança nos resultados obtidos. Isso aprimora a precisão dos testes, tornando-os mais significativos e confiáveis. • Quais devem ser meus objetivos de nível de serviço (SLOs) para diversas transações? Se o aplicativo já existe em produção, a equipe de monitoramento da produção normalmente tem informações sobre que tempos de resposta esperar para determinadas transações, e estabelecem seus acordos de nível de serviço (SLAs) com base nisso. A equipe de testes deve ser capaz de tirar proveito dessas informações de SLA para facilmente configurar SLOs para testes de desempenho. Isso lhe fornece uma melhor medida do desempenho de suas transações em relação a um benchmark de produção. • Quais métricas de sistema devo monitorar durante os testes? Novamente, as equipes de produção já dispõem de informações sobre quais sistemas e métricas elas monitoram. A equipe de testes deve ser capaz de tirar proveito dessas informações para facilmente configurar o monitoramento no ambiente de teste. Além de ajudar a acelerá-los. Abordagem da HP para desempenho contínuo de aplicativos com o HP Performance Center A HP incorporou os recursos de desempenho contínuo no Performance Center, versão 11.5. Com esta nova e estimulante versão do Performance Center, engenheiros de desempenho são capazes de incorporar insights de produção ao planejamento e implementação de testes de desempenho de aplicativos de forma eficiente. A abordagem contínua para fornecimento de desempenho baseia-se numa série de passos, que em conjunto levam a testes de desempenho mais confiáveis e válidos. 5 1. Importe dados de produção. Importe informações dos sistemas de produção. Isso inclui informações como tráfego de usuários e monitoramento de dados dos sistemas de produção, bem como scripts de processos de negócios. O HP Performance Center 11.5 suporta a importação de dados do HP Business Service Management (BSM) 9.2 e do Webtrends 9.0 ou posterior, e também fornece APIs para importar dados de outras fontes, como logs, etc. Sessões reais de usuários do HP Real User Monitoring (RUM) podem ser convertidas em scripts a serem utilizados em testes de desempenho. Da mesma forma, os scripts utilizados para monitoramento sintético de transações via HP Business Process Monitoring (BPM) também podem ser aproveitados em testes de desempenho. As métricas de monitoramento do HP SiteScope também podem ser importadas diretamente para o Performance Center. Todas as informações do HP BSM podem ser empacotadas e enviadas ao HP PC. Além disso, outros sistemas de monitoramento da produção podem fornecer dados diferentes, que podem influenciar quais informações ficam disponíveis para o usuário. 4.Execute o teste inicial de carga. Execute o teste de carga para reunir dados de tráfego e outras informações. 2.Crie um relatório de produção. Com base nas informações de produção, o usuário cria um relatório que exibe informações relevantes sobre as diferentes atividades que foram observadas na produção. Por exemplo, a lista de URLs ou o número de acessos por URL, etc. 7. Exporte dados para produção. O engenheiro de desempenho pode exportar vários itens que podem ajudar a acelerar a implementação de uma nova versão em produção. 3.Projete o teste de carga com base na produção. O relatório de produção agora é usado para criar um teste de carga. As transações são mapeadas entre ambientes de produção e de testes. Fatores de escala são definidos uma vez que muitas vezes o ambiente de testes pode ser significativamente menor em escala do que o ambiente de produção. O projeto do primeiro teste de carga provavelmente apresentará um comportamento muito diferente daquele de produção, e é apenas o ponto de partida para ajustes. 6 5.Compare a produção com o teste inicial de carga. Crie um relatório que compare as informações de produção com as do teste de carga. Isto lhe permite compreender quais atividades de produção não estão representadas no teste de carga na quantidade adequada, para que você possa dimensionar e ajustá-las melhor. 6.Ajuste o teste de carga. Com base no relatório de comparação, o usuário pode atualizar o teste de carga para tentar fazer com que o comportamento e os padrões de uso se assemelhem ao máximo à utilização de produção. Esse é um processo iterativo no qual o teste de carga é atualizado, executado e comparado novamente às informações de produção até que produção e testes sejam suficientemente semelhantes. Por meio do processo de fornecimento contínuo de desempenho de aplicativos, os engenheiros de desempenho são capazes de coletar e incorporar insights de produção ao projeto de seus cenários de teste de modo eficaz. Seus testes e resultados serão mais realistas e confiáveis, fornecendo-lhes maior segurança em reuniões para decidir sobre a continuidade de projetos, quando lhes é perguntado se o aplicativo está pronto ou não. Resumo Equipes de teste de desempenho e de monitoramento de produção de modo geral trabalham na direção de um objetivo comum: o desempenho de aplicativos. Por meio da colaboração mútua, a equipe de testes pode fornecer aplicativos que apresentarão menos problemas em produção. Da mesma forma, a equipe de produção pode ajudar a reduzir o tempo do ciclo de teste ao fornecer informações de produção valiosas para testes de desempenho. A colaboração assegura o verdadeiro fornecimento contínuo de desempenho de aplicativos. 7 Conecte-se hp.com/go/getconnected Veja as tendências de tecnologia, os alertas e as soluções HP. © Copyright 2012 Hewlett-Packard Development Company, L.P. As informações contidas neste documento estão sujeitas a alterações sem aviso. As únicas garantias para produtos e serviços HP são as estabelecidas nas declarações de garantia expressa que acompanham tais produtos e serviços. Nada aqui contido deve ser interpretado como constituindo uma garantia adicional. A HP não será responsável por omissões, erros técnicos ou erros editoriais contidos neste documento. 4AA4-1689PTL, criado em maio de 2012