Projeto para atender aos requisitos de capacidade
Fornecer a oferta suficiente para atender à demanda prevista. |
---|
É importante medir o desempenho de forma proativa. Medir o desempenho envolve medir linhas de base e ter uma compreensão preliminar de quais componentes do sistema provavelmente apresentarão desafios. Você pode conseguir isso sem realizar um teste de desempenho completo ou por meio de otimização granular. Ao tomar essas medidas iniciais, você estabelece uma base para o gerenciamento eficaz do desempenho no início do ciclo de vida do desenvolvimento.
Examine o sistema como um todo, em vez de se concentrar em componentes individuais. Evite fazer ajustes finos nessa fase. Fazer melhorias granulares no desempenho resulta em compensações em outras áreas. À medida que você avança no ciclo de vida e inicia o teste de aceitação do usuário ou avança para a produção, é possível identificar rapidamente quais áreas precisam de mais otimização.
Cenário de exemplo
A Contoso Manufacturing desenvolveu um aplicativo de microsserviços baseado em Java Spring usado internamente para monitorar e otimizar seus processos de fabricação. A equipe de carga de trabalho está em processo de migração do aplicativo, atualmente hospedado no local, para o Azure.
O aplicativo hospedado no Azure será criado no Aplicativos Spring do Azure, no Banco de Dados do Azure para MySQL e no Hub IoT do Azure. A Contoso tem uma conexão do ExpressRoute com o Azure.
Projetar a carga de trabalho de forma eficaz
Escolha os recursos certos em toda a pilha de tecnologia, o que permite que você atenda às metas de desempenho e se integre ao sistema. Considere os recursos que podem atender aos requisitos de escalabilidade e encontre o equilíbrio certo entre a alocação de recursos e os requisitos do sistema, para lidar com picos inesperados de forma eficiente.
Ao analisar as diferentes funcionalidades dos recursos, você garante que cada componente contribua para a funcionalidade e o desempenho gerais do sistema e pode identificar a funcionalidade de escala que pode ser aproveitada.
O dimensionamento correto dos recursos pode atender às alterações na demanda sem excesso de provisionamento, o que leva à economia de custos.
Desafio da Contoso
- A infraestrutura existente do ambiente de aplicativos no local é totalmente gerenciada pela Contoso, o que sobrecarrega bastante a equipe. Atualmente, eles provisionam e mantêm servidores, redes e armazenamento, além de configurar e atualizar o runtime do serviço Java Spring e todas as dependências.
- A equipe está ansiosa para migrar para um modelo de PaaS com o Aplicativos Spring do Azure, o que permitirá que a equipe concentre mais energia em garantir que seu aplicativo forneça o valor comercial pretendido e dedique menos tempo ao gerenciamento da infraestrutura.
- Esse aplicativo é essencial para os negócios da Contoso e tem requisitos rigorosos de desempenho, portanto, eles precisam ter certeza de que as escolhas tecnológicas feitas como parte da migração permitirão que eles atendam a esses requisitos.
Aplicando a abordagem e os resultados
- Depois de comparar os diferentes planos disponíveis, a equipe optou pelo plano Aplicativos Spring do Azure Standard, que fornece um serviço totalmente gerenciado para aplicativos Spring Boot, otimizado para o tráfego de produção. Com um máximo de 500 instâncias por aplicativo, o plano Standard é capaz de fornecer capacidade de computação suficiente para o uso máximo previsto.
- Além disso, o serviço pode ser configurado para ser escalonado conforme necessário e para reduzir horizontalmente os recursos de computação quando a capacidade extra não for necessária.
- A equipe analisou o plano Enterprise, que pode escalar verticalmente até 1.000 instâncias por aplicativo, mas decidiu que não precisará dessa capacidade no momento. Eles também estão confiantes de que não precisam do nível de suporte que o plano Enterprise oferece, nem dos demais recursos exclusivos.
Prever adequadamente as necessidades de capacidade
Faça o planejamento da capacidade com base na demanda e na capacidade dos recursos selecionados para enriquecer seu modelo de desempenho. Use técnicas de modelagem preditiva para prever alterações antecipadas na capacidade que podem ocorrer com alterações previsíveis e inesperadas. Definir metas de desempenho que possam ser traduzidas em requisitos técnicos.
Ao adotar essa abordagem, você pode usar os recursos de forma eficiente e atender à demanda sem provisionamento excessivo, evitando assim custos desnecessários. Além disso, ele ajudará você a entender como as escolhas de design afetam o desempenho.
Desafio da Contoso
- Para maximizar o uso eficiente do maquinário de produção, a linha de produção da Contoso opera em um agendamento cíclico, produzindo diferentes produtos em diferentes momentos do dia.
- Cada produto exige operações diferentes e, portanto, necessidades computacionais diferentes do aplicativo de controle. Durante a transição entre produtos, o aplicativo de controle precisa realizar uma variedade de tarefas que exigem maior capacidade de computação, como analisar dados da produção anterior e atualizar os algoritmos de controle para as máquinas.
Aplicando a abordagem e os resultados
- Para atender à maior demanda durante os períodos de transição, a equipe primeiro identifica os fluxos que lidam com a funcionalidade de transição, documentando seus requisitos de desempenho e estimando seus volumes de transação com base na versão local do aplicativo. Munida desses dados, a equipe passa a estimar a capacidade de computação necessária para os microsserviços que fazem parte dos fluxos de destino.
- O dimensionamento automático é configurado para esses componentes, garantindo que os recursos adicionais sejam provisionados antes do período de troca e liberados após a conclusão das tarefas.
- As configurações de dimensionamento automático serão ajustadas antes da implantação do aplicativo na produção, com base no desempenho real no novo ambiente.
Implantação de prova de conceito
Implementar uma prova de conceito (POC) que valide os requisitos técnicos e as escolhas de design.
Uma prova de conceito é fundamental para validar o projeto e determinar se o sistema pode atender às metas de desempenho e se essas metas são realistas. Com base na carga prevista, você pode validar se a capacidade prevista pode atender às metas de desempenho.
Além disso, verifique as implicações de custo das escolhas de design.
Desafio da Contoso
- Durante o desenvolvimento, a equipe estará realizando testes extensivos de carga e desempenho da funcionalidade do aplicativo utilizando simuladores de dispositivos e estará usando essas informações para otimizar a configuração do dimensionamento automático.
- Um aspecto que pode afetar a eficácia da configuração do dimensionamento automático é a possível latência da rede que se comunica do ambiente do Aplicativos Spring do Azure com os dispositivos de IOT no chão de fábrica, que está conectado ao Azure via ExpressRoute. A equipe especula que a latência será maior no Azure do que na versão local do aplicativo, e que a latência também poderá ser afetada por outros fatores, como hora do dia ou localização do dispositivo.
- Um aumento na latência provavelmente teria um impacto sobre o volume de transações que cada instância de microsserviço poderia processar.
Aplicando a abordagem e os resultados
- A equipe decidiu implantar uma POC no Azure para validar suas hipóteses e reunir métricas que possam ser utilizadas para otimizar a configuração. Eles criaram um Aplicativo Spring do Azure de teste para se comunicar com dispositivos de IOT espalhados pelo chão de fábrica. Os dispositivos de IoT são conectados à rede local e estão registrados no Hub IoT do Azure. O aplicativo de teste se conecta aleatoriamente aos dispositivos ao longo do dia, enviando um ping simples e registrando o tempo que leva para receber uma resposta.
- Os dados capturados durante essa POC, combinados com os resultados do teste de carga, permitirão que a equipe estime com mais precisão a capacidade de computação necessária, enquanto se prepara para o lançamento inicial da produção.
- A equipe também está procurando maneiras de aprimorar ainda mais os casos de teste usados para testes de carga a fim de simular tempos de resposta mais realistas com base nos aprendizados da POC.