Alto desempenho e escalabilidade em aplicações web utilizando banco de dados não-relacional e programação orientada a eventos na camada server-side com Node.JS
O documento discute o desenvolvimento de uma aplicação web escalável utilizando banco de dados não-relacional e programação orientada a eventos com Node.js para suportar alto desempenho e número de acessos. O objetivo é comparar desempenho de aplicações com bancos relacionais e não-relacionais como MongoDB.
Similar to Alto desempenho e escalabilidade em aplicações web utilizando banco de dados não-relacional e programação orientada a eventos na camada server-side com Node.JS
Trabalhando com TFS na nuvem (Microsoft Azure). Quais vantagens de migrar o A...Marcus Garcia
Similar to Alto desempenho e escalabilidade em aplicações web utilizando banco de dados não-relacional e programação orientada a eventos na camada server-side com Node.JS (20)
Trabalhando com TFS na nuvem (Microsoft Azure). Quais vantagens de migrar o A...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados não-relacional e programação orientada a eventos na camada server-side com Node.JS
1. Faculdade de Ciências e Tecnologia – FCT UNESP
Departamento de Matemática e Computação – DMC
Bachelado em Ciência da Computação
Alto desempenho e escalabilidade em aplicações
web utilizando banco de dados não-relacional e
programação orientada a eventos na camada
server-side com Node.JS
Vagner José Santana
segunda-feira, 29 de abril de 13
2. • Introdução
• Problemática
• Justificativa
• Escalabilidade
• Bancos de dados não-relacionais
• Node.JS
• Objetivos
Agenda
segunda-feira, 29 de abril de 13
4. Como suportar a grande quantidade de
acesos ?
• Estrutura Física
• Alta quantidade de servidores
• Planejamento de estrutura (Scale Up / Scale
Out)
• Alto Custo
segunda-feira, 29 de abril de 13
5. Problemática
Grandes aplicações web precisam manter-se
estáveis e apresentar bom desempenho mesmo com
alta quantidade de acessos simultâneos.
Empresas responsáveis por grandes aplicações
precisam economizar custos com estruturas de
servidores.
Como unir os dois pontos ?
segunda-feira, 29 de abril de 13
6. Justificativa
Unindo tecnologias não tradicionais como as que
serão abordadas neste projeto, podemos criar um
modelo de aplicação escalável, explorando o máximo
da plataforma escolhida.
A programação orientada a eventos auxilia o ganho
de performance pois evita o bloqueio, comum em
aplicações tradicionais que utilizam threads para
suportar requisições simultâneas.
segunda-feira, 29 de abril de 13
7. Assim, temos como objetivo criar uma
aplicação que em comparação com os modelos
tradicionais, tenha performance muito superior, e
custo inferior para criar a estrutura escalável.
segunda-feira, 29 de abril de 13
8. Escalabilidade
“Na Engenharia de Software e Telecomunicações, é a
capacidade de um sistema ou hardware manter-se
estável enquanto uma grande quantidade de usuários
ou processamento aumenta significativamente.”
segunda-feira, 29 de abril de 13
9. Bancos de dados não-relacionais
• Muitas operações de entrada e saída
• Banco de dados são responsáveis pelo “gargalo”
em uma aplicação
• Bancos de dados relacionais apresentam
dificuldades em lidar com grande volume de
dados
segunda-feira, 29 de abril de 13
10. MongoDB
• Alta performance
• Orientado a documentos
• Altamente escalável
• Escalabilidade horizontal
• Map Reduce
segunda-feira, 29 de abril de 13
11. Node.JS
• Aplicação server-side
• Programação orientada a eventos
• I/O não bloqueante (assíncrono)
• Engine JavaScript Google V8
• Custo de operações I/O na rede é muito alto
segunda-feira, 29 de abril de 13
12. Comparativo simples
• Nível de concorrência: 20 mil
• Total de requisições: 1.000.000
• Tempo Node.JS: 1043.076 seg.
• Tempo Apache: 3570.753 seg.
Hello World
Fonte: http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php
segunda-feira, 29 de abril de 13
13. Objetivos
• Desenvolvimento de um modelo de aplicação
altamente escalável
• Busca por alta performance
• Implementado operações real time
segunda-feira, 29 de abril de 13
14. Objetivos Específicos
• Estudo e desenvolvimento de algoritmos para
operações de entrada e saída utilizando o
paradigma de orientação a eventos
• Comparativos entre aplicação com banco de
dados relacionais e não-relacionais
• Testes de carga e simulação de alto número de
acessos simultâneos
segunda-feira, 29 de abril de 13
15. Referências
• M. Wilson, “Contruindo aplicações Node com MongoDB e Backbone”, (O’Reilly), 2013, ISBN
978010449-33739-1
• S. Tikov, S. Vinoski, “Node.js: Using Javascript to Build Gugh Performance Network Programs ”. Internet
Computing, IEEE ,2010.
André B. Bondi, “Characteristics of scalability and their impact on performance”, Proceedings of the 2nd
international workshop on Software and performance, Ottawa, Ontário, Canadá, 2000, ISBN
1-58113-195-X.
• Felix V. Leitner, “Scalable Network Programming”, http://bulk.fefe.de/scalable- networking.pdf, 2003,
acessado em março de 2013.
• Ricardo W. Brito, “Bancos de Dados NoSQL x SGBDs Relacionais:Análise Comparativa”, http://
www.infobrasil.inf.br/userfiles/27-05-S4-1-68840- Bancos%20de%20Dados%20NoSQL.pdf, 2012,
acessado em abril de 2013
segunda-feira, 29 de abril de 13