RAPHAEL VASCONCELLOS GUIMARÃES 1 ARQUITETURA DE SERVIÇOS WEB DE ALTO DESEMPENHO COM NODE.JS E MONGODB Projeto de Trabalho de Conclusão de Curso, da Faculdade de Ciências Exatas e Tecnológicas do Centro Universitário Newton Paiva, do Curso de Bacharelado em Sistemas de Informação, sob a orientação do professor Tarley Lana. BELO HORIZONTE 2019/2 1 Aluno do curso de Sistemas de Informação no Centro Universitário Newton Paiva ([email protected]). SUMÁRIO 1. INTRODUÇÃO .................................................................................................................... 2 2. OBJETIVO ............................................................................................................................ 3 3. JUSTIFICATIVA .................................................................................................................. 4 4. ORGANIZAÇÃO DO ARTIGO ........................................................................................... 5 5. METODOLOGIA ................................................................................................................. 6 6. CRONOGRAMA .................................................................................................................. 7 REFERÊNCIAS ............................................................................................................................ 8 2 1. INTRODUÇÃO Escrever introdução para entendimento de todos (até leigos no assunto) Para comparar as arquiteturas os seguintes aspectos foram avaliados, números de requisições, números de requisições com erro, tempo de resposta médio, vazão, requisições por tempo, uso de memória e CPU. MongoDB é um banco de dados orientado a documentos que provê alta performance, alta disponibilidade e fácil escalabilidade”(MongoDB Manual, 2013). Seus dados são representados através de JSON (JavaScript Object Notation). Em comparação aos SGBDR (Sistema Gerenciador de Banco de DadOS Relacional) algumas analogias podem ser feitas: uma tabela pode ser comparada com uma coleção e um documento pode ser comparado a uma linha de dados 3 2. OBJETIVO O objetivo principal é a especificação de uma arquitetura de servidores web de alto desempenho utilizando Node.JS e banco de dados MongoDB de modo a extrair o máximo de capacidade de um hardware para determinado serviço, podendo ter escalabilidade se necessário. 4 3. JUSTIFICATIVA O teste de desempenho consiste em avaliar os seguintes aspectos: números de requisições, números de requisições com erro, tempo de resposta médio, vazão, requisições por tempo, uso de memória e CPU. O teste de desempenho é fundamental para definir a capacidade do servidor e aplicação, bem como definir os limites do sistema de acordo com o hardware disponível, “O objetico é duplo: entender como o sistema responde a carregamento (isto é, números de usuários, número de transações ou volume de dados), e coletar métricas que vão levar a modificações de projeto para melhorar o desempenho”.(PRESSMAN, 2006) O Node.JS é um servidor para a internet desenvolvido para ser escalável. De acordo com seu fabricante (NODE.JS, 2013) ö uso de I/O não bloqueante é o que torna leve e eficiente”. Apesar de suportar diversos protocolos o mesmo é bastante utilizado para a construção de aplicações web, tendo como característica o suporte ao protocolo HTTP e WebSockets. 5 4. ORGANIZAÇÃO DO ARTIGO 6 5. METODOLOGIA Teste de desempenho O teste de desempenho é uma classe de testes implementada e executada para caracterizar e avaliar o desempenho relacionado a características do objetivo do teste, como perfis de andamento, fluxo de execução, tempo de resposta, confiabilidade e limites operacionais. Vários tipos de testes de desempenho, cada um concentrado em um objetivo do teste diferente, são implementados durante todo o ciclo de vida de desenvolvimento do software (SCLC). Nas iterações de arquitetura, os testes de desempenho baseiam-se na identificação e na eliminação de gargalos de desempenho relacionados à arquitetura. Nas iterações de construção, outros tipos de testes de desempenho são implementados e executados para ajustar o software e o ambiente (otimizando o tempo de resposta e os recursos) e para verificar se a aceitabilidade dos aplicativos e so sistema consegue lidar com condições de alta carga e stress, como um grande número de transações, clientes e/ou volumes de dados. O teste de desempenho abrange os seguintes tipos de teste: Teste de avaliação de desempenho, teste de contenção, teste de carga e teste de stress. Para que possa ser realizado testes de desempenho de uma arquitetura de serviços web é imprescindível que exista um software a ser testado. Para testar a arquitetura proposta será utilizado uma aplicação de contagem de votos, uma urna que simulará uma eleição eleitoral. Tem como objetivo simular um serviço básico, com um banco de dados não relacional simples. A execução de testes de desempenho requer a utilização de ferramentas para este propósito. Para a execução dos testes foi escolhido a ferramenta JMeter, que é opensource, 100% desenvolvida em Java, projetada para a execução de testes funcionais e medição de desempenho” (Apache JMeter, 2014) 7 6. CRONOGRAMA Item Descrição 01 Entrega do documento de aceite ao professor orientador. 02 Entrega do projeto do artigo Entrega da primeira versão artigo por e-mail seguindo o 03 arquivo modelo. 04 Entrega da segunda versão artigo 05 Entrega da versão final do artigo Data 8 REFERÊNCIAS http://www.funpar.ufpr.br:8080/rup/process/workflow/test/co_perfo.html http://www.ceavi.udesc.br/arquivos/id_submenu/787/ricardo_schroeder_versao_final_.p df https://www.devmedia.com.br/testes-de-desempenho-carga-e-stress/26546 Colocar as referencias !!