Visual Studio 2013

Desenvolvimento de última geração com o Application Insights

Charles Sterling

O ritmo de entrega do software aumentou drasticamente nos últimos anos. Os desenvolvedores evoluíram de uma cadência de lançamento contínuo em cascata para uma cadência de lançamento contínuo ágil atualmente. Ao fazer isso, a necessidade se intensificou para um melhor, mais rápido e direto feedback. Responsabilidade é o nome do jogo. Os tomadores de decisão precisam de ferramentas que forneçam análises integradas e tornam os dados imediatamente disponíveis em tempo para toda a equipe.

O novo Application Insights da Microsoft, anunciado no lançamento do Visual Studio 2013, é um conjunto de serviços projetados em torno das questões-chave que as equipes de entrega de alta performance precisam: Nosso aplicativo está disponível? Está funcionando? Estamos fornecendo os recursos que os nossos usuários querem?

O Application Insights não se limita às operações. Para eliminar entregas e acelerar o fluxo de informações através da equipe, ele se integra com os desenvolvedores de ferramentas e operações já utilizadas - Visual Studio e Visual Studio Online. Dessa forma, a obtenção das informações que todos os membros da equipe necessitam torna- se mais fácil.

O Application Insights foi projetado para funcionar com serviços construídos no Microsoft .NET Framework, Java, serviços do Windows Azure, sites, aplicativos da Windows Store e aplicativos do Windows Phone 8. Com completo monitoramento de ponta a ponta, você recebe uma imagem real de 360 ​​graus de seu aplicativo, e não apenas pequenos pedaços de dados isolados.

Introdução ao Application Insights

A introdução ao Application Insights é simples. Para adicionar a telemetria do Application Insights à Web, aplicativos do Windows Phone ou da Windows Store, baixe as ferramentas de Insights para a extensão do Visual Studio, o qual você encontrará na Galeria do Visual Studio (aka.ms/aivsix). As versões futuras do Visual Studio não exigirão esse passo extra.

Para novos projetos no Visual Studio 2013, selecione Adicionar o Application Insights ao Projeto, quando da criação de um novo Projeto (ver Figura 1).

Add Application Insights to New Visual Studio 2013 Projects
Figura 1 Adicionar o Application Insights aos projetos do novo Visual Studio 2013

Para usar o Application Insights com os aplicativos existentes, clique com o botão direito no projeto e escolha Adicionar Telemetria do Application Insights ao Projeto (ver Figura 2).

Right-Click to Add Application Insights to an Existing Project
Figura 2 Botão direito para adicionar o Application Insights a um projeto existente

Após adicionar o Application Insights, seu projeto terá três novos nós com atalhos para Monitoramento de Disponibilidade, Monitoramento de Desempenho e Dados de Análise de Uso no Visual Studio Online (ver Figura 3).

New Nodes Appear in the Enabled Project
Figura 3 Novos nós aparecem no projeto ativado

Implementar Monitoramento de Uso

Depois de adicionar o Application Insights a um projeto novo ou existente, o monitoramento de uso em sua Web e aplicativos da Windows Store é ativado automaticamente. Para aplicativos de Web antigos e que não sejam do Visual Studio, você pode adicionar essa mesma funcionalidade através da inserção de um bloco de JavaScript em seu aplicativo. Você pode obter este bloco JavaScript clicando em Adicionar Aplicativo (ver Figura 4) ou indo ao Painel de Controle e selecionando Obter chaves de configuração e downloads.

Select Add Application to Add JavaScript Block to Older Apps
Figura 4 Selecione Adicionar Aplicativo para adicionar um bloco de JavaScript para aplicativos antigos

Implementar Monitoramento de Desempenho

Apesar do nome, o Monitoramento de Desempenho lhe fornece uma tonelada de informações, além de apenas os dados de desempenho. Ele lhe notificará sobre exceções, informações de pilhas de chamadas, informações de dependência, alocação de objeto e até mesmo informações sobre a infraestrutura subjacente. O Agente de Monitoramento da Microsoft (MMA) também coleta automaticamente os logs do IntelliTrace para exceções e chamadas lentas no seu código. Na maioria dos casos, você pode ativar o monitoramento de desempenho, basta instalar o MMA, o qual você encontrará em aka.ms/aimma.

Ao instalar o MMA, por padrão, ele fará o monitoramento de todos os aplicativos Web em sua máquina. Isto é, provavelmente, bom para uma caixa de desenvolvimento, mas pode não ser o ideal para servidores de produção com muitas aplicações Web. O MMA não deve causar mais do que uma degradação de desempenho de 5 por cento ao monitorar a sua aplicação.

Para habilitar o MMA nas aplicações que você adicionar mais tarde, você pode, facilmente, ativar manualmente o monitoramento através de um comando do Windows PowerShell:

Start-WebApplicationMonitoring -name "www.microsoft.com/games" -mode Monitor -outputchannel cloud

Nas futuras versões do MMA e do Visual Studio, esta etapa não será necessária.

Você também pode ativar o monitoramento de desempenho em aplicativos do Java e do Windows Azure. A maneira mais simples de começar é clicando em Adicionar Aplicativo no portal do Application Insights, como mencionei anteriormente para a implementação do Monitoramento de Uso.

Implementar Monitoramento de Disponibilidade

O Monitoramento de Disponibilidade funciona para qualquer aplicativo Web, independentemente da plataforma em que ele está funcionando. Ele só deve ser acessível através da Internet. Você pode testar a disponibilidade e o desempenho do seu aplicativo Web em todo os lugares mundo. Este módulo é também o mais fácil de trabalhar.

Ao selecionar o menu Disponibilidade no Application Insights, você será solicitado a fornecer a URL para o aplicativo Web. Isto criará um monitor sintético simples baseado em URL com um único local de monitoramento.

Se você precisa monitorar transações mais sofisticadas, provavelmente, será melhor usar um de teste de desempenho da Web codificado do Visual Studio. O monitor sintético baseia-se na mesma funcionalidade de gravação utilizada para aplicativos Web de teste de carga. Isso permite que você teste um conjunto complexo de ações. Para criar um monitor sintético de uma única URL ou de várias etapas, clique no botão verde Adicionar novo ícone do monitor sintético e configure os ajustes desejados (ver Figura 5).

Configure the Settings for a New Synthetic Monitor
Figura 5 Configurar as configurações para um novo monitor sintético

Coloque o Application Insights para funcionar

Durante o ano passado, cerca de 100 equipes internas da Microsoft e especialistas do setor externo experimentaram as primeiras versões do Application Insights e forneceram feedback como parte de um Programa de Adoção Técnica formal. Algumas das coisas que eles descobriram foram surpreendentes para a equipe de desenvolvimento, especialmente o forte interesse e engajamento por parte de proprietários de produtos e membros de equipes não técnicas.

Os usuários pioneiros concordaram que o principal valor do Application Insights é a capacidade de acelerar o ciclo de desenvolvimento, trazendo todas as informações analíticas em um único local no Visual Studio Online.

Meça uma campanha Web Um dos primeiros clientes externos a dar uma olhada no Application Insights foi a Wintellect - uma empresa de treinamento e consultoria. Eles queriam entender o impacto das descrições de curso para o seu novo produto de treinamento sob demanda, o WintellectNOW.

Usando o relatório de Visualizações de Página no Application Insights, os desenvolvedores da Wintellect foram capazes de adicionar uma função de JavaScript ao botão Cadastre-se Agora, semelhante a esta:

function trackCourse() { window.__da.trackEvent("Course", window.location.hostname + window.location.pathname, {"CourseID": "Test401"}, {"RatingValue": 400}); }

Isto lhes permite medir e visualizar quais descrições de curso foram mais eficazes na condução de registros reais. Para mais informações sobre a implementação de eventos personalizados no Application Insights, consulte aka.ms/aijs.

Meça o Tráfico Global da Web A Wintellect foi convocada para expor na TechEd 2013 Europe, em Madrid, Espanha. A equipe de negócios queria uma maneira fácil de medir se a presença da empresa aumentaria a consciência de suas ofertas no mercado europeu.

A empresa configurou relatórios de uso usando o Application Insights e comparou a semana anterior à TechEd com a semana posterior. O tráfego na Europa aumentou 7 por cento e duplicou na Espanha. A Wintellect não precisava de nenhum esforço especial por parte dos desenvolvedores para medir esses resultados, por isso, suas equipes técnicas foram capazes de manter o foco nos resultados.

Busca, correção e lançamento simplificados

O Application Insights está operando na Microsoft também. Os engenheiros de serviço responsáveis ​​pelo principal site e home page da Microsoft gerenciam mais de 400 aplicativos diariamente. Sua maior prioridade é reduzir o tempo de descoberta de um problema para a obtenção de uma correção no lugar. Através da criação de painéis e alertas com o Application Insights, eles recebem notificações em tempo real de testes de disponibilidade falhos, eventos de desempenho ou índice de desempenho degradante. Isso ajuda os engenheiros a resolver problemas antes que os clientes percebam que algo está errado.

Uma equipe configura um monitor de disponibilidade com um tempo de execução máximo permitido, com um alerta para indicar a qualquer momento que o limite foi ultrapassado. Os engenheiros podem, então, determinar a causa da falha diretamente da visualização da Web, ou fazer o download para o Visual Studio e vê-la como um Resultado de Teste da Web. O relatório dos Monitores Sintéticos indicam que os testes só começaram a falhar depois de uma implantação. Em seguida, ele continuou funcionando com êxito após outra implantação. Cerca de quatro horas depois, 11 alterações de configuração foram feitas. Eles foram capazes de vincular o problema de disponibilidade diretamente ao código real e alterações de configuração. Isso ajudou a diagnosticar a causa do evento imediatamente.

Com o Application Insights, você pode otimizar seus aplicativos antes mesmo de gerar um alerta. No painel, há Alertas Ativos, Eventos de Exceção, Eventos de Desempenho, Eventos de memória e gráficos de desempenho e confiabilidade. Todas essas métricas fornecem informações de fácil compreensão para uma equipe de engenharia, procurando melhorar seus aplicativos.

A seleção de quaisquer destes quadrados o levará aos dados mais suscetíveis de conduzir uma ação. Por exemplo, ao clicar no gráfico de Desempenho no Painel do Application Insights (Figura 6), você será levado à página de Desempenho (Figura 7). Neste exemplo, você pode ver que há uma forte correlação entre as dependências, o serviço Web e os tempos de resposta.

The Application Insights Dashboard
Figura 6 O Painel do Application Insights

The Application Insights Performance Page
Figura 7 A página de desempenho do Application Insights

Clique nos quadrados de Eventos de Desempenho, Exceção ou Memória no Painel para acessar a página de Eventos. Aqui, você pode filtrar, selecionar, abrir a sessão de diagnósticos de memória, iniciar uma sessão de depuração do IntelliTrace ou visualizar o conjunto de alterações que causou o evento no Visual Studio.

Conclusão

Estes são apenas alguns exemplos de como as equipes de desenvolvimento estão usando o Application Insights para trabalhar mais de perto com as suas equipes de operações a fim de entregar melhores softwares mais rapidamente. Você pode acessar o Application Insights através do Visual Studio Online (visualstudio.com).

Em um artigo futuro, cobrirei a integração do teste de carga baseado em nuvem com o Application Insights. Para saber mais sobre a criação de testes da Web, acesse bit.ly/1im10YI. Para mais informações sobre o Monitoramento de Disponibilidade com o Application Insights, acesse bit.ly/1gxgLYk.

Com a facilidade de adicionar monitoramento ao seu código, a integração estreita com o Visual Studio Online, e a economia de tempo, você definitivamente vai querer verificar estes cenários e perceber o que você pode realizar com o Application Insights.

Charles Sterling está na Microsoft há 20 anos. Antes da Microsoft, ele era biólogo marinho e trabalhava para National Marine Fisheries dos Estados Unidos fazendo pesquisas sobre mamíferos marinhos no Mar de Bering. Depois de um período de seis anos na Austrália, como gerente de produto da Microsoft, Sterling está de volta a Redmond, como gerente de programa sênior na equipe de desenvolvimento Visual Studio. Entre em contato com ele pelo email chass@microsoft.com.

Agradecemos aos seguintes especialistas técnicos pela revisão deste artigo:
John Robbins é cofundador da Wintellect, onde ele lidera os serviços de consultoria e depuração dos negócios. Ele também viaja muito pelo mundo ensinando seus cursos de depuração de .NET e de Windows para que os desenvolvedores de todos os lugares possam aprender as técnicas que ele usa para resolver os piores problemas de software conhecidos pelo homem.
Cheryl Hammond é consultor de ALM e lidera a Equipe de Práticas na Northwest Cadence, concentrando-se nas maneiras em que as práticas de agilidade, arquitetura e teste melhoram a vida dos desenvolvedores, fortalecem as equipes e fornecem melhores softwares.