REGISTRO DOI: 10.69849/revistaft/ni10202410172007
Thiago Araújo de Almeida1;
Me. Napoleão Póvoa Ribeiro Filho2
Resumo
Atualmente, as empresas têm migrado para provedores de serviços de nuvem computacional devido à flexibilidade, escalabilidade e redução de custos que esses serviços oferecem. A computação em nuvem permite o acesso a recursos de TI sob demanda, com pagamento baseado no uso efetivo e ajustes rápidos na capacidade de processamento e armazenamento conforme as necessidades do negócio. No entanto, os diferentes provedores apresentam variações em suas características para produtos similares, o que pode impactar tanto no desempenho das aplicações quanto nos custos envolvidos. Diante desse cenário, este trabalho analisou o desempenho de um provedor web configurado em diferentes produtos oferecidos pela Amazon Web Services (AWS) e Microsoft Azure. Foram simulados dois cenários: o primeiro utilizando máquinas virtuais (EC2 e Azure Virtual Machine) e o segundo adotando uma arquitetura baseada em microsserviços. Os resultados mostraram que as simulações com microsserviços tiveram desempenho superior em relação à infraestrutura de máquinas virtuais, destacando-se pela menor latência e maior estabilidade em condições de alta demanda.
Palavras-chave: microsserviços. desempenho. computação em nuvem. provedores de nuvem. JMeter.
1 INTRODUÇÃO
Devido ao aumento acelerado das demandas tecnológicas e a procura por alternativas mais versáteis e eficazes, as organizações começaram a lidar com problemas ligados à capacidade de armazenamento, processamento de informações e manutenção de estruturas físicas. De acordo com Picoto et al. (2021), com a chegada da computação em nuvem (cloud computing), organizações e empresas têm buscado cada vez mais soluções eficientes para disponibilizarem suas aplicações de forma escalável (aumentando a demanda sem perder desempenho) e remota. Os serviços em nuvem permeiam quase todos osaspectos de nossas vidas diárias, muitas vezes sem que se quer percebamos. Desde o armazenamento de fotos em nossos smartphones até a execução de nossos aplicativos favoritos, a computação em nuvem está por trás de muitos dos serviços digitais que usamos diariamente.
Nos dias atuais, percebe-se que empresas de diferentes portes utilizam a infraestrutura das nuvens computacionais para operações consideradas críticas que são essenciais para o funcionamento contínuo de um sistema ou organização, seja para hospedar sites, gerenciar dados do cliente ou executar aplicativos complexos como processamento de transações conforme o apresentado no trabalho de Nascimento, Santana & Andrade (2021). Além disso, setores como saúde, educação e governo estão cada vez mais adotando a nuvem para melhorar a eficiência e a acessibilidade de seus serviços.
Considerando o cenário de aplicação da computação em nuvem abordado nos parágrafos anteriores, constata-se a importância estratégica dos serviços de cloud computing em diversos contextos. Mensurar o desempenho de aplicações executadas nesse ambiente torna-se, portanto, uma decisão crucial, já que esse desempenho impacta diretamente a qualidade e a eficiência dos serviços oferecidos. Este artigo tem como objetivo apresentar dados e argumentos que auxiliem na avaliação do desempenho de dois dos principais provedores de serviços de nuvem em um cenário específico de oferta de serviços web. Esse trabalho analisou os provedores Amazon Web Services (AWS) e Microsoft Azure, comparando seus desempenhos em cenários com recursos e tecnologias similares.
1.1 Definição do Problema
Os serviços web desempenham um papel crucial na economia atual, permitindo que empresas e usuários acessem aplicações e dados remotamente, facilitando a comunicação e a automação de processos. No entanto, esses serviços podem apresentar variações significativas de desempenho quando executados em diferentes provedores de nuvem, devido às particularidades da infraestrutura e das otimizações oferecidas por cada um. Fatores como a localização dos data centers, a latência da rede, a configuração dos recursos computacionais e o modelo de tarifação podem impactar diretamente a velocidade, a escalabilidade e a estabilidade dos serviços. Enquanto um serviço web pode funcionar de forma eficiente em uma plataforma como a AWS, ele pode não ter o mesmo desempenho no Microsoft Azure, e vice-versa, dependendo da forma como esses provedores gerenciam o balanceamento de carga, armazenamento e recursos de processamento entre outros aspectos.
Agora, um outro cenário a ser considerando é quando essas aplicações web são configuradas em microsserviços. De acordo com o trabalho de Desina (2024), isso ocorre devido à capacidade desse estilo arquitetônico de permitir o desenvolvimento independente e a implantação dessas aplicações, proporcionando assim uma entrega mais rápida e confiável.
Entretanto, o desempenho desses microsserviços também pode variar significativamente entre diferentes provedores de nuvem. Fatores como a infraestrutura do provedor de nuvem, a implementação dos microsserviços e interação entre eles, a região escolhida dentro do provedor, impactam o desempenho das aplicações contidas nesses componentes autônomos. Portanto, conforme abordado por Moraes (2022) em sua análise de desempenho em ambiente multi-cloud baseado em microsserviços,é de suma importância entender como essas diferenças podem impactar a eficiência geral de uma aplicação.
Este estudo busca abordar o problema da falta de uma compreensão clara e quantificável sobre como o desempenho dos serviços web varia entre diferentes provedores de nuvem e como essas variações podem impactar a eficiência e a eficácia das aplicações.
A falta de uma compreensão clara e quantificável de como o desempenho dos serviços web varia entre vários provedores de nuvem e como essas variações podem afetar o desempenho e a funcionalidade das aplicações é o problema que este estudo visa abordar.
2 FUNDAMENTAÇÃO TEÓRICA
2.1 Computação em nuvem
De acordo com o trabalho de Silvaet al. (2020), a computação em nuvem chegou para solucionar os problemas de sobrecargas de computação e de altos investimentos em infraestrutura, oferecendo serviços de computação via internet, com intuito de proporcionar economia de escala, oferecendo inovações rápidas e recursos flexíveis, os quais incluem servidores (máquinas virtuais), armazenamento, banco de dados, serviços de rede e software. E dentro da computação em nuvem existem diversos tipos de serviços, sendo os mais comuns identificados pelas siglas IaaS, PaaS e SaaS, que serão explicadas a seguir:
– Infraestrutura como serviço (IaaS – Infrastructure as a Service) o provedor de nuvem cuida da infraestrutura física e oferece seus recursos essenciais de computação, armazenamento, processamento e rede.
– Plataforma como serviço (PaaS – Plataform as a Service) refere-se ao ambiente sob demanda para desenvolvimento, testes e gerenciamento de aplicações.
– Software como serviço (SaaS – Software as a Service) é a parte dos aplicativos que utilizamos como Google Drive, Gmail, Netflix, disponíveis para o cliente final.
A imagem abaixo representa as principais categorias de serviços de computação em nuvem e exemplos de sua utilização em diferentes ferramentas:
Figura 1 – Categorias de serviços de computação em nuvem.
O mercado da computação em nuvem está em uma constante crescente. De acordo com Statista (2024), os gastos globais com serviços de infraestrutura foram de US$13,5 bilhões a mais comparando o 1º trimestre de 2024 com o 1º trimestre de 2023, totalizando um crescimento de 21%.
O gráfico abaixo representa o ranking dos provedores de nuvem com maior receita no 1º Trimestre de 2024, sendo liderado pela Amazon Web Services, seguido pela Microsoft Azure e Google Cloud Platform:
Figura 2 – Ranking de provedores de nuvem.
2.1.1 Características
Conforme NIST –NationalInstituteof Standards and Technology (2011),para um modelo de fornecimento de serviços ser considerado computação em nuvem, é preciso atender a algumas características, sendo elas as seguintes:
– Serviços sob demanda: O usuário pode adquirir seus recursos computacionais conforme sua necessidade a qualquer momento de forma instantânea. Sendo assim, o provedor de nuvem deve permitir que os usuários possam personalizar seus recursos e pagar pelo seu uso, garantindo a alta flexibilidade de suas aplicações.
– Acesso amplo de rede: Os recursos devem estar disponíveis para diferentes dispositivos e mecanismos de acesso, ou seja, possibilitando uma alta disponibilidade dos seus conteúdos de uma maneira confiável e contínua.
– Agrupamento de recursos: Recursos computacionais como armazenamento, processamento e memória serão agrupados e atribuídos de forma dinâmica conforme a demanda de cada usuário, possibilitando a continuidade dos serviços.
– Elasticidade rápida: Os recursos podem ser liberados e provisionados elasticamente, proporcionalmente à demanda. Possibilitando os sistemas em nuvem utilizarem mais recursos em um determinado aumento de demanda, e liberados, em retração dessa demanda tornando-as aplicações escaláveis.
– Serviços mensuráveis: Os sistemas em nuvem controlam a alocação de recursos de forma automática com uma capacidade de medição. Os usos dos recursos podem ser monitorados e controlados de forma transparente tanto para o provedor quanto para o usuário do serviço.
2.1.2 Tipos de Nuvem
Na computação em nuvem, existe uma classificação que leva em consideraçãoa sua implantação, ou seja, a forma de disponibilidade dos serviços no ambiente do provedor. Essa disponibilidade leva em consideração algumas restrições como, por exemplo, acesso a dados sensíveis ou aplicações internas,ou até mesmo ambientes restritos a um público específico. Dentre esses modelos de implantação, podemos citar os três mais comuns que são:
– Nuvem pública: é um modelo de computação em nuvem em que os provedores disponibilizam seus recursos, como armazenamento, máquinas virtuais (VMs) e aplicações, ao público em geral. Alguns provedores disponibilizam esses recursos de forma gratuita, mas alguns são limitados ou sob demanda, permitindo que os clientes paguem apenas pelos serviços e recursos que usam (CÂNDIDO, JÚNIOR, 2022).
– Nuvem privada: oferece um ambiente semelhante à nuvem pública, mas é de uso exclusivo de apenas uma organização e é mantido em uma rede privada. Esse modelo combina muitos benefícios incluindo escalabilidade e autoatendimento, com mais controle e personalização disponíveis a partir de infraestruturas dedicadas (ALVES, 2019).
– Nuvem híbrida: é a combinação das duas infraestruturas privada e pública, permitindo o compartilhamento de dados e aplicações entre elas. Uma organização pode utilizar a nuvem pública para algum pico de demanda que infraestrutura privada não pode atender, ou até mesmo disponibilizar partes de sua aplicação em cada ambiente caso queira uma segurança a mais em dados específicos (MARIANO, SOARES& NETO, 2020).
A figura a seguirilustra algumas características de cada um dos tipos de nuvem abordado:
Figura 3 – Exemplo de tipos de nuvem
2.2 Microsserviços
2.2.1 Definição de Microsserviços
De acordo com Monteiroet al. (2021), microsserviços são uma abordagem arquitetônica para o desenvolvimento de aplicações onde cada função é dividida de forma independente e individual que são executados em forma de processo separado e se comunicam uns com os outros, com isso foi concebido o termo contêineres (docker), sendo uma maneira mais simples e leve de se trabalhar com máquinas virtuais.
2.2.2 Benefícios dos Microsserviços
Uma das vantagens dos microsserviços é a capacidade de desenvolver e implantar serviços de forma independente, o que permite acelerar os ciclos de criação e tornar as aplicações mais resilientes. Além disso, como cada serviço é único, as equipes podem empregar as tecnologias e linguagens de programação mais adequadas para o serviço em questão (MORAES, 2021).
2.2.3 Desvantagens dos Microsserviços
Os microsserviços têm problemas, apesar de seus benefícios. Por exemplo, eles podem aumentar a complexidade porque vários serviços diferentes precisam ser coordenados. Além disso, a latência de rede e a consistência de dados podem se tornar problemas em arquiteturas de microsserviços.
2.3 Virtualização de Aplicativos
2.3.1 Contêineres
Trata-se de uma tecnologia de virtualização que permite empacotar e executar aplicações de forma independente em ambientes isolados permitindo que se comuniquem entre si, possibilitando uma execução mais leve e escalável, utilizando o kernel do sistema operacional hospedeiro e cada contêiner é executado em forma de processo pelo processador (SILVA; SOARES; SERPA, 2020).
2.3.2 Docker
Ainda no trabalho de Monteiro, Cerqueira e Serpa (2021), é definido que Docker trata-se de uma solução que simplifica o gerenciamento de contêineres, possibilitando aos desenvolvedores a criação, implantação e dimensionamento das aplicações de maneira eficiente. O Docker simplifica e acelera o fluxo de trabalho, além de permitir a liberdade de inovar em ferramentas e diferentes ambientes de desenvolvimento.
2.4 Métricas de Desempenho
Uma das maneiras relevantes de garantir a eficácia e a eficiência dos sistemas de comunicação é através da medição de parâmetros das redes de computadores. A AWS, provedora de serviços de nuvem líder de mercado pertencente à empresa Amazon, destaca várias métricas cruciais para avaliar o desempenho de rede, como a latência, tempo de resposta em ms (milissegundos, que se refere a um milésimo de um segundo) e porcentagem da taxa de erro.
2.4.1 Latência
O atraso na comunicação de rede é conhecido como latência e mostra o tempo de atraso que os dados levam para serem transferidos pela rede de um local para o outro. Ou seja, quanto maior o atraso ou espera maior será a latência. Assim, entende-se a latência como sendo o tempo que uma solicitação leva para ser enviada do remetente ao destinatário e respondida (MARIANO; SOARES; NETO, 2020).
2.4.2 Tempo de resposta
O tempo de resposta geralmente mensurado em milissegundos ese refere ao intervalo de tempo necessário que leva para concluir uma conexão entre dois pontos em uma rede de computadores, após receber uma requisição é tempo que o servidor leva para processar e responder. Quanto menor o tempo de resposta, mais eficiente e ágil é a comunicação entre as partes envolvidas na transação, sendo esse um dos principais indicadores em sistemas distribuídos e aplicações web.
2.4.3 Taxa de erro
A taxa de erro refere-se à porcentagem dos pacotes de dados que foram enviados e não obtiveram resposta, representando assim um erro de conexão. Esse valor é utilizado como um indicador da qualidade da rede, e quanto maior a taxa de erro, pior é a confiabilidade da conexão, podendo ser causada por diversos fatores, como congestionamento da rede, interferência no sinal e até mesmo falhas de hardware ou software. Medir e monitorar essa taxa é fundamental para identificar problemas e aperfeiçoar o desempenho da rede.
Considerando o exposto acima, é possível entender que a latência, tempo de resposta e a taxa de erro dos servidores são métricas cruciais para avaliar o desempenho da rede. Ao monitorar e otimizar essas métricas, as organizações podem melhorar a eficiência de suas redes e melhorar a experiência do usuário.
2.5 Provedores de nuvem
2.5.1 Amazon Web Services
Lançada em 2006, foi uma das pioneiras e se tornou a primeira líder em computação em nuvem pública. Ela é referência no âmbito da Inteligência Artificial, além de banco de dados e aprendizado de máquina. Possui uma presença global com mais de 200 serviços de data centers e regiões operacionais em todo o mundo (SILVA, SOARES& SERPA, 2020).
2.5.2 Microsoft Azure
Foi lançada em 2010 oferecendo serviços semelhantes ao da AWS, mas também integra produtos como Office 365 e Dynamics 365.E por isso muitas organizações optam pelos seus serviços por já utilizarem produtos da Microsoft. Conforme Silva, Soares & Serpa (2020), a Azure também oferece uma ampla variedade de serviços, como armazenamento de dados e ferramentas de inteligência artificial.
Quando um novo usuário se cadastra nesses provedores, existe um conjunto de recursos que podem ser utilizados por um período pré-determinado sem gerar custos. O quadro abaixo mostra as especificações das instâncias disponibilizadas para um novo usuário sem gerar custos. Em um provedor de nuvem, uma instância é uma unidade de computação virtualizada que fornece recursos de processamento, memória, armazenamento e rede.
Quadro 1 – Especificações de máquinas disponibilizadas gratuitamente
Provedor de Nuvem | Especificações de Hardware |
AWS | 750 horas por mês de instâncias t2.micro Linux ou Windows, possui 1 vCPU e 1 GB de RAM, 30 GB Armazenamento, 1 GB de snapshots e 100 GB de largura de banda para a Internet. |
Azure | 200U$ para usar de VMs B1s, B2pts v2 (baseadas em Arm) e B2ats v2 (baseadas em AMD) 1vCPU, 10 GB Armazenamento, 100 GB de largura de banda. |
2.6 Trabalhos Relacionados
Nessa seção serão apresentados trabalhos relacionados à proposta abordada por esse trabalho. Esses estudos ajudam a justificar a importância do estudo, demonstrando como ele se diferencia ou complementa as investigações anteriores. A análise desses trabalhos tem como objetivo contextualizar a pesquisa, mostrar como ela se integra ao conhecimento já estabelecido na área, e destacar as contribuições, limitações ou lacunas nas abordagens anteriores. A tabela a seguir apresenta um quadro resumindo as informações dos artigos selecionados para a fundamentação desse trabalho. Na coluna “ASSUNTO” é apresentado o resumo da temática explorada nos artigos.
Quadro 2 – Trabalhos relacionados
TÍTULO | AUTOR | ANO | ASSUNTO |
“Computação em Nuvem: Uma Análise Comparativa das Plataformas Disponibilizadas por Amazon, Google e Microsoft”. | ARAÚJO, Mikael Nilton de. | 2019 | Este trabalho realiza uma análise comparativa das plataformas de computação em nuvem oferecidas pela Amazon, Google e Microsoft, destacando suas características, vantagens e desvantagens. |
“Computação em Nuvem: O Processo de Migração e Utilização da Nuvem por Empresas”. | NASCIMENTO, Lucas Vinicius Silva do; SANTANA, Guilherme Thyerri Aguiar de; ANDRADE, Theyllon Batista de. | 2021 | Este trabalho aborda o processo de migração e utilização da computação em nuvem pelas empresas, destacando os desafios e benefícios associados. |
“Estudo Comparativo entre Cloud Computing e Infraestrutura de Rede Local”. | CHAVES, Bruno Duruteu; CASTRO, Bruno Guilherme Dias de; NASCIMENTO, Leuzimar Júnio Souza. | 2021 | Este trabalho realiza um estudo comparativo entre a computação em nuvem (Cloud Computing) e a infraestrutura de rede local, analisando as diferenças, vantagens e desvantagens de cada uma. |
“Uma análise de desempenho multi-cloud de uma aplicação baseada em microsserviços.” | MORAES, Pedro Augusto Alcântara Ribeiro. | 2022 | Este trabalho propõe uma análise de desempenho de uma aplicação baseada em microsserviços em um ambiente multi-cloud, considerando as comunicações síncronas e assíncronas entre os serviços. |
“A utilização da computação em nuvem como auxílio à escalabilidade e disponibilidade de serviços online.” | FRANÇA, Marlon Tavares; SANTOS, Audrey Teles dos; JESUS, Igor Dias Costa de; TEIXEIRA, Samuel Molendolff; ARAÚJO, Wagner Azis Garcia de; PEREIRA, Luan Diego de Lima. | 2023 | O artigo tem como objetivo conceituar a computação em nuvem e explorar seus benefícios, incluindo a escalabilidade e disponibilidade, de forma a manter a infraestrutura funcionando adequadamente, independentemente da quantidade de acessos simultâneos. |
No trabalho de Araújo (2019) ele examinou e comparou as plataformas de computação em nuvem da Amazon, Google e Microsoft, examinando questões como preços, redes de data centers, desempenho, ferramentas de desenvolvimento, segurança e documentação. Usando informações das próprias empresas e materiais bibliográficos, a pesquisa foi conduzida de forma qualitativa.
No estudo de Nascimento et al. (2021) é discutida as maneiras pelas quais as empresas migram e usam a computação em nuvem, enfatizando a importância de um planejamento bem elaborado para a implementação desses recursos. No estudo de caso utilizado, a redução de custos com hardware e a necessidade de uma boa arquitetura para estruturar ambientes em nuvem são discutidos.
Conforme Chaves et al. (2021) realizaram um estudo comparativo entre cloud computing e infraestrutura de rede local. O estudo examinou as diferenças e os efeitos de ambos os modelos, focando em questões como segurança, custo, escalabilidade e responsabilidade socioambiental. A pesquisa, que envolveu a instalação de redes locais e em nuvem, ajudou a compreender os benefícios e os problemas de cada método de sistema de informação, fornecendo informações pertinentes para a tomada de decisão sobre modelos de infraestrutura.
Em comparação com a comunicação síncrona, a comunicação assíncrona demonstrou ser menos escalável e resiliente, de acordo com Moraes (2022), em sua pesquisa sobre o desempenho de aplicações baseadas em microsserviços em ambientes multi-cloud que é a utilização de mais de uma nuvem pública fornecendo serviços específicos. Os experimentos com a aplicação “e-bank” mostraram que a comunicação assíncrona melhora o tempo de resposta. Isso é particularmente verdadeiro em situações em que há mais acessos simultâneos. Esses achados ajudam muito no desenvolvimento de aplicações distribuídas em nuvem.
Uma tecnologia essencial para aumentar a escalabilidade e a disponibilidade de serviços online é a computação em nuvem. Essa estratégia garante a continuidade e a qualidade dos serviços digitais, de acordo com França et al. (2023). A conteinerização também se destaca como um método importante para otimizar a infraestrutura de nuvem, pois permite a execução e a gestão de aplicações de forma mais eficiente e adaptável.
3 METODOLOGIA
A escolha dos provedores de serviço de nuvem é justificada por Stojanović (2023), onde ele afirma que a AWS e a Microsoft Azure são alguns os principais fornecedores da área e contam com grande parte da parcela de mercado global da computação em nuvem. Em cada uma desses ambientes de nuvem, foram avaliados a latência, tempo de resposta, taxa de erro e utilização de recursos.
Essa pesquisa utilizou uma estrutura organizada em cinco etapas, sendo elas: 1) Revisão da literatura; 2) Definição das ferramentas utilizadas; 3) Coleta de dados; 4) Análise de dados; 5) Resultados.
A imagem a seguir ilustra essa sequência de passos utilizados na metodologia.
Figura 4 –Etapas da pesquisa
3.1 Descrições das etapas
3.1.1 Revisão Literária
O primeiro passo desse trabalho foi realizar uma revisão da literatura sobre microsserviços e computação em nuvem, buscando compreender como se comportam os microsserviços em um ambiente de nuvem computacional. Essa revisão forneceu as bases teóricas necessárias para essa pesquisa, auxiliando na compreensão dos principais problemas, oportunidades, vantagens e desvantagens desses ambientes computacionais.
3.1.2 Ferramentas
Para medir e avaliar o desempenho dos servidores web, utilizamosa ferramenta de teste Apache JMeter para enviar as requisições e uma planilha para armazenar e tabular os dados. O protocolo ICMP, que é usado para enviar mensagens de controle e de erro entre dispositivos em uma rede, é um exemplo de benchmarking (execução de testes padronizados para comparar o desempenho) de rede que nos ajudou avaliar a latência e a estabilidade da conexão em cada provedor. Além disso, as plataformas da Amazon e Microsoft disponibilizam o monitoramento das VMs em tempo real, podendo acompanhar a sua utilização de recursos.
3.1.3 Coleta de dados
Durante a coleta de dados utilizamos o software Apache JMeterpara enviar as requisições HTTP aos servidores, foram realizados uma sequência de testes em diferentes horários e dias para que os dados coletados fossem os mais diversos possíveis. Os tempos de resposta foramutilizados para medir a latência e o tempo de conexão. Além disso, foram monitorados os recursos de hardware das máquinas virtuais para acompanhar o desempenho durante os testes. Os dados obtidos foram registrados em uma planilha, tabulados e mensurados estatisticamente os resultados de cada provedor de nuvem.
3.1.4 Análise dos dados
Com o objetivo de comparar o desempenho entre os provedores, os dados coletados foram organizados e analisados. Para tal comparação, como já apresentado anteriormente, consideramos as métricas latência média, tempo de resposta e taxa de erro. O uso da análise estatística nos ajudou a encontrar padrões e diferenças importantes, possibilitando encontrar valores médios precisos do desempenho de cada provedor de nuvem e fazermos uma comparação entre cada um deles.
3.1.5 Resultados
A última etapa da pesquisa é a apresentação dos resultados, onde foi destacado, depois de análises, o desempenho de cada provedor de nuvem considerado neste trabalho. Esta seção fornece informações úteis que auxiliam o processo de escolha, entre os dois provedores, o melhor para hospedar suas aplicações em cada cenário analisado.
3.1.6 Cenários de teste
Para a aplicação dos testes, dois cenários foram implementados em cada provedor de nuvem, onde no Cenário A uma aplicação web em infraestrutura convencional (monolítica) que se baseia na arquitetura de software onde todas as funcionalidades e componentes são executados como uma única unidade e no Cenário B uma aplicação web configurada em um microsserviço Docker. Na AWS foram criadas duas instâncias do tipo t2.micro e na Azure duas maquinas virtuais do tipo B1s, configurado os dois cenários em cada provedor de nuvem. Com base no trabalho de Chaves et al. (2021), utilizamos como paramento das requisições HTTP as quantidades de 1, 100 e 1.000 requisições por segundo como forma de analisar o comportamento do servidor web. Para isso foi configurado no Apache JMeter a quantidade de usuários virtuais e tempo de inicialização em 1 segundo. Os testes aconteceram em diferentes horários para avaliar o desempenho tanto horários comerciais (das 8:00h às 18:00h), onde há um tráfego mais intenso nos provedores, como em horários não comerciais, onde o tráfego tende a ser menor. No total foram coleta das cinco amostras para chegar a uma média em cada um dos cenários, os testes foram realizados nos períodos da manhã e noite, entre os horários de 09:00 às 12:00 horas e 19:00 às 22:00 horas, durante a primeira semana de outubro de 2024.
As imagens abaixo demonstram as telas de configurações do Apache JMeter como exemplo dos testes que foram realizados.
Figura 5: Tela de configuração grupo de usuários.
A figura 5 representa a tela configuração do Apache JMeter onde foi determinado o tamanho do grupo de usuários, que se refere a quantidade de requisições e o tempo em segundos que foram realizadas.
Já a figura 6 trata da tela de configuração das requisições que foram realizadas, onde é informado o protocolo, método de requisição, IP e porta de conexão. No cenário que realizamos os testes utilizamos o protocolo HTTP, método GET e as requisições foram feitas na porta 80 que corresponde ao protocolo definido.
Figura 6: Tela de configuração das requisições HTTP.
4 RESULTADOS
Com base nos testes aplicados,os resultados obtidos do desempenho de cada servidor foram as seguintes médias:
Quadro 3: Média dos resultados obtidos nos testes em diferentes cenários.
Como as instâncias utilizadas de forma gratuita disponibilizadas pelos provedores de nuvem possuem recursos de hardware limitados, como mostra o Quadro 1, o teste de carga contendo 1.000 requisições por segundo foram os únicos que apresentaram taxa de erro nas requisições. A latência representa o tempo necessário que os dados levaram para trafegar de um ponto ao outro (ida e volta) da requisição, no que se refere ao T.R. (tempo de resposta) ele representa o tempo decorrido entre o servidor receber uma requisição, processar e responder.
Com base nos cenários testados percebemos que a plataforma da AWS possui um desempenho superior em latência e tempo de resposta utilizando microsserviços até 100 requisições por segundo. Porém nos testes com 1000 requisições possui uma taxa de erro elevada, prejudicando o desempenho da aplicação e a experiência do usuário, sugerindo uma instabilidade ou maior taxa de erro sob carga. Contudo em geral percebemos um desempenho superior a plataforma da Azure utilizando microsserviços quando se trata de grande volume de requisições, apresentando uma taxa de erro significativamente inferior aos da AWS. Isso pode ser entendido como robustez em um cenário contendo tráfego mais intenso.
Também é possível acompanhar pela plataforma de gerenciamento das VMs a utilização de seus recursos de hardware. Durante os testes realizados monitoramos a porcentagem de uso da CPU e demonstramos em gráficos de linha o resultado de cada provedor, cada uma com duas máquinas virtuais: uma aplicação monolítica e outra sendo executada na arquitetura de microsserviço Docker.
Figura 7: Porcentagem de uso da CPU das maquinas virtuais AWS.
Como pode ser visto na figura 7, a linha cor azul que representa a máquina virtual utilizando Docker que alcançou o pico de uso da CPU de 6,15% durante os testes de carga. Agora, representada pela linha cor laranja utilizando o servidor webem uma máquina virtual convencional, o pico de uso da CPU ficou em 5,01%.
Figura 8: Porcentagem de uso da CPU dasmáquinas virtuais Azure
Durante os testes de carga a máquina virtual da Azure contendo apenas o servidor web representada no gráfico pela linha de cor azul, manteve a sua porcentagem de uso da CPU abaixo de 1%, como pode ser visto na figura 8.Já utilizando microsserviço em Docker, podemos observar no gráfico representado pela linha de cor rosa chegando a um pico de 1,35% durante os testes.
5 CONCLUSÃO
Os testes de carga conduzidos em diversas configurações e provedores de nuvem forneceram percepções valiosas sobre a performance dos servidores em cenários de grande demanda. Ao comparar os resultados de servidores operando nos provedores AWS e Azure com as configurações de monolítica e microsserviços, notou-se que os microsserviços apresentaram um desempenho consideravelmente superior em situações de maior demanda, se destacando pela menor latência e maior estabilidade. Na AWS, a latência sob carga mais alta foi significativamente superior em comparação ao Azure, particularmente na configuração monolítica. Isso pode indicar que os microsserviços são mais eficazes na gestão de grandes volumes de solicitações.
Em se tratando de consumo de CPU, notou-se que a AWS com configuração do servidor web em um microsserviço alcançou um pico de consumo maior durante que o mesmo servidor web em uma máquina virtual convencional. Já no provedor Azure, o uso de CPU foi menor em ambos os cenários em relação à AWS. E entre os cenários dentro da própria Azure, o servidor web sem contêiner obteve um pico de consumo de CPU inferior à configuração com Docker. Esses resultados indicam que o provedor Microsoft Azure, para os cenários abordados nesse artigo, gerencia de forma mais eficiente dos recursos de CPU, especialmente ao rodar aplicações sem microsserviços.
Em relação à taxa de erro, o Azure demonstrou maior robustez em comparação ao AWS, particularmente no cenário que utilizou os microsserviços, independentemente da quantidade de requisições realizadas. Esse entendimento pode indicar que o provedor Azure apresenta uma maior estabilidade em situações de estresse, apresentando-se uma opção a ser considerada em cenários que necessitam de alta performance e toleram menos falhas.
6 CONSIDERAÇÕES FINAIS
Com base nos resultados obtidos, recomenda-se fortemente a utilização de microsserviços em vez de infraestrutura monolítica para ambientes que exigem alta escalabilidade e uma administração mais eficaz dos recursos sob demanda. Embora o AWS tenha suas vantagens, o Azure demonstrou maior eficiência no uso de CPU e na manutenção de uma taxa de erros reduzida sob cargas elevadas. Para implementações e melhorias futuras de sistemas web, sugere-se a utilização de microsserviços. A escolha do provedor de nuvem deve considerar a eficácia no uso de recursos e a capacidade de lidar com demandas elevadas. O provedor de serviços em nuvem Azure se mostrou mais robusto e com baixa latência em situações com grande quantidade de requisições simultâneas. Contudo, este estudo não tem a pretensão de ser uma análise definitiva. É evidente que avaliações constantes do desempenho dos serviços em nuvem se fazem necessárias, uma vez que as tecnologias e as ofertas de serviços estão em constante evolução.
REFERÊNCIAS
ALVES, Paulo Ricardo. Cloud Computing: cloud computing models. 2019. 34 folhas. Trabalho de Conclusão de Curso (Graduação em Sistemas de Informação) – Faculdade Pitágoras de Divinópolis, Divinópolis, 2019.
ARAÚJO, M. N. DE. Computação em nuvem: uma análise comparativa das plataformas disponibilizadas por Amazon, Google e Microsoft.memoria.ifrn.edu.br, 10 maio 2019.
CANDIDO, A. C.; ARAÚJO JÚNIOR, R. H. DE … Potencialidades do desenvolvimento de cloud computing no âmbito da gestão da informação. Perspectivas em Ciência da Informação, v. 27, n. 1, p. 57–80, jan. 2022.
CHAVES, B. D.; CASTRO, B. G. D. DE; NASCIMENTO, L. J. S. Estudo comparativo entre cloud computing e infraestrutura de rede local. dspace.uniceplac.edu.br, 16 set. 2021.
DESINA, G. C. Evaluating The Impact Of Cloud-Based Microservices Architecture On Application Performance.CSCI 200 Final Paper. Disponível em: https://arxiv.org/pdf/2305.15438. Acessado em 20 de maio de 2024.
FRANÇA, M. T. et al. A utilização da computação em nuvem como auxílio à escalabilidade e disponibilidade de serviços online.Brazilian Journal of Production Engineering, v. 9, n. 2, p. 79–87, 22 maio 2023.
MARIANO, Diego C B.; SOARES, Juliane A.; NETO, Roque M.; et al. Infraestrutura de TI. Grupo A, 2020. E-book. ISBN 9786556900209. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9786556900209/. Acessado em de 25 junho de 2024.
MONTEIRO, Eduarda R.; CERQUEIRA, Marcos V B.; SERPA, Matheus da S.; et al. DevOps. Grupo A, 2021. E-book. ISBN 9786556901725. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9786556901725/. Acessado em 25 de junho de 2024.
MORAES, Pedro Augusto Alcântara Ribeiro. Uma análise de desempenho multi-cloud de uma aplicação baseada em microsserviços. Trabalho de Conclusão de Curso (Graduação) – Universidade Federal do Piauí, Bacharelado em Sistemas de Informação, Picos-PI, 2021.
NASCIMENTO, Lucas Vinicius Silva do; SANTANA, Guilherme Thyerri Aguiar de; ANDRADE, Theyllon Batista de. Computação em nuvem: o processo de migração e utilização da nuvem por empresas. Trabalho de Conclusão de Curso (Graduação) – Centro Universitário Brasileiro – UNIBRA. Tecnólogoem Redes de Computadores, 2021. 35 p.
MELL, P.; GRANCE, T. The NIST Definition of Cloud Computing Recommendations of the National Institute of Standards and Technology.[s.l.] NIST, set. 2011. Disponível em: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-145.pdf. Acessadoem31 de maio de 2024.
PICOTO, W. N.; CRESPO, N. F.; CARVALHO, F. K. The influence of the technology-organization-environment framework and strategic orientation on cloud computing use, enterprise mobility, and performance.Review of Business Management, [S. l.], v. 23, n. 2, p. 278–300, 2021. DOI: 10.7819/rbgn.v23i2.4105. Disponível em: https://rbgn.fecap.br/RBGN/article/view/4105. Acessado em25 de junho de 2024.
RICHTER, F.Infographic: Amazon Dominates Public Cloud Market.Disponível em:https://www.statista.com/chart/18819/worldwide-market-share-of-leading-cloud-infrastructure-service-providers/. Acessado em 27 de junho 2024.
SENGUPTA, Satadal; KIM, Hyojoon; REXFORD, Jennifer. Continuous in-network round-trip time monitoring. In: Proceedings of the ACM SIGCOMM 2022 Conference. New York, NY, USA: Association for Computing Machinery, 2022. p. 473–485. ISBN: 9781450394208. DOI: 10.1145/3544216.3544222.
SILVA, Fernanda R.; SOARES, Juliane A.; SERPA, Matheus da S.; et al. Cloud Computing. Grupo A, 2020. E-book. ISBN 9786556900193. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9786556900193/. Acessado em 25 de junho de 2024.
STOJANOVIĆ, Filip. Computação em nuvem em 2024 e os 10 principais fornecedores de serviços em nuvem. 2023. Disponível em: https://tridenstechnology.com/pt/fornecedores-de-servicos-em-nuvem-2/. Acessado em14 de maio de 2024.
1Discente do Curso Superior de Sistemas de Informação da Universidade Estadual do Tocantins, Campus Palmas e-mail: thiagoaraujo@untins.br
2Docente do Curso Superior de Sistemas de Informação da Universidade Estadual do Tocantins, Campus Palmas. Mestre em Modelagem Computacional de Sistemas (PPGMCS/UFT). e-mail: napoleao.pr@unitins.br