Neste artigo vamos ver qual a diferença entre scale-up (aumentar o tamanho de uma instância) e scale-out (ter mais de uma instância provendo o mesmo serviço).
Quando estamos trabalhando com cloud, geralmente temos duas opções de escalabilidade: a scale-up, onde conseguimos aumentar os recursos disponíveis para o consumo de uma única máquina virtual (ou instância) e a scale-out, onde conseguimos ter mais instâncias trabalhando para nós, respondendo requisições simultaneamente.
Para que possamos entender melhor quando utilizar cada uma dessas opções, iremos explicar as principais diferenças entre elas.
Corpo do Artigo:
Antes de entrar na explicação em si, é importante entender o que é um tipo, tamanho ou flavor de instância em uma cloud.
Em clouds, os tipos, tamanhos ou flavors de instâncias definem a quantidade de vCPUs, memória RAM e capacidade de armazenamento de instâncias de computação, ou, simplificando, é uma configuração de hardware disponível para um servidor. Ele define o tamanho de um servidor virtual que pode ser executado.
Para essa tech tip, iremos assumir 3 tipos de instâncias como exemplo:
Instância P – 1 vCPU, 2GB de RAM e 20GB de armazenamento
Instância M – 2 vCPUs, 4GB de RAM e 40GB de armazenamento
Instância G – 4 vCPUs, 8GB de RAM e 80GB de armazenamento
Scale-up
Digamos que temos uma aplicação que esteja rodando em um website e ela está demorando demais para ser executada. Ela pode precisar de mais processamento e/ou memória e digamos que esta aplicação esteja rodando em uma instância P. Podemos aumentar o tamanho dessa máquina para M ou G, para que ela tenha mais poder de processamento e memória e possa processar mais rapidamente as requisições que chegam até ela.
Então se estamos trabalhando por exemplo com multimídia, processamento de imagens ou qualquer outro tipo de carga de trabalho que demande grande capacidade de processamento, esses são casos onde o scale-up auxilia o utilizador da cloud a garantir maior desempenho.
Scale-out
Já no caso do scale-out, é diferente. Suponhamos que ainda temos uma instância P, mas digamos que agora o problema é que temos muitas requisições sendo feitas ao nosso site, por exemplo, estamos trabalhando com o wikipedia.org, é um site gigantesco, que recebe muitas requisições, mas todas as requisições são simples, não existe um processamento muito grande sendo feito.
Nesse caso não adiantaria realizarmos o scale-up, pois apesar da instância possuir uma grande capacidade de processamento e memória, o gargalo aqui é a quantidade de requisições que chega a essa máquina. Como o scale-out pode nos ajudar nesse caso?
Com o scale-out, conseguimos ter mais de uma máquina trabalhando nessas requisições, podemos configurar para que todas sejam P, por exemplo, só que aqui conseguimos processar as requisições em paralelo. Digamos que temos um balanceador de carga na frente, ele vai realizar o direcionamento dessas requisições, e toda requisição que chegar ao ambiente será encaminhado pra cada uma das máquinas provisionadas. Com isso, temos mais de uma máquina trabalhando pra nós, fazendo com que essas requisições sejam respondidas e trabalhadas.
Em alguns casos nos quais temos grande processamento aliado a grande quantidade de requisições, podemos de alguma maneira “misturar” as duas soluções, por exemplo, nosso ambiente começa a ser executado com 4 instâncias M, e por algum motivo precisa ser escalado para 8 instâncias G.
Espero que vocês tenham entendido, esse é um tópico que normalmente gera muita discussão e dúvidas entre as pessoas que trabalham com cloud. Mas a diferença é basicamente esta, como está ilustrado na imagem acima: no scale-out você vai criar mais instâncias, e no scale-up você vai ter diferentes tamanhos de virtual machines para trabalhar por você. No próximo artigo vou falar sobre autoscaling!