Alto desempenho e escalabilidade em aplicações web utilizando banco de dados não-relacional e...
Click here to load reader
-
Upload
vagner-santana -
Category
Technology
-
view
1.037 -
download
3
Transcript of Alto desempenho e escalabilidade em aplicações web utilizando banco de dados não-relacional e...
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
• Introdução
• Problemática
• Justificativa
• Escalabilidade
• Bancos de dados não-relacionais
• Node.JS
• Objetivos
Agenda
segunda-feira, 29 de abril de 13
IntroduçãoUso da internet em constante crescimento
segunda-feira, 29 de abril de 13
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
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
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
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
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
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
MongoDB• Alta performance
• Orientado a documentos
• Altamente escalável
• Escalabilidade horizontal
• Map Reduce
segunda-feira, 29 de abril de 13
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
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
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
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
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