O gerenciamento de capacidade como disciplina operacional existe desde o advento da computação baseada em servidores, que remonta à era do mainframe. As ferramentas comerciais para dar suporte a essa disciplina existem há mais de 30 anos, com cada geração sucessiva de plataformas de servidor criando seus próprios requisitos exclusivos.
À medida que o data center evoluiu do mainframe para a computação de médio porte e do servidor cliente para o virtualizado, a demanda por ferramentas de gerenciamento de capacidade evoluiu em consequência disso.
A introdução da virtualização introduziu o problema do Gerenciamento Inteligente de Cargas de Trabalho (IWM), onde o gerenciamento de capacidade não era mais a única solução para garantir o desempenho dos aplicativos.
Em particular, as soluções tradicionais de gerenciamento de capacidade sofrem das seguintes deficiências fundamentais em um data center moderno:
São inadequadas para operações em tempo real
- As análises de dados exponenciais centrais forçam periodicamente as soluções tradicionais a executar em lote, pois não conseguem se adaptar às demandas dos aplicativos, que flutuam continuamente.
- Elas dependem exclusivamente de dados históricos e, portanto, não podem lidar com padrões imprevisíveis de demanda dos aplicativos.
- As recomendações que elas produzem geralmente já estão obsoletas, antes mesmo de serem executadas.
- Elas se baseiam em dados históricos, o que é inadequado para cargas de trabalho de aplicativos nativos da nuvem.
As plataformas tradicionais se concentram na infraestrutura e ignoram o desempenho dos aplicativos
- Elas usam algoritmos inadequados de análise de dados, que se concentram exclusivamente na utilização da infraestrutura e não consideram o desempenho dos aplicativos.
- Elas não têm a semântica para associar a demanda de cargas de trabalho ao fornecimento de infraestrutura, para garantir o desempenho dos aplicativos.
Garantir o desempenho dos aplicativos no data center requer um sistema de controle em tempo real, que resolva o problema do gerenciamento inteligente de cargas de trabalho. Um projeto de data center definido por software, com o advento da virtualização, não inclui esse sistema.
Garantindo o desempenho dos aplicativos no data center atual
Além de garantir alta disponibilidade, o objetivo principal de qualquer equipe de operações, é obter o máximo desempenho de seus aplicativos, enquanto maximiza a utilização dos recursos de infraestrutura necessários. Toda atividade realizada na operação de um data center moderno, incluindo provisionamento, monitoramento, gerenciamento de capacidade e automação, deve apoiar esses objetivos principais
Embora alguns afirmem que o gerenciamento de capacidade apoiado pela automação possa solucionar o problema do gerenciamento inteligente de cargas de trabalho, isso não está totalmente correto. É verdade que o gerenciamento de capacidade é um exercício útil para determinar necessidades futuras de capacidade e planejar migrações, mas adicionar a automação depois não resulta em uma plataforma apropriada para garantir o desempenho dos aplicativos. Ela não preenche a lacuna do gerenciamento inteligente de cargas de trabalho, que foi deixada de fora na camada do hipervisor.
Mais recentemente, algumas das ferramentas de gerenciamento de capacidade adicionaram a capacidade de gerar recomendações com base em suas análises e, em alguns casos, a capacidade de executar essas recomendações por meio de scripts ou pela integração com sistemas de orquestração externos. No entanto, em todos os casos, as análises usadas por essas ferramentas de gerenciamento de capacidade continuam focadas em melhorar a utilização da infraestrutura e não em garantir o desempenho dos aplicativos. Isso é altamente problemático, pois a reconfiguração da infraestrutura para obter eficiência sem levar em conta o desempenho pode levar a sérios problemas de desempenho dos aplicativos.
Quando se trata de posicionamento de VM, as soluções de gerenciamento de capacidade contam com um algoritmo de bin packing (empacotamento), no qual os picos de utilização são combinados com os vales, a fim de otimizar a densidade da infraestrutura em questão.
Problemas dessa abordagem
Não executar em tempo real
Na teoria computacional, os algoritmos de bin packing são categorizados como um problema de combinatória NP-difícil. Isso significa que encontrar a solução para o problema tem processamento muito intenso e, como resultado, as análises baseadas em algoritmos de bin packing devem rodar periodicamente em lote, ao invés de continuamente em tempo real.
Considerando isso, as ações automatizadas resultantes produzidas pela análise são executadas periodicamente e não continuamente. Isso é análogo a como a desfragmentação de disco costumava ocorrer antes da otimização da gravação ser incorporada ao próprio sistema de arquivos. O principal problema dessa abordagem é que ela fundamentalmente não pode garantir o desempenho dos aplicativos, porque apenas a automação em tempo real pode lidar com a demanda flutuante dos aplicativos, configurando continuamente o fornecimento da infraestrutura para atender as necessidades dessa demanda.
Não lidar com demanda imprevisível
Como as análises são executadas periodicamente em lote, são baseadas apenas em dados históricos e, portanto, serão precisas apenas se a demanda futura refletir aproximadamente a demanda histórica. Embora essa abordagem possa ser suficiente para o gerenciamento periódico da capacidade, é totalmente inapropriada para o controle de desempenho de aplicativos em tempo real.
Muitas aplicações modernas têm padrões de demanda imprevisíveis, o que torna a análise histórica insuficiente. Por exemplo, as cargas de trabalho virtuais de desktops não possuem dados históricos consistentes. Até os aplicativos tradicionais de processamento de transações sofrem picos de demanda imprevisíveis, e são precisamente esses cenários que impactam negativamente os processos de negócios. Para que uma ferramenta de análise de dados garanta o desempenho dos aplicativos, ela deve considerar as demandas históricas e atuais de carga de trabalho, em tempo real.
Além disso, porque as ações automatizadas, como as decisões de posicionamento, são executadas apenas periodicamente e, por não poder contabilizar a demanda imprevisível, devem contar com alocações suficientes nos espaços disponíveis (headroom), para lidar com picos de demanda inesperados. Essa alocação de headroom reduz o uso eficiente da infraestrutura básica e não é uma solução suficiente para lidar com a demanda flutuante.
Ao usar a abordagem de espaço disponível, é preciso escolher entre deixar capacidade não utilizada suficiente para lidar com qualquer pico antecipado ou arriscar ter problemas de desempenho. As soluções mais adequadas respondem à demanda flutuante em tempo real, eliminando a difícil escolha entre aprovisionamento excessivo e introdução de risco de desempenho.
Não escalar
Como o algoritmo de bin packing é NP-difícil, não é dimensionado facilmente pois são adicionadas várias dimensões. De fato, no domínio da infraestrutura, à medida que o algoritmo é redimensionado para considerar não apenas o processamento, mas também o armazenamento, a rede e os aplicativos, o tempo e os recursos necessários para executar as análises aumentam exponencialmente.
Como resultado, o algoritmo não escala e também não pode ser convertido para a execução em tempo real, portanto não pode garantir o desempenho dos aplicativos, pois é muito difícil estender-se por vários domínios, ou seja, processamento, rede, armazenamento e aplicativos.
A automação não se dá em tempo real
As ferramentas legadas de gerenciamento de capacidade são anteriores ao data center definido por software e não foram inicialmente concebidas para serem integradas com a automação. Como resultado, a execução da análise de dados, o desenvolvimento e a execução de um plano de ação são fases independentes executadas em série.
Frequentemente, a automação é realizada por meio de scripts ou orquestradores de terceiros, o que complica drasticamente a implantação, a configuração e a manutenção da solução. Além disso, a automação não pode ser executada em tempo real, pois só pode ocorrer após a conclusão da análise de dados.
Planos de ação não confiáveis
Os planos de ação produzidos pelas ferramentas de gerenciamento de capacidade sofrem uma falha fatal: eles podem ser, e geralmente são, inúteis.
Como as análises de dados operam em lote a partir de dados históricos, todas as ações que elas geram são baseadas na suposição de que, quando as ações são executadas, o ambiente está no mesmo estado em que estava no momento em que os dados para a análise foram capturados. Como resultado, se o ambiente mudou de alguma forma entre o momento em que os dados foram capturados e o tempo em que as ações são executadas, essas ações são inválidas.
Além disso, como todas as ações são interdependentes, uma única alteração (como a movimentação de uma VM) pode invalidar todo o plano de ação. Essa mudança pode ocorrer enquanto a análise de dados está em execução (um processo que geralmente leva horas, devido à intensidade de processamento do algoritmo) ou mesmo enquanto o próprio plano de ação está em execução. Isso fica ainda mais evidente pelo fato de que não há como determinar antecipadamente se alguma alteração que possa invalidar o plano ocorreu antes de tentar executá-lo. Como resultado, qualquer tentativa de executar um plano de ação produzido em uma infraestrutura que se altera dinamicamente não é confiável.
Inadequação para cargas de trabalho nativas da nuvem
Por fim, o gerenciamento da capacidade em lote com base na análise histórica de dados é completamente inadequado para cargas de trabalho nativas da nuvem. Cada vez mais aplicativos estão sendo arquitetados para escalarem horizontalmente, usando microsserviços implantados em contêineres.
Esses microsserviços baseados em contêineres são criados e destruídos continuamente em tempo real, com base na demanda dos aplicativos. Como resultado, não há dados históricos suficientes para realizar a análise da capacidade do lote. O gerenciamento tradicional da capacidade de lote é completamente inadequado para cargas de trabalho nativas da nuvem, o que significa que elas se tornarão obsoletas no futuro próximo. Em realidade, cargas de trabalho nativas da nuvem só podem ser gerenciadas por um sistema de controle em tempo real.
Conclusão
Como vimos, as ferramentas de gerenciamento de capacidade são inadequadas para garantir o desempenho dos aplicativos, porque não podem ser executadas em tempo real, não podem lidar com demandas imprevisíveis, não são dimensionáveis, produzem planos de ação fundamentalmente não confiáveis e são totalmente inadequadas para cargas de trabalho nativas na nuvem.
É necessário garantir a performance dos aplicativos no data center moderno com um sistema de controle em tempo real, que resolva o problema de gerenciamento inteligente de carga de trabalho, que foi deixado de fora no planejamento do data center definido por software com o advento da virtualização.
Turbonomic é uma solução baseada em Inteligência Artificial para Gestão de Capacidade, que otimiza simultaneamente o desempenho, a conformidade e o custo em tempo real, gerenciando automaticamente a pilha completa de aplicativos, executando ações específicas que garantem que seus aplicativos obtenham continuamente os recursos que precisam para atender às necessidades de negócios. Pode ser implementada nas principais plataformas on-premises, na nuvem ou em ambientes híbridos, garantindo automaticamente o desempenho de seus aplicativos 24/7/365
