SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
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
Trabalho de Conclusão de Curso!
Vagner José Santana
Prof. Dr. Ronaldo Celso Messias Correia

Disponível em vagnersantana.com/tcc
Agenda

•

Formulação do Problema e Motivação

•

Objetivos

•

Escalabilidade

•

Modelo Cliente-Servidor

•

Programação Orientada a Eventos e Node.js

•

Bancos de Dados Não-Relacionais e MongoDB

•

Modelo Proposto

•

Estudo de Caso

•

Implementação

•

Testes e Resultados

•

Conclusões

2
Formulação do Problema e Motivação
•

Aumento de usuários e dispositivos conectados à
Internet

•

Estrutura escaláveis: vertical e horizontal

•

Modelo atual possui limitações

•

Repensar o desenvolvimento de aplicações web

3
Objetivos
•

Desenvolvimento de uma aplicação utilizando
orientação a eventos em Node.js

•

Utilização do banco de dados não-relacional
MongoDB.

•

Desenvolvimento de uma aplicação com propósito
de comparação

•

Realização de testes

•

Análise dos resultados obtidos

4
Escalabilidade
“Escalabilidade é uma característica desejável em
todo o sistema, em uma rede ou em um processo, que
indica sua habilidade de manipular uma porção
crescente de trabalho de forma uniforme, ou estar
preparado para crescer.”
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-195X, pagina 195 - 203

5
!6
Modelo Cliente-Servidor
•

Dividir em camadas as partes que interagem com
um aplicação

•

Protocolo TCP/IP

•

Software web server

•

Requisições HTTP

•

Apache HTTP Server

•

I/O

7
Modelo Cliente-Servidor

Modelo Cliente-Servidor de três camadas

8
Operações I/O
•

I/O Bloqueante

•

I/O Não-Bloqueante

•

Polling / Async

9
C10K Problem
•

Dan Kegel, 1999

•

Servidores suportam no máximo 10
mil conexões simultâneas

•

Hardware não é o único problema

•

Concorrência utilizando threads

10
Programação Orientada a Eventos
•

Paradigma: maneira como uma linguagem
estrutura seu fluxo

•

Fluxo de controle guiado por sinais externos

•

Normalmente utilizada no desenvolvimento de
interfaces de usuário

•

Aguarda pelo disparo de um evento

11
Programação Orientada a Eventos
• Evento:

maneira de indicar que algo
aconteceu

• Permite

criar fluxos assíncronos

• Request
• Event

/ Response

Producer / Event Consumer

• Callbacks

12
Programação Orientada a Eventos

Exemplo do fluxo de execução de uma aplicação assíncrona

13
Node.js
•

JavaScript Server Side

•

Async

•

Event-Driven I/O

•

Non-blocking

•

V8 Engine (Google
Chrome)

•

C libev / libeio

Arquitetura do Node.js

14
Node.js
•

Módulos

•

Não existe garantia da ordem de execução
de chamadas

•

Single Thread

•

Constante atualização

15
Bancos de Dados Não-Relacionais
•

Suprir as limitações presentes no modelo relacional

•

Grande volumes de dados

•

Foco em escalabilidade e performance

•

Multiplas vertentes e bancos de dados
desenvolvidos

•

Modelagem Flexível

•

Acesso via APIs simples

16
Bancos de Dados Não-Relacionais
•

Eventual Consistency

•

Ausência de ACID

•

BASE: Disponibilidade, Estado Leve e
Consistência em Momento Indeterminado

•

Prioriza escalabilidade e disponibilidade

•

Menor tempo de resposta em consultas

•

Maior grau de concorrência

17
MongoDB
•

Desenvolvido em linguagem C++

•

Alta Performance

•

Integração com a linguagem JavaScript

•

Schema baseado em coleções

•

Coleções armazenam Documentos

18
MongoDB
•

Documentos são baseado no conjunto de
chaves e valores

•

Formato JSON (JavaScript Object Notation)

•

Ausência de tabelas adicionais para
armazenar relações

•

Documentos podem ter diferentes
estruturas

19
MongoDB
•

ObjectID

•

Sharding

•

GridFS

20
Collection 1

Collection 2

Collection 3

JSON

JSON

JSON

JSON

JSON

JSON

JSON

JSON

JSON

JSON

JSON

JSON

JSON

JSON

JSON

JSON

JSON

JSON
Modelo Proposto
Estrutura do modelo proposto

23
Estudo de Caso
•

Validar a proposta

•

Módulo de um sistema acadêmico

•

Foco em disponibilização de materiais

•

Professores, Alunos, Turmas, Disciplinas,
Cursos, Materiais

24
Implementação
Aplicação 1
•

Modelo proposto

•

Banco de Dados Não-Relacional
(MongoDB)

•

Linguagem JavaScript

•

Node.js

26
Aplicação 2
•

Modelo básico

•

Banco de Dados Relacional (MySQL)

•

Linguagem PHP

•

Apache HTTP Server

27
Modelagem Relacional

Modelo Entidade-Relacionamento

28
Modelagem Não-Relacional
•

Análise do estudo de caso

•

Ausência de normalização

•

Elementos chaves serão Coleções

•

Documentos armazenam Documentos

29
Modelagem Não-Relacional

Estrutura de um documento da coleção "cursos"

30
Modelagem Não-Relacional

Estrutura de um documento da coleção "alunos"

31
Modelagem Não-Relacional

Estrutura de um documento da coleção "materiais"

32
Implementação em JavaScript
•

Rotas

•

Modelos

•

Restify

•

Mongoose

33
Implementação em JavaScript

Arquivo “app.js”

34
Implementação em JavaScript
Definição de rota em “routes/aluno.js"

Definição da estrutura de um documento em um modelo

35
Implementação em JavaScript

Definição de um método em um modelo

36
Testes
Realizados
Testes
•

Métrica 1: Requisições Sequenciais

•

Métrica 2: Requisições Concorrentes

38
Resultados
Resultados - Métrica 1

Inserção de Dados - 10.000 requisições

40
Resultados - Métrica 1

Consulta de Dados - 10.000 requisições

41
Resultados - Métrica 1

Atualização de Dados - 10.000 requisições

42
Resultados - Métrica 2

Consulta de Dados - 10.000 requisições / 100 concorrentes

43
Resultados - Métrica 2

Atualização de Dados - 10.000 requisições / 100 concorrentes

44
Conclusões
Conclusões
•

Desenvolvimento em Node.js pode ser feito de
maneira simples, modular e projetável

•

Operações não-bloqueantes obtiveram desempenho
superior (de seis a oito vezes) ao modelo bloqueante

•

Node.js pode ser usado em produção (ex. PayPal)

•

Flexibilidade do modelo não-relacional

•

Busca em MongoDB tempo de resposta alto

•

Trabalhos futuros: utilização de Sharding e
clusterização do Node.js

46
Obrigado!
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
Trabalho de Conclusão de Curso!
Vagner José Santana • vagnervjs@gmail.com
Prof. Dr. Ronaldo Celso Messias Correia • ronaldo@fct.unesp.br

Mais conteúdo relacionado

Mais procurados

TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
Felipe Nascimento
 
Aula 1 requisitos
Aula 1   requisitosAula 1   requisitos
Aula 1 requisitos
licardino
 
Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)
Ricardo Longa
 

Mais procurados (20)

Análise de Sistemas - Requisitos (Revisão e Requisitos Suplementares)
Análise de Sistemas - Requisitos (Revisão e Requisitos Suplementares)Análise de Sistemas - Requisitos (Revisão e Requisitos Suplementares)
Análise de Sistemas - Requisitos (Revisão e Requisitos Suplementares)
 
Hierarquia de níveis
Hierarquia de níveisHierarquia de níveis
Hierarquia de níveis
 
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Fundamentos de Engenharia de Requisitos
Fundamentos de Engenharia de RequisitosFundamentos de Engenharia de Requisitos
Fundamentos de Engenharia de Requisitos
 
Aula 1 requisitos
Aula 1   requisitosAula 1   requisitos
Aula 1 requisitos
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de Software
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de Sistemas
 
Aula 04 layout e composição do site
Aula 04   layout e composição do siteAula 04   layout e composição do site
Aula 04 layout e composição do site
 
Análise e Modelagem de Software
Análise e Modelagem de SoftwareAnálise e Modelagem de Software
Análise e Modelagem de Software
 
JAVA - Matrizes
JAVA - MatrizesJAVA - Matrizes
JAVA - Matrizes
 
Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Engenharia Dirigida por Modelos no Desenvolvimento de Aplicações Ubíquas: Tec...
Engenharia Dirigida por Modelos no Desenvolvimento de Aplicações Ubíquas: Tec...Engenharia Dirigida por Modelos no Desenvolvimento de Aplicações Ubíquas: Tec...
Engenharia Dirigida por Modelos no Desenvolvimento de Aplicações Ubíquas: Tec...
 
Aula 4 banco de dados
Aula 4   banco de dados Aula 4   banco de dados
Aula 4 banco de dados
 
Afinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsAfinal, o que são Single Page Applications
Afinal, o que são Single Page Applications
 
UML - parte 1
UML - parte 1UML - parte 1
UML - parte 1
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
Principais Técnicas de Elicitação de Requisitos
Principais Técnicas de Elicitação de RequisitosPrincipais Técnicas de Elicitação de Requisitos
Principais Técnicas de Elicitação de Requisitos
 
Aula 2 - Modelos de processos
Aula 2 -  Modelos de processosAula 2 -  Modelos de processos
Aula 2 - Modelos de processos
 

Destaque

Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Vagner Santana
 
Banco de dados model-er
Banco de dados model-erBanco de dados model-er
Banco de dados model-er
Carlos Melo
 

Destaque (13)

Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
 
Escalabilidade de Aplicações Web
Escalabilidade de Aplicações WebEscalabilidade de Aplicações Web
Escalabilidade de Aplicações Web
 
TCC Tecnologia em Sistemas para Internet
TCC Tecnologia em Sistemas para InternetTCC Tecnologia em Sistemas para Internet
TCC Tecnologia em Sistemas para Internet
 
Alta Performance em Aplicações Web
Alta Performance em Aplicações WebAlta Performance em Aplicações Web
Alta Performance em Aplicações Web
 
Padrões para Criação e Interpretação de Conteúdos Web com HTML5
Padrões para Criação e Interpretação de Conteúdos Web com HTML5Padrões para Criação e Interpretação de Conteúdos Web com HTML5
Padrões para Criação e Interpretação de Conteúdos Web com HTML5
 
AVALIAÇÃO DE MODELOS DE ARQUITETURA DE WEB SITES DE ALTA ESCALABILIDADE
AVALIAÇÃO DE MODELOS DE ARQUITETURA DE WEB SITES DE ALTA ESCALABILIDADEAVALIAÇÃO DE MODELOS DE ARQUITETURA DE WEB SITES DE ALTA ESCALABILIDADE
AVALIAÇÃO DE MODELOS DE ARQUITETURA DE WEB SITES DE ALTA ESCALABILIDADE
 
Banco de dados model-er
Banco de dados model-erBanco de dados model-er
Banco de dados model-er
 
APRESENTAÇÃO DE TCC - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA A A...
APRESENTAÇÃO DE TCC - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA A A...APRESENTAÇÃO DE TCC - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA A A...
APRESENTAÇÃO DE TCC - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA A A...
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications
 
Portfolio unopar administração 7º periodo conceito excelente!
Portfolio unopar administração 7º periodo   conceito excelente!Portfolio unopar administração 7º periodo   conceito excelente!
Portfolio unopar administração 7º periodo conceito excelente!
 
Apresentação unopar modelo 1
Apresentação unopar modelo 1Apresentação unopar modelo 1
Apresentação unopar modelo 1
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 

Semelhante a TCC - Escalabilidade em Aplicações Web

Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
Sérgio Vilar
 
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
Cleber Dantas
 
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Felipe Nascimento
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
guestea329c
 

Semelhante a TCC - Escalabilidade em Aplicações Web (20)

Palestra ASP.NET MVC
Palestra ASP.NET MVCPalestra ASP.NET MVC
Palestra ASP.NET MVC
 
Desenvolvimento de Projetos Interativos: Especificação e Implementação
Desenvolvimento de Projetos Interativos: Especificação e ImplementaçãoDesenvolvimento de Projetos Interativos: Especificação e Implementação
Desenvolvimento de Projetos Interativos: Especificação e Implementação
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
ASP .NET Core MVC
ASP .NET Core MVCASP .NET Core MVC
ASP .NET Core MVC
 
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
 
Arquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAOArquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAO
 
Criando aplicações web com tecnologias Microsoft
Criando aplicações web com tecnologias MicrosoftCriando aplicações web com tecnologias Microsoft
Criando aplicações web com tecnologias Microsoft
 
AJAX
AJAXAJAX
AJAX
 
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
 
Mini curso rails 3
Mini curso rails 3Mini curso rails 3
Mini curso rails 3
 
Engenharia Web
Engenharia WebEngenharia Web
Engenharia Web
 
Desenvolviemento web com ASP.Net e MVC
Desenvolviemento web com ASP.Net e MVCDesenvolviemento web com ASP.Net e MVC
Desenvolviemento web com ASP.Net e MVC
 
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
 
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
00 apresentacao
00   apresentacao00   apresentacao
00 apresentacao
 
Desenvolvimento Web
Desenvolvimento WebDesenvolvimento Web
Desenvolvimento Web
 

Último

Último (9)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

TCC - Escalabilidade em Aplicações Web