Dimensionamento horizontal ou vertical: qual é o melhor para APIs?

O dimensionamento horizontal adiciona mais máquinas a um sistema, distribuindo a carga, enquanto o vertical atualiza a CPU, a RAM e o armazenamento de uma única máquina. A escolha depende da arquitetura do sistema e das necessidades da aplicação.

A demanda por uma API (interface de programação de aplicações) geralmente não é estática. Ela aumentará e diminuirá ao longo do tempo. Em certos casos, como picos de tráfego na temporada de festas de fim de ano, uma API pode precisar lidar com um volume significativamente maior de solicitações do que em outros momentos. Para suportar esse aumento no tráfego, é necessário expandir o uso de APIs. Os administradores de sistema têm duas opções quando se trata de dimensionar uma API. Eles podem optar pelo dimensionamento horizontal, que se refere à adição de mais instâncias de API a um cluster, ou pelo dimensionamento vertical, o que significa adicionar à capacidade de computação da máquina que dá suporte à API. Este artigo explora as diferenças entre esses dois tipos e qual é o melhor para escalabilidade de API.

Dimensionamento horizontal

O dimensionamento horizontal, também conhecido como "scaling out", é o processo de implantar VMs (máquinas virtuais) adicionais para que haja mais capacidade de API para lidar com uma carga maior. (A redução da capacidade é conhecida como "scaling in".) Os administradores de sistema podem adicionar mais VMs ao cluster conforme a necessidade de mais capacidade. No entanto, é necessário um software especializado de gerenciamento de recursos para gerenciar a carga de chamadas de API e encaminhá-las para a instância de VM correta no cluster a fim de manter o equilíbrio.

Dimensionamento vertical

O dimensionamento vertical é o processo de adicionar recursos a um único nó, em contraste com o dimensionamento horizontal, que adiciona nós. O dimensionamento vertical, também chamado de "scaling up" ou "scaling down", consiste em adicionar recursos como capacidade de CPU (unidade central de processamento), memória ou armazenamento a um servidor. No caso de APIs, isso geralmente envolve a adição de capacidade de computação à VM que hospeda a API.

Por exemplo, se uma API estiver hospedada em uma VM que recebeu um núcleo de CPU e 512 megabytes de RAM, dimensioná-la pode significar dobrar o número de núcleos e a RAM. A API teria então dois núcleos de processador de CPU dedicados e 1.024 megabytes de RAM. Com essa nova configuração, a API deve ser capaz de lidar com aproximadamente o dobro da carga, embora as restrições na largura de banda da rede, na velocidade de armazenamento e outros fatores possam reduzir o impacto do dimensionamento vertical. Há também um desafio no gerenciamento de recursos, mas um software especializado normalmente pode resolver esse problema.

Por que APIs sem estado são importantes para o dimensionamento

As APIs são geralmente projetadas como "sem estado", ou seja, não armazenam dados de solicitação nem retêm informações entre as sessões. Essa natureza sem estado é crucial ao considerar métodos de dimensionamento. As APIs sem estado não exigem replicação de dados entre instâncias, o que torna o dimensionamento horizontal mais eficiente e fácil de implementar. Os administradores do sistema podem adicionar ou remover VMs conforme necessário sem afetar as operações da API, pois o cliente da API não depende de instâncias específicas do servidor para funcionar.

Não há nada de errado em ter estado. Na verdade, isso pode ser essencial para o funcionamento desejado da aplicação. No entanto, a execução do dimensionamento horizontal para uma aplicação com estado é bem mais complicada. Seria necessário copiar os dados armazenados da versão original da aplicação para novas instâncias.

Uma aplicação ou API sem estado, por outro lado, é aquela que não armazena dados de solicitação. Ela não guarda dados da sessão na memória. Cada vez que uma sessão é iniciada, é como se a aplicação estivesse atendendo o cliente pela primeira vez. Depois que a sessão termina, é "adeus", sem memória da sessão.

O dimensionamento horizontal é possível para uma aplicação sem estado porque não importa qual VM esteja respondendo às chamadas de API. O cliente de API pode chamar um número infinito de VMs que hospedam a API, e isso nunca terá importância. Os administradores de sistema podem adicionar ou remover quantas VMs quiserem sem afetar a operação da API.

Dimensionamento horizontal, a escolha certa para APIs

Como as APIs são sem estado, o dimensionamento horizontal surge como a melhor opção, pois a adição de mais VMs para aumentar a capacidade funciona bem com esse tipo de API. Os administradores podem criar clusters de VM que expandem à medida que a demanda de API cresce.

Além disso, embora o dimensionamento vertical de APIs seja possível, ele possui problemas de alocação de recursos que o tornam comparativamente mais difícil. Em contraste, o dimensionamento automático horizontal funciona facilmente com APIs. À medida que as ferramentas de gerenciamento do sistema detectam um pico no tráfego de API, elas podem adicionar automaticamente VMs para hospedar mais instâncias da API em um cluster. Isso é um pouco mais difícil em uma situação de dimensionamento vertical, pois o dimensionamento automático não funciona bem com ele.

A demanda por APIs inevitavelmente mudará ao longo do tempo. Será necessário aumentar ou diminuir a capacidade de APIs. Tanto o dimensionamento horizontal como o vertical estão disponíveis para APIs. No entanto, a natureza sem estado delas, juntamente com a relativa facilidade do dimensionamento automático horizontal, favorece o dimensionamento horizontal como a abordagem certa.

Sistemas distribuídos e arquitetura de microsserviços

Em um sistema distribuído, em que as APIs fazem parte de uma arquitetura de microsserviços, o dimensionamento horizontal é especialmente vantajoso. Cada microsserviço pode ser dimensionado de forma independente com base em sua carga e requisitos específicos. Essa abordagem modular possibilita um uso mais eficiente de recursos e melhor tolerância a falhas, pois as falhas em um microsserviço não afetam outros.

Além disso, em uma arquitetura de microsserviços, o dimensionamento horizontal se alinha aos princípios de sistemas distribuídos, em que diferentes serviços são implantados em vários nós. Isso garante que o sistema possa lidar com cargas variáveis e manter o desempenho ideal, mesmo durante horários de pico.

Minimizar o tempo de inatividade com estratégias de dimensionamento

O tempo de inatividade é uma das maiores preocupações relacionadas ao dimensionamento de APIs, pois qualquer interrupção no serviço pode levar à perda de receita e à insatisfação dos clientes. O dimensionamento horizontal minimiza o tempo de inatividade, permitindo que os administradores do sistema adicionem ou removam servidores sem afetar a disponibilidade da API. Em contraste, o dimensionamento vertical pode exigir a reinicialização ou a desativação temporária do servidor, o que pode interromper os serviços.

Os provedores de API podem utilizar o dimensionamento horizontal para garantir uma operação contínua, especialmente durante manutenção planejada ou picos de tráfego inesperados. Ao distribuir a carga entre vários servidores, esse tipo de dimensionamento garante que a API permaneça responsiva e disponível, mesmo se servidores individuais precisem ser colocados off-line para atualizações ou reparos.

Perguntas frequentes

O dimensionamento horizontal tem um impacto positivo no desempenho de uma API. Essa abordagem envolve a adição de mais servidores à sua infraestrutura e a distribuição da carga entre eles. Como resultado, o sistema pode lidar com mais solicitações simultâneas, levando a tempos de resposta aprimorados e um melhor desempenho geral. 

Além dos benefícios de desempenho, o dimensionamento horizontal contribui para a redundância e confiabilidade do sistema. Se um servidor falhar, o balanceador de carga desvia o tráfego para os servidores restantes, que podem assumir perfeitamente o controle, garantindo uma operação contínua. Isso se alinha às práticas recomendadas de segurança de APIs e melhora a resiliência do sistema contra possíveis falhas.

O dimensionamento vertical envolve a atualização dos recursos de um único servidor para melhorar seu desempenho. Isso pode aumentar a velocidade de processamento de solicitações da API, pois um servidor mais avançado pode lidar com uma carga mais alta. No entanto, é importante observar que o dimensionamento vertical pode ter retornos menores. Só é possível atualizar uma única máquina até certo ponto. Depois dele, os ganhos de desempenho podem não ser proporcionais ao investimento.

Ao considerar a escolha de dimensionamento horizontal ou vertical, é importante ponderar os possíveis benefícios em relação aos riscos. Lembre-se de fatores como implicações de segurança de API REST e garanta que o sistema permaneça resiliente a falhas.

É importante entender a diferença entre dimensionamento horizontal e vertical para decidir quando usar cada um.

Use o dimensionamento vertical quando: 

  • Sua aplicação da Web estiver em seus estágios iniciais ou tiver uma carga leve, que possa ser suportada por um único servidor avançado. Isso é especialmente verdadeiro quando a demanda por chamadas de API é baixa.
  • A aplicação ou a API não suporta bem a computação distribuída. Nos casos em que a arquitetura ou o design não se alinham aos princípios de dimensionamento horizontal, o dimensionamento vertical pode ser uma alternativa adequada. 

Use o dimensionamento horizontal quando: 

  • Sua aplicação estiver passando por um crescimento e houver probabilidade de aumento da demanda. O dimensionamento horizontal permite que a infraestrutura se adapte às cargas variáveis adicionando mais servidores conforme necessário. 
  • Você precisa garantir alta disponibilidade e redundância. O dimensionamento horizontal fornece redundância, tornando o sistema mais resiliente a falhas e garantindo a operação contínua, mesmo que um ou mais servidores fiquem inativos.

A relação custo-benefício depende de fatores como os requisitos específicos da aplicação, a escala de implantação e a demanda geral. O dimensionamento vertical é geralmente mais econômico porque é necessário comprar apenas um ou dois novos componentes ao dimensionar. No entanto, ele se torna menos econômico à medida que você se aproxima dos limites da capacidade do servidor.

Por que os clientes escolhem a Akamai

A Akamai é a empresa de cibersegurança e computação em nuvem que potencializa e protege negócios online. Nossas soluções de segurança líderes de mercado, inteligência avançada contra ameaças e equipe de operações globais oferecem defesa em profundidade para garantir a segurança de dados e aplicações empresariais em todos os lugares. As abrangentes soluções de computação em nuvem da Akamai oferecem desempenho e acessibilidade na plataforma mais distribuída do mundo. Empresa globais confiam na Akamai para obter a confiabilidade, escala e experiência líderes do setor necessárias para expandir seus negócios com confiança.

Publicações do blog relacionadas

Apresentamos o Akamai DNS Posture Management
O novo Akamai DNS Posture Management aborda os desafios de uma infraestrutura DNS fragmentada: visibilidade, observabilidade e capacidade de ação.
Compliance Insights: How to Stop Lateral Movement and Boost Authorization
Stop lateral movement before it starts. Learn how to meet security compliance regulations with layered security, microsegmentation, and smart API protection.
Acesso negado. Refém de um resgate digital: a batalha de uma cidade contra o crime cibernético
Leia como ter um plano e preparar-se com antecedência pode diminuir a gravidade de um ataque de ransomware ou até evitar um ataque completamente.