Alto desempenho e escalabilidade em aplicações web utilizando banco de dados não-relacional e...

15

Click here to load reader

Transcript of Alto desempenho e escalabilidade em aplicações web utilizando banco de dados não-relacional e...

Page 1: 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

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

Page 2: 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

• Introdução

• Problemática

• Justificativa

• Escalabilidade

• Bancos de dados não-relacionais

• Node.JS

• Objetivos

Agenda

segunda-feira, 29 de abril de 13

Page 3: 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

IntroduçãoUso da internet em constante crescimento

segunda-feira, 29 de abril de 13

Page 4: 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

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

Page 5: 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

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

Page 6: 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

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

Page 7: 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

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

Page 8: 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

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

Page 9: 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

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

Page 10: 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

MongoDB• Alta performance

• Orientado a documentos

• Altamente escalável

• Escalabilidade horizontal

• Map Reduce

segunda-feira, 29 de abril de 13

Page 11: 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

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

Page 12: 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

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

Page 13: 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

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

Page 14: 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

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

Page 15: 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

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