Escalar contêineres é mais do que simplesmente colocar um proxy na frente de um serviço e ir embora. Há mais em escala do que apenas distribuição, e no mundo acelerado dos contêineres, há cinco capacidades distintas necessárias para garantir a escala: novas tentativas, disjuntores, descoberta, distribuição e monitoramento.
Nesta postagem sobre a arte de dimensionar contêineres, vamos nos aprofundar na descoberta.
Os modelos tradicionais de escala são relativamente fixos em configuração . Os proxies de balanceamento de carga usam um algoritmo para selecionar um recurso de um conjunto de recursos bastante estático. Embora a seleção do recurso (distribuição) seja um evento em tempo real e possa incluir a consideração de variáveis just-in-time, como tempos de carga e resposta, o ambiente geral não é. Os operadores adicionam e removem recursos com base em processos definidos pela empresa que controlam o aumento ou a diminuição da capacidade.
Os modelos modernos de escala são voláteis e dinâmicos por natureza. A premissa de escala em sistemas modernos é baseada em “auto” tudo. O dimensionamento automático, um conceito concretizado pela nuvem, força a noção de expansão e contração de conjuntos de recursos com base na demanda. Mas isso é apenas meio passo em relação aos modelos tradicionais. Ainda existe a noção de um conjunto “central” de recursos a partir do qual um algoritmo de balanceamento de carga faz uma seleção. Esse pool pode ser expandido ou contraído dinamicamente, mas ainda é limitado pelo modelo bastante tradicional em que opera.
Os contêineres – e em particular os ambientes de orquestração de contêineres – rompem completamente com esse molde. O conceito de um ponto de extremidade (o ingresso ) é um dos poucos elementos "fixos" na escala baseada em contêiner, com todo o resto, desde regras de roteamento até os recursos que compõem seu pool de suporte, considerados altamente variáveis. Teoricamente, os contêineres podem durar apenas alguns segundos. Na aplicação prática, no entanto, eles geralmente tendem a viver por dias. Em comparação aos modelos tradicionais, nos quais os recursos duram meses (e às vezes anos), essa vida útil coloca uma pressão sobre os operadores que não pode ser suportada sem a automação.
A descoberta é, portanto, um componente crítico para dimensionar contêineres. Os proxies de balanceamento de carga devem ser capazes de selecionar um recurso de um conjunto de recursos que pode ou não ser o mesmo de um minuto atrás. A maioria dos ambientes de orquestração de contêineres, então, inclui um "registro" de recursos que auxilia os proxies na descoberta de recursos em tempo real para garantir a escala.
Esse processo exige que os proxies não apenas sejam integrados ao ecossistema de orquestração de contêineres, mas que falem a língua franca desses ambientes: arquivos de configuração declarativos (arquivos de recursos) e metadados são usados em ambientes de orquestração de contêineres para permitir que os proxies identifiquem os recursos anexados aos serviços que estão dimensionando. Isso permite que os proxies ajustem automaticamente seus “pools” de recursos em tempo real e evitem o constrangimento de selecionar um recurso que infelizmente já foi desativado.
Sem descoberta, não há uma maneira eficiente para um proxy de balanceamento de carga dimensionar aplicativos e serviços em um ambiente de contêiner. Nenhum operador conseguiria acompanhar as mudanças em tal ambiente usando métodos manuais de configuração. Apenas manter o controle de quais recursos estão ativos — e vinculados a qualquer serviço específico — consumiria a maior parte do tempo, deixando pouco tempo para realmente fazer as alterações necessárias.
A descoberta fornece os meios pelos quais os componentes em um ambiente de orquestração de contêineres podem operar em tempo real e permite que os proxies de balanceamento de carga dimensionem aplicativos e serviços, garantindo que eles tenham as informações necessárias para selecionar recursos sob demanda.