24 de julho de 2026
Uma Metodologia Experimental para o Dimensionamento de Recursos em Aplicações Web
Cesar Gabriel Araujo Lourenço Rodrigues; Everton Gomede
DOI: 10.22167/2675-6528-202600675
Artigo elaborado pela ferramenta ResumeAI, solução de inteligência artificial desenvolvida pelo Instituto Pecege voltada à síntese e redação.
Resumo
A definição adequada de recursos computacionais para aplicações web escaláveis em ambientes de Computação em Nuvem tornou-se um desafio crítico, frequentemente resultando em desperdício de infraestrutura ou degradação de desempenho. Investigou-se como testes de carga podem apoiar, de forma preditiva, o provisionamento de aplicações web antes da entrada em produção. Para isso, conduziu-se um estudo experimental quantitativo em uma aplicação desenvolvida em Java Spring Boot, utilizando banco de dados MongoDB e execução em contêineres Docker. Realizaram-se testes de carga em quatro cenários distintos, variando progressivamente os recursos alocados à aplicação e ao banco de dados, tanto em ambiente local quanto em nuvem. Os resultados revelaram que o principal gargalo do sistema estava no banco de dados, e não na aplicação, comprometendo a latência nos cenários iniciais. Após ajustes sucessivos no provisionamento, o terceiro cenário demonstrou desempenho estável, com baixa latência e capacidade de sustentar a carga prevista, achado posteriormente validado em ambiente de nuvem. Concluiu-se que a metodologia proposta foi eficaz para identificar limites operacionais e apoiar o provisionamento preditivo de recursos, contribuindo para decisões mais precisas, redução de incertezas e um planejamento de infraestrutura aprimorado.
Palavras-chave: Computação em nuvem; Desempenho; Provisionamento; Sistemas distribuídos; Teste de carga.
1. Introdução
O setor tecnológico tem experimentado um crescimento contínuo, impulsionando a demanda por novos produtos de software. Essa dinâmica estabelece a rapidez na entrega e a capacidade de adaptação como requisitos fundamentais para as organizações modernas (Dima; Maassen, 2018). Nesse cenário, a Computação em Nuvem consolidou-se como uma infraestrutura estratégica para o desenvolvimento e a operação de aplicações, oferecendo elasticidade e escalabilidade no uso de recursos computacionais (Armbrust et al., 2010). Dentre os modelos de serviço disponíveis, a Infraestrutura como Serviço (IaaS) é particularmente relevante, pois permite o ajuste sob demanda de recursos como CPU, memória, armazenamento e largura de banda, conforme as necessidades específicas de cada sistema (Suleiman et al., 2012).
Paralelamente, a adoção de orquestradores de contêineres e mecanismos de autoescalonamento ampliou a capacidade de automatizar o gerenciamento da infraestrutura. Embora essas tecnologias ofereçam ganhos relevantes de flexibilidade e eficiência operacional, sua utilização não elimina a necessidade de compreender previamente a demanda computacional real da aplicação. Na prática, o provisionamento de recursos, ou seja, a alocação adequada de capacidade computacional, ainda é frequentemente baseado em estimativas empíricas ou configurações genéricas. Essa abordagem carece de validação experimental suficiente, o que pode levar a decisões subótimas.
A complexidade do provisionamento em ambientes de nuvem é acentuada pela variabilidade das cargas de trabalho e pela dificuldade em prever o comportamento do sistema sob diferentes níveis de uso (Ardagna et al., 2012). Um provisionamento inadequado pode resultar em duas consequências negativas: o superprovisionamento, que gera desperdício de infraestrutura e aumento dos custos operacionais (Storment; Fuller, 2019; Pfitscher et al., 2013), e o subprovisionamento, que leva à degradação do desempenho, falhas de serviço e insatisfação dos usuários finais (Pfitscher et al., 2013; Albychev et al., 2024). A ausência de uma base objetiva para a definição da capacidade necessária é, portanto, um problema central que afeta a eficiência e a confiabilidade das aplicações.
Diante dessa problemática, os testes de carga apresentam-se como uma alternativa promissora para apoiar decisões de infraestrutura de forma mais técnica e previsível. Por permitirem a simulação controlada de interações de usuários, esses testes possibilitam identificar gargalos e avaliar atributos como desempenho, escalabilidade e disponibilidade da aplicação (Dave; Bhanushali, 2024). Além disso, fornecem métricas diretamente relacionadas ao consumo de recursos, como uso de CPU, memória e tempos de resposta, o que os torna úteis para estimar a capacidade operacional do sistema antes de sua implantação em produção.
Entre as técnicas de avaliação de desempenho, o teste de carga destaca-se por analisar o comportamento da aplicação sob níveis crescentes de utilização, desde condições normais até cenários de pico. Sua relevância decorre do fato de que problemas de latência e indisponibilidade podem gerar impactos significativos, incluindo perdas financeiras, comprometimento da experiência do usuário e abandono do serviço. Nesse sentido, a aplicação de testes de carga em ambiente controlado pode contribuir para transformar o provisionamento de infraestrutura de uma prática baseada em “palpite” para uma prática orientada por evidências.
Com base nessa perspectiva, este trabalho propõe uma metodologia experimental para integrar testes de carga ao processo de definição de infraestrutura em aplicações web. O problema central da pesquisa reside na dificuldade de determinar, com precisão, a quantidade adequada de recursos computacionais, o que frequentemente conduz a cenários de subprovisionamento ou superprovisionamento. Parte-se da hipótese de que a execução de testes de carga em ambiente controlado, capaz de simular condições próximas às reais, permite identificar previamente o provisionamento mais adequado antes da entrada do sistema em produção.
A contribuição desta pesquisa reside em propor uma abordagem que não substitui os mecanismos modernos de orquestração e escalabilidade automática, mas os complementa por meio de uma base inicial de provisionamento mais precisa, previsível e tecnicamente embasada. Assim, o objetivo deste estudo é oferecer maior clareza aos times técnicos sobre o consumo real de recursos da aplicação em diferentes cenários de carga, apoiando decisões mais seguras e fundamentadas no planejamento da infraestrutura.
2. Material e Métodos
A presente pesquisa caracterizou-se como experimental, com abordagem quantitativa e objetivo explicativo, conforme a classificação proposta por Gil (2002; 2017). O delineamento metodológico configurou-se como um experimento controlado, no qual variáveis independentes, como limites de CPU, memória, número de threads e carga de requisições, foram deliberadamente manipuladas. O propósito foi observar seus efeitos sobre variáveis dependentes, como latência, taxa de requisições e utilização de recursos computacionais.
Sob a ótica da natureza dos dados, a investigação adotou uma abordagem quantitativa, tratando numericamente os dados obtidos. Isso possibilitou a identificação de relações entre variáveis e a mensuração objetiva do desempenho do sistema (Turrioni; Mello, 2012; Godoy, 1995). A pesquisa buscou identificar os fatores que determinam o comportamento do sistema sob diferentes condições de carga, estabelecendo relações de causa e efeito entre o provisionamento de recursos e o desempenho observado.
O objeto central da experimentação consistiu em uma aplicação web desenvolvida em Java 21, utilizando o framework Spring Boot (versão 3.5.7). A aplicação foi projetada para simular um serviço de transações financeiras, disponibilizando endpoints para operações de débito, crédito e transferência entre carteiras internas. O foco do estudo concentrou-se no comportamento da aplicação e no consumo de recursos quando submetida a diferentes níveis de carga.
Para a persistência dos dados gerados durante os testes, utilizou-se o banco de dados MongoDB (versão 8.0). Nos experimentos iniciais, o banco foi executado em contêiner Docker na mesma máquina do pesquisador, visando reduzir a latência de comunicação. Em etapas posteriores, o banco foi provisionado no MongoDB Atlas, um serviço de banco de dados em nuvem (DBaaS), para avaliar o comportamento da aplicação em um ambiente mais próximo de produção.
A execução dos experimentos baseou-se no uso de contêineres Docker (versão 27.3.1), tecnologia adotada para garantir padronização e reprodutibilidade entre os diferentes cenários avaliados (Merkel, 2014). O Docker permitiu o isolamento da aplicação, do banco de dados e das ferramentas de observabilidade e monitoramento, além de possibilitar o controle direto dos recursos computacionais disponíveis para cada componente (Paraiso et al., 2016).
O provisionamento da aplicação foi configurado de forma controlada, limitando o contêiner a, no máximo, 1 CPU, 512 MiB de memória e 100 “threads” ativas. De forma semelhante, o contêiner do MongoDB, nos testes locais, também foi configurado com limites de até 1 CPU e 512 MiB de memória, garantindo consistência entre os componentes e permitindo a análise comparativa dos resultados.
Os experimentos foram conduzidos em dois ambientes distintos: um ambiente local controlado e um ambiente em nuvem. Para o ambiente em nuvem, a aplicação foi provisionada em uma instância de computação AWS EC2 do tipo t3.micro, configurada com 2 CPUs e 1 GB de memória. O banco de dados foi provisionado em um cluster M50 no MongoDB Atlas, configurado com 8 CPUs e 10 GB de memória. Ambos os serviços foram alocados na mesma região (Norte da Virgínia, Estados Unidos – us-east-1) para reduzir a latência de comunicação. A arquitetura em nuvem foi estruturada dentro de uma Virtual Private Cloud (VPC).
Para a simulação de tráfego e usuários virtuais, utilizou-se a ferramenta Grafana k6, que permite a criação de testes de carga por meio de scripts em JavaScript (Grafana, 2026). As métricas internas da aplicação, como volume de requisições HTTP e tempos de resposta, foram coletadas pela biblioteca Micrometer Registry Prometheus 1.16.0, integrada ao Spring Boot. Para o monitoramento do consumo de recursos em nível de contêiner, empregou-se o cAdvisor (Container Advisor), integrado ao Prometheus (Nguyen et al., 2020).
O monitoramento do hardware e do sistema operacional da instância EC2 foi realizado com o Node Exporter (Darwesh et al., 2023). O Prometheus (versão 3.7.2) atuou como coletor central, armazenando os dados do Node Exporter e do Micrometer em um banco de dados de série temporal. Para a visualização e análise, utilizou-se o Grafana, que unificou dados de múltiplas fontes em dashboards dinâmicos (Grafana, 2025).
Os experimentos foram estruturados em quatro cenários distintos, variando progressivamente os recursos alocados à aplicação e ao banco de dados. Inicialmente, definiram-se premissas de negócio e indicadores de nível de serviço (SLA/SLO) para estabelecer critérios mensuráveis de avaliação de desempenho, como tempo de resposta aceitável (menor que 1 segundo) e taxa de erros aceitável (5%). Premissas de infraestrutura, como uso de CPU (60% a 80%) e memória (até 70%), também foram estabelecidas.
Um script de teste de carga foi desenvolvido utilizando a ferramenta k6, simulando o comportamento de usuários em diferentes níveis de intensidade. O teste foi estruturado em fases de aquecimento, carga estável, pico e redução de carga, utilizando o executor “constant-arrival-rate” para controlar a taxa de requisições por segundo. Critérios de aceitação (“thresholds”) foram definidos no k6 para validar automaticamente os resultados em relação aos limites de tempo de resposta e taxa de erro.
A orquestração automatizada dos cenários foi realizada por um algoritmo em Python, denominado `run-tests.py`, disponibilizado em repositório público. Este script foi responsável pela inicialização dos contêineres, carregamento de parâmetros de infraestrutura, limpeza da base de dados MongoDB antes de cada execução, carga de dados iniciais, validação de disponibilidade (health check), execução do script de teste de carga e encerramento/limpeza dos contêineres.
Quanto às técnicas de análise de dados, empregou-se a observação mecânica, com tratamento numérico dos dados obtidos. Para as principais variáveis dependentes, como latência (P95 e P99), taxa de requisições por segundo (RPS) e consumo de CPU e memória, calcularam-se medidas de tendência central e dispersão, incluindo média, desvio padrão e valores mínimo e máximo para cada cenário. A Lei de Little foi aplicada para estimar a concorrência média no sistema durante o pico de carga.
3. Resultados e Discussão
A investigação experimental teve como propósito primordial avaliar o desempenho e a capacidade de carga de uma aplicação web desenvolvida em Java Spring Boot, submetida a diferentes configurações de provisionamento de recursos. Para tanto, foram aplicadas ferramentas e métricas de teste de carga em quatro cenários distintos, conforme detalhado na seção de Materiais e Métodos. Cada cenário foi concebido com base em premissas de negócio e estimativas de uso, simulando condições operacionais realistas. A metodologia adotada concentrou-se exclusivamente na variação do provisionamento de recursos, sem alterar a lógica da aplicação, visando identificar a configuração mais adequada para suportar a carga proposta. A confiabilidade dos resultados foi assegurada pela execução de cinco testes independentes por cenário, com a análise dos dados fundamentada em estatística descritiva, permitindo uma avaliação quantitativa do comportamento do sistema.
As métricas centrais analisadas incluíram o uso de CPU, interpretado em ambientes multi-core onde valores acima de 100% indicam a utilização agregada de múltiplos núcleos, e o consumo de memória, mensurado em mebibytes (MiB) para refletir a alocação real. A latência foi avaliada pelos percentis P95 e P99, obtidos da ferramenta de teste de carga k6, representando os tempos máximos de resposta para 95% e 99% das requisições, respectivamente. Adicionalmente, foram monitoradas a taxa de requisições por segundo (RPS), que quantifica o volume de carga, e a quantidade de “threads” em uso, indicando o nível de concorrência interna da aplicação. A análise conjunta dessas métricas permitiu uma compreensão abrangente do comportamento do sistema e sua capacidade de resposta sob diversas condições de carga, fornecendo uma base sólida para as interpretações subsequentes.
Primeiro cenário
O primeiro cenário consistiu na execução do teste de carga com a aplicação e o banco de dados configurados com recursos computacionais fixos. A aplicação foi provisionada com 1,0 CPU e 512 MiB de memória, enquanto o banco de dados MongoDB, executado localmente, também recebeu 1,0 CPU e 512 MiB de memória. Observou-se que a utilização de CPU do contêiner da aplicação permaneceu abaixo do esperado, com uma média aproximada de 10%, um pico máximo de 40,34% e posterior estabilização entre 8% e 10%. Esse comportamento inicial, com um pico de uso de CPU, foi associado ao processo de “warm-up” da Java Virtual Machine (JVM), um fenômeno conhecido na literatura (Jantz; Kulkarni, 2013), onde a aplicação passa por otimização dinâmica e carregamento de classes ao ser reiniciada.
Em contraste, o contêiner do MongoDB atingiu 100% de utilização de CPU, indicando saturação completa dos recursos alocados. Essa saturação do banco de dados correlacionou-se diretamente com um aumento significativo na latência da aplicação. A latência P95 evoluiu para uma média de 14.040,4 milissegundos, enquanto a latência P99 alcançou 20.652,0 milissegundos. Esses valores excederam drasticamente o tempo de resposta aceitável de menos de 1 segundo, estabelecido como requisito de desempenho. A elevação da latência ocorreu simultaneamente ao crescimento da utilização de CPU do MongoDB, sugerindo que o banco de dados era o principal gargalo do sistema, conforme o conceito de bottleneck em sistemas computacionais.
A baixa utilização de CPU da aplicação, combinada com a saturação do banco de dados, resultou em um aumento substancial no tempo de processamento das requisições. Isso levou ao acúmulo de requisições em fila, aguardando execução por “threads” disponíveis, e o número de “threads” ativas atingiu seu limite, evidenciando a saturação do sistema. Tal comportamento está em consonância com estudos sobre sistemas OLTP, que demonstram como a contenção interna em sistemas gerenciadores de banco de dados pode limitar significativamente a escalabilidade sob alta carga (Pandis, 2009). Concluiu-se, portanto, que o provisionamento adotado no primeiro cenário foi inadequado para suportar o volume de requisições proposto, falhando em atender aos requisitos de desempenho esperados.
Segundo cenário
O segundo cenário foi configurado a partir da análise dos resultados do primeiro, que apontaram o banco de dados como o principal gargalo. Para abordar essa limitação, o provisionamento de CPUs do contêiner do MongoDB foi aumentado em 300%, passando de 1,0 para 4,0 CPUs, enquanto o provisionamento da aplicação permaneceu inalterado. A análise do uso de CPU da aplicação revelou um comportamento semelhante ao cenário anterior, com um pico inicial associado ao processo de “warm-up” da JVM, seguido por uma estabilização em níveis reduzidos, com média próxima de 10% e picos em torno de 43%. O consumo de memória da aplicação manteve-se dentro dos limites adequados, sem indícios de saturação, conforme esperado.
Apesar do aumento significativo nos recursos do banco de dados, o uso de CPU do contêiner do MongoDB atingiu 400%, indicando a saturação total das 4 CPUs provisionadas. Esse resultado demonstrou que, mesmo com um incremento substancial de recursos, o banco de dados ainda se configurava como o principal limitador de desempenho. Observou-se um aumento na taxa de requisições por segundo (RPS), que atingiu aproximadamente 125 requisições por segundo no pico do teste. No entanto, a latência P95, embora reduzida para uma média de 177,0 milissegundos, apresentou um desvio padrão elevado de 205,92 milissegundos, com valores variando entre 53,0 milissegundos e 531,0 milissegundos, indicando alta variabilidade nas respostas do sistema.
A latência P99 demonstrou um comportamento ainda mais crítico, com uma média de 2.644,0 milissegundos e picos de até 6.372,0 milissegundos. Esses resultados indicaram que, embora uma parte das requisições tenha sido atendida dentro de tempos aceitáveis, o sistema apresentou degradações severas sob determinadas condições de carga. A correlação entre o aumento da taxa de requisições, o crescimento do número de “threads” em uso e a elevação da latência evidenciou a formação de filas de processamento, refletindo um sistema operando próximo ao limite de sua capacidade. A aplicação da Lei de Little (L = λ × W) com a taxa de chegada de 125 requisições por segundo e a latência P99 média de 2,644 segundos resultou em aproximadamente 330,5 requisições simultâneas em processamento ou aguardando atendimento. Isso reforçou que o aumento da capacidade do banco de dados ainda não foi suficiente para atender aos requisitos de desempenho estabelecidos, especialmente o tempo de resposta inferior a 1 segundo.
Terceiro cenário
No terceiro cenário, a abordagem foi aprimorada com um novo aumento no provisionamento do contêiner do MongoDB, elevando o limite de CPU de 4,0 para 5,0 CPUs, um incremento de 25%. Adicionalmente, o limite máximo de “threads” da aplicação foi reduzido de 100 para 50, uma vez que a totalidade das threads alocadas no cenário anterior não foi utilizada. O provisionamento da aplicação referente à CPU e à memória permaneceu inalterado. A análise do uso de CPU da aplicação indicou um comportamento inicial de “warm-up” da JVM, similar aos cenários anteriores, mas com um aumento na média de utilização, que passou a ser de 43,48%, refletindo uma maior atividade da aplicação no processamento das requisições.
A análise do uso de CPU do contêiner do MongoDB revelou valores médios elevados de 213%, com variação entre 185% e 229%, mas, diferentemente dos cenários anteriores, não houve saturação contínua dos recursos. Isso indicou que o banco de dados operou com uma margem de capacidade, absorvendo a carga de forma estável e sem a formação de gargalos. Em relação ao desempenho, observou-se uma redução significativa da latência. A latência P95 apresentou uma média de 53,8 milissegundos, com um desvio padrão baixo de apenas 1,79 milissegundos, variando entre 52,0 milissegundos e 56,0 milissegundos. Complementarmente, a latência P99 manteve-se em média de 103,0 milissegundos, também com baixa variabilidade.
Esses resultados demonstraram não apenas uma redução expressiva no tempo de resposta, mas também uma notável estabilidade do sistema sob carga, mantendo-se consistentemente abaixo do limite de 1 segundo estabelecido como requisito. A taxa de requisições por segundo atingiu o valor esperado, com um pico de aproximadamente 125 requisições por segundo, confirmando que o sistema foi capaz de sustentar o throughput previsto sem degradação de desempenho. Verificou-se também uma redução expressiva no número de “threads” utilizadas pela aplicação, com um pico de aproximadamente 7 “threads” e uma média em torno de 4, apesar da disponibilidade de até 50 threads. Esse comportamento indicou que o tempo de processamento das requisições foi otimizado, diminuindo a necessidade de concorrência elevada para manter o throughput do sistema. Com base nesses indicadores, o provisionamento adotado neste cenário mostrou-se adequado para suportar a carga proposta, atendendo aos requisitos de tempo de resposta e mantendo a estabilidade.
Quarto cenário
Após a identificação do provisionamento adequado em ambiente local, o quarto cenário buscou validar essa configuração em um ambiente mais próximo de produção, utilizando serviços em nuvem. Para isso, foi provisionado um cluster M50 no MongoDB Atlas, configurado com 8 CPUs e 10 GB de memória, e uma instância EC2 do tipo t3.micro para a aplicação, com 2 CPUs e 1 GB de memória. Embora essas configurações excedessem ligeiramente os requisitos identificados nos experimentos locais, representavam as opções mais próximas disponíveis na plataforma. A aplicação foi executada em contêiner Docker dentro da instância EC2, sem limitação explícita de recursos no nível do contêiner, permitindo o uso total dos recursos disponíveis no servidor.
A coleta de métricas foi realizada com cAdvisor para o contêiner e Node Exporter para a instância EC2, ambos integrados ao Prometheus e Grafana. Os resultados indicaram que o uso de CPU do contêiner da aplicação atingiu aproximadamente 45% de um total de 200% (equivalente a 2 CPUs), enquanto a instância EC2 apresentou um uso médio de 17%, com picos de até 22,7%. O consumo de memória permaneceu consistente com os cenários anteriores, atingindo aproximadamente 303 MiB no pico. O número máximo de threads do servidor Tomcat foi reduzido de 50 para 25, com baixa utilização desse recurso, média de aproximadamente 2 “threads” ativas e pico de 6 durante toda a execução do teste. Esse comportamento está diretamente relacionado à estabilidade do sistema e à manutenção do throughput, sem necessidade de aumento de concorrência interna.
A análise de desempenho demonstrou que a latência P95 apresentou média de 236,0 milissegundos, com desvio padrão reduzido de 3,81 milissegundos, variando entre 232,0 milissegundos e 240,0 milissegundos. A latência P99, por sua vez, apresentou média de 312,4 milissegundos, mantendo baixa variabilidade. Embora esses tempos de resposta fossem mais elevados que no ambiente local, devido à latência de rede entre a instância EC2 e o cluster MongoDB Atlas, o sistema manteve alta previsibilidade e estabilidade, permanecendo dentro do limite estabelecido de 1 segundo. Devido a limitações de integração, as métricas do MongoDB Atlas foram coletadas diretamente da plataforma, indicando que o consumo de CPU do banco de dados permaneceu significativamente abaixo do limite disponível, mesmo em condições de pico, com valores médios próximos de 180% para user e 9% para kernel (MongoDB, Inc., 2026).
A aplicação da Lei de Little para estimar a concorrência média no sistema durante o pico de carga, considerando a taxa de chegada de 125 requisições por segundo e a latência P99 média de 236,0 milissegundos (0,236 segundos), resultou em aproximadamente 29,5 requisições simultâneas em processamento. Essa redução significativa em comparação ao segundo cenário, que estimou cerca de 330,5 requisições simultâneas, evidencia o impacto direto da latência na quantidade de requisições em processamento, reforçando a relação entre tempo de resposta e pressão sobre os recursos do sistema. Concluiu-se que o ambiente provisionado em nuvem apresentou comportamento consistente com os resultados obtidos localmente, validando a metodologia experimental proposta e demonstrando capacidade de atender à carga especificada dentro dos limites operacionais adequados.
Os resultados obtidos corroboram a literatura existente, que aponta a eficácia dos testes de carga na identificação de limitações de hardware e software (Dave; Bhanushali, 2024). A pesquisa confirmou que a saturação ocorreu predominantemente no banco de dados e não na aplicação, evidenciando que o desempenho não está necessariamente limitado à aplicação, mas pode ser significativamente impactado por componentes externos. A análise demonstrou que o subprovisionamento compromete diretamente o desempenho do sistema, elevando a latência e reduzindo a capacidade de processamento das requisições, um comportamento também observado por Suryadevara e Ali (2020), que destacam como o aumento da concorrência pode elevar significativamente a latência quando os limites computacionais são atingidos.
A metodologia proposta, que integra testes de carga em ambiente controlado de pré-produção com finalidade preditiva, difere da prática comum de aplicar esses testes em sistemas já em operação. Essa abordagem permitiu identificar, de forma objetiva, os pontos de saturação do sistema e dimensionar recursos de forma mais precisa, reduzindo a dependência de estimativas empíricas antes da entrada em produção. A validação em ambiente de nuvem, embora influenciada pela latência de rede entre os ambientes, demonstrou que o sistema manteve estabilidade e previsibilidade, confirmando a robustez da estratégia de provisionamento identificada. Isso ressalta que o tempo de resposta em nuvem pode ser impactado por fatores de comunicação, não apenas pela capacidade de processamento (Dave; Bhanushali, 2024; Suryadevara; Ali, 2020).
Apesar da eficácia da metodologia para a previsão de provisionamento, a pesquisa apresenta algumas limitações. O objeto de estudo foi desenvolvido em um contexto simplificado, com regras de negócio e indicadores de nível de serviço fictícios, o que exige cautela na extrapolação direta dos resultados quantitativos para sistemas reais. A metodologia em si, e não os valores específicos, é o principal elemento passível de generalização. Adicionalmente, a validação em ambiente de nuvem foi limitada por restrições operacionais e financeiras, como os custos elevados do cluster M50 do MongoDB Atlas, que restringiram a ampliação dos cenários testados e a duração das execuções. Houve também uma limitação técnica na coleta de métricas em ambiente de nuvem, com a impossibilidade de integração direta do MongoDB Atlas com o Prometheus, dificultando a correlação temporal unificada entre métricas de banco de dados, latência e taxa de requisições.
Em síntese, a pesquisa demonstrou que a aplicação de testes de carga em um ambiente controlado de pré-produção é uma ferramenta eficaz para identificar gargalos e determinar o provisionamento adequado de recursos computacionais. A metodologia proposta permitiu transformar o processo de definição de infraestrutura de uma prática baseada em estimativas para uma abordagem orientada por evidências, oferecendo maior clareza aos times técnicos sobre o consumo real de recursos da aplicação em diferentes cenários de carga. Isso contribui para decisões mais seguras e fundamentadas no planejamento da infraestrutura, reduzindo incertezas e otimizando o uso de recursos em ambientes de nuvem.
4. Conclusão
O estudo buscou oferecer maior clareza aos times técnicos sobre o consumo real de recursos de aplicações web em diferentes cenários de carga, apoiando decisões mais seguras e fundamentadas no planejamento da infraestrutura. Verificou-se que o subprovisionamento de recursos comprometeu diretamente o desempenho do sistema, elevando a latência e reduzindo a capacidade de processamento das requisições. A análise experimental identificou que o principal gargalo esteve associado ao banco de dados, e não à aplicação. Após ajustes progressivos no provisionamento, observou-se que o terceiro cenário demonstrou desempenho estável, com baixa latência e capacidade de sustentar a carga prevista, achado posteriormente validado em ambiente de nuvem. A metodologia proposta, que integra testes de carga em ambiente controlado de pré-produção com finalidade preditiva, mostrou-se eficaz para identificar limites operacionais e dimensionar recursos de forma precisa. Essa abordagem contribui para transformar o processo de definição de infraestrutura de uma prática baseada em estimativas empíricas para uma abordagem orientada por evidências, oferecendo uma base inicial de provisionamento mais precisa, previsível e tecnicamente embasada.
Apesar da eficácia da metodologia para a previsão de provisionamento, a pesquisa apresentou algumas limitações. O objeto de estudo foi desenvolvido em um contexto simplificado, com regras de negócio e indicadores de nível de serviço fictícios, o que exige cautela na extrapolação direta dos resultados quantitativos para sistemas reais, sendo a metodologia o principal elemento generalizável. Adicionalmente, a validação em ambiente de nuvem foi limitada por restrições operacionais e financeiras, como os custos elevados do cluster M50 do MongoDB Atlas, que restringiram a ampliação dos cenários testados e a duração das execuções. Houve também uma limitação técnica na coleta de métricas em ambiente de nuvem, com a impossibilidade de integração direta do MongoDB Atlas com o Prometheus, dificultando a correlação temporal unificada entre métricas de banco de dados, latência e taxa de requisições. Como continuidade deste trabalho, sugere-se a aplicação da metodologia em sistemas mais complexos, que envolvam múltiplas camadas de comunicação e maior diversidade de componentes. Recomenda-se, ainda, a investigação de estratégias de escalabilidade, utilizando a mesma abordagem experimental, com o objetivo de identificar os mecanismos mais eficientes de adaptação à variação de carga.
Referências Bibliográficas
Ardagna, D.; Panicucci, B.; Passacantando, M. 2021. Generalized nash equilibria for the service provisioning problem in cloud systems. IEEE Transactions on Services Computing 6(4): 429-442.
Armbrust, M.; Fox, A.; Griffith, R.; Joseph, A.D.; Katz, R.; Konwinski, A.; Lee, G.; Patterson, D.; Rabkin, A.; Stoica, I.; Zaharia, M. 2010. A view of cloud computing. Communications of the ACM 53(4): 50-58.
Dima, A.M.; Maassen, M.A. 2018. From waterfall to agile software: development models in the IT sector, 2006 to 2018. Impacts on company management. Journal of International Studies 11(2): 1254-1261.
Pfitscher,
Storment, J.R.; Fuller, M. 2019. Cloud FinOps: Collaborative, Real-Time Cloud Financial Management. 1 versão. O’Reilly, Gravenstein Highway, Califórnia, EUA.
Suleiman, B. [et al. – listar demais autores se houver]. 2012. On understanding the economics and elasticity challenges of deploying business applications on public cloud infrastructure. Journal of Internet Services and Applications 3(2): 173-193.
Artigo oriundo de Trabalho de Conclusão de Curso da Especialização em Engenharia de Software do MBA USP/Esalq
Para saber mais sobre o curso, clique aqui e acesse a plataforma MBX Academy

