Nesta unidade faremos um apanhado de conceitos e considerações para que você, estudante, seja capaz de compor suas métricas de avaliação e medição do desempenho de qualquer solução cloud. Começaremos com as formas de se avaliar o Hardware, a parte física do provedor. Sobre a avaliação do desempenho do software vamos tratar de como a medição da elasticidade consegue promover métricas relevantes neste sentido.
Por fim, trataremos de como a conectividade pode oferecer bons insights sobre o desempenho da nuvem contratada e finalizaremos com as principais metodologias de avaliação de desempenho e sua aplicabilidade na nuvem.
Desde que fui apresentado ao meu primeiro computador, um intel pentium 166 (MHz) com fabulosos 32 Megabytes de memória e disco rígido de 2.1 Gb passei a constantemente avaliar o desempenho de meus computadores e buscar formas de extrair mais alguns MHz e gigabytes e com a avaliação do desempenho de meu hardware comecei a notar o quanto era importante o software que fazia uso dele.
Avaliar soluções cloud sob a ótica do hardware não é muito prático se você não for o provedor da solução. Mas como consumidor final a avaliação de desempenho da solução pode sim ser feita, basta apenas se procurar a metodologia certa, e que provavelmente vai ser uma análise feita com base em serviços e contratos de IaaS. De acordo com Coutinho (2014: 19):
O monitoramento de recursos computacionais, como CPU, memória e largura de banda, se torna essencial tanto para os provedores, os quais disponibilizam os serviços, quanto para seus clientes. Uma maneira de se avaliar um ambiente é monitorando algum aspecto, como utilização de recursos. Muitas vezes a elasticidade está associada a algum recurso do provedor. Na Amazon EC2, por exemplo, o cliente pode estar utilizando uma instância com poucos recursos, e em caso de necessidade de recursos, monitorado através serviço de monitoramento (Cloudwatch), o serviço de escalonamento (Auto Scaling) pode acionar que o serviço de balanceamento de carga (Elastic Load Balance) incremente a quantidade de instâncias.
Perceba que em muitos casos, como os dos usuários de soluções AWS é possível fazer uma avaliação rápida ao se observar quais são os atributos das soluções que servem as soluções, e como exemplo podemos citar a existência de subsistemas como o Auto Scaling que junto com o Cloudwatch, promovem imensa agilidade na prestação do serviço.
Existem também diversos protocolos que podem ser utilizados como elemento de avaliação de desempenho e como são diversos os protocolos utilizados, vamos a um dos mais populares, o IPsec, que, de acordo com Almeida (et al 2016: 960) pode ser conceituado como:
O protocolo IPsec opera na camada de rede, fornecendo os serviços de autenticação e cifração de pacotes na comunicação entre dois elementos quaisquer de uma rede (e.g., roteadores ou máquinas de usuários finais) [11]. Assim, o IPsec oferece proteção contra ameaças à confidencialidade, autenticidade e integridade de dados, como escutas e ataques de repetição [9], garantindo o devido isolamento lógico entre os canais de comunicação.
Almeida (et al 2016: 960) afirma que o IPsec contribui para uma avaliação mais refinada ao estabelecer:
[…] criptográficas simétricas entre os elementos participantes de uma sessão, o que pode ser feito manualmente ou via protocolos como o Internet Key Exchange versão 2 (IKEv2) [10], criando-se uma associação de segurança entre as partes. Essas chaves são então utilizadas nos protocolos Authentication Header (AH), responsável pela autenticação dos pacotes, e Encapsulating Security Payload (ESP), que fica responsável pela sua cifração.
Para tornar o IPsec uma metodologia de avaliação de desempenho, Almeida (et al 2016: 960) apresenta o uso dos cenários de referência:
O cenário de referência, ilustrado na Figura [a seguir], implementa a comunicação entre VMs localizadas em máquinas físicas distintas utilizando apenas o OvS. A realização dos testes considera a transferência de pacotes de dados entre VM1 e VM3. Este cenário não utiliza mecanismos de segurança e tem como objetivo principal permitir sua comparação com os demais cenários que implementam SR-IOV e IPsec.

Neste momento (nostálgico) para mim, voltamos a conceitos mais básicos como o do tempo de resposta e mencionei nostálgico, pois quando o mundo chega no Pentium 3 e você está no 166, tempo de resposta é uma avaliação importante. Claro que, no universo de aplicações em nuvem, estamos falando não da velocidade em si, mas do impacto, antes e depois do cenário padrão receber o IPsec, como apresenta Almeida (et al 2016: 960):
A análise e avaliação dos cenários de aplicação apresentados requer que seja primeiramente feito o levantamento dos tempos de resposta referentes a cada mecanismo utilizado para compor os cenários apresentados com o intuito de calcular suas respectivas taxas de processamento de pacotes (TP). Mais precisamente, o procedimento adotado foi a comparação entre os tempos de resposta obtidos de um cenário sem qualquer mecanismo de segurança (i.e., “cenário de referência”) e um cenário onde o respectivo mecanismo é implementado (i.e., “cenário IPsec” e “cenário SR-IOV”).
Tempos de resposta e números de pacotes entre as máquinas virtuais depende muito de como é feito o tráfego e da forma com que se faz o gerenciamento da capacidade de infraestrutura do provedor, mas é preciso expandir o olhar por toda a rede, desde o maquinário do cliente, sua conexão com a internet, os caminhos e servidores onde os dados percorrem e que podem provocar altas latências, aqui, queremos as baixas.
Vamos falar da análise da porção lógica dos sistemas cloud pela ótica da elasticidade, mas antes precisamos reconhecer o que representa a elasticidade nos serviços em nuvem. Quando se fala de elasticidade de serviços em nuvem estamos nos referindo a capacidade do servidor de redirecionar recursos como armazenamento e processamento, de acordo com a carga de trabalho do momento e do solicitado pelo cliente.
Como principal vantagem, a elasticidade promoveu o desenvolvimento das Máquinas Virtuais e Containers encarregados de aumentar ou diminuir a sua oferta de recursos de forma automatizada e imediata. Coutinho (2014: 19) define elasticidade em nuvem como: