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.

DESEMPENHO DE HARDWARE EM APLICAÇÕES CLOUD

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.

DESEMPENHO DE SOFTWARE EM APLICAÇÕES CLOUD

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: