Conceitos Importantes - Parte 1: Computação em Nuvem X Virtualização; Elasticicidade e Escalabilidade

Tratando sobre o assunto do nosso blog, existem uma série de conceitos ligados ao tema que são importantes definir para melhor compreensão. Nessa primeira parte, abordaremos a diferença entre Virtualização X Computação em Nuvem. Também explicaremos sobre Elasticidade e escalabilidade.

VIRTUALIZAÇÃO/COMPUTAÇÃO EM NUVEM

Primeiro vamos falar sobre virtualização de servidores. Trata-se de uma forma otimizada do uso de servidores físicos, de tal maneira que vários servidores virtuais rodem em um mesmo hardware sobre o controle de um monitor das máquinas virtuais, chamado hipervisor. Como a virtualização permite a simulação de ambientes autônomos em um mesmo hardware possam diminuir o uso de espaços físicos, energia, hardwares. Outra vantagem é que os servidores virtuais podem ser modificados com facilidade por diferentes máquinas físicas, o que ajuda bastante na manutenção.


Já a Computação em Nuvem, abordada no início do blog é um conceito muito mais amplo. Contém a ideia do pay-per-use, onde o usuário paga pela forma como utiliza, de maneira semelhante a contas de água e energia. Especificamente, quando falamos em Computação em Nuvem, é importante deixar claro o que é e o que não é Computação em nuvem. A caracterização da nuvem ficou caracterizada de maneira abrangente. Hoje uma das conceituações mais usadas é a do NIST (Instituto Nacional de Padrões e Tecnologia do Departamento de Comércio Norte-americano) que "é um modelo que permite acesso ubíquo, conveniente e sob demanda, via rede, para um conjunto compartilhado de recursos computacionais configuráveis (por exemplo, redes, servidores...) que podem ser alocados e liberados rapidamente com o mínimo esforço de gerenciamento ou interação com o provedor de
serviços". Cabe ressaltar que esse conceito continua evoluindo.

Há uma confusão entre os dois termos por um motivo: a Computação em Nuvem utiliza a virtualização. Traduzindo: cada máquina física do provedor de serviços de nuvem podem ser criadas várias máquinas virtuais, alocadas ou liberadas conforme o cliente necessitar. Ou seja, existe uma importante relação entre ambos os conceitos, devido a virtualização ser uma das principais tecnologias para a nuvem, mas Virtualização e Computação na Nuvem não são conceitos idênticos.

ELASTICIDADE E ESCALABILIDADE

A elasticidade é um termo que tem origem na física (na qual determina a capacidade de um material de voltar ao seu estado inicial após sofrer uma deformação) e na economia (que verifica o impacto que a alteração em uma variável causa em outra). Em computação esse termo é bastante empregado também , sendo definida como a capacidade de um sistema para adaptar-se as alterações de carga de trabalho, aumentando ou alocando recursos automaticamente, para que em todo instante o uso desses recursos seja compatível com a demanda de momento. Por exemplo, um site na Internet pode ser considerado elástico se ele aloca e libera os recursos de acordo com a quantidade de usuários simultâneos. A nuvem permite isso: um ambiente elástico, onde os ocorre liberação e alocação dinâmica de recursos para os sistemas que rodam em sua infraestrutura. Sempre que é necessário uma demanda de recursos, a nuvem deve ser capaz de fornecê-los.

A escalabilidade refere-se a capacidade que um sistema possui de suportar adequadamente o aumento de cargas de trabalho à medida que o número de recursos computacionais sobe. Se um sistema consegue utilizar mais recursos com desempenho quando a demanda sobe, esse sistema é escalável.

Em resumo, o sistema é elástico se consegue "encolher" ou "esticar" e escalável se consegue usar recursos adicionais. Nesse sentido, a escalabilidade é um pré-requisito para a elasticidade, o sistema só é elástico se for escalável.

Costuma-se pensar ou dizer que a computação na nuvem permite que um sistema seja escalável. Isso não é necessariamente garantido. O sistema deve ser construído de forma que use a capacidade da nuvem de alocar/liberar recursos, tornando-se, assim, escalável.

Aí entra a seguinte questão: muitos sistemas para ambientes convencionais não são desenvolvidos para serem escaláveis, e quando possuem essa característica, requerem uma intervenção manual para utilizarem os novos recursos. Assim, a execução desses sistemas em nuvem não conseguem aproveitar completamente as diversas vantagens oferecidas. É necessário que o sistema sofra adaptações para aproveitar as vantagens, porém, em casos de sistemas não escaláveis, a mudança pode ser tão grande a ponto de não ser possível, tendo o sistema que ser recriado quase que por completo.

Com isso, há uma classificação sobre a migração de um sistema para a nuvem:

1. Incompatível com a nuvem: algumas características do sistema impossibilitam a migração;
2. Compatível com a nuvem: embora algumas características sejam incompatíveis, não há nada que impeça da migração ocorrer;
3. Pronto para a nuvem: quando não há nenhuma característica do sistema incompatível com a nuvem;
4. Alinhado para a nuvem: quando o uso da nuvem traz benefícios, sendo na redução de custos ou recursos;
5. Otimizado para a nuvem: quando o sistema explora a elasticidade da plataforma em nuvem, tendo um ótimo uso dos recursos disponíveis.

Fontes:
Computação em Nuvem, e-book Opus Software, 2015.
https://dl.acm.org/citation.cfm?id=1618592
https://sdqweb.ipd.kit.edu/publications/pdfs/HeKoRe2013-ICAC-Elasticity.pdf

Comentários

Postagens mais visitadas deste blog

Apresentação do GT5 - Plataformas em Nuvem

Conceitos Importantes - Parte 2: Tipos de Nuvem: Pública, Privada, Híbrida

Infraestrutura como Código