Aplicações Web Modernas com MEAN Stack 
João Gabriel Lima 
www.jgabriellima.com 
jgabriel.ufpa@gmail.com
QQQQuuuueeeemmmm ssssoooouuuu 
Arquiteto de Soluções 
Engenheiro da Computação 
Mestrando no PPGEE 
Inteligência Computacional 
Mineração de Dados 
BigData 
Stream Computing 
Business Intelligence
Pilha de Tecnologias para o 
desenvolvimento de aplicações 
Web modernas e robustas
MONGODB - VANTAGENS 
● Velocidade 
● Sem necessidade de um ORM 
● Acesso mais natural aos dados 
● Sem schema / sem migrations (com exceções) 
● Failovercautomático 
● Possibilidade de escalar escritas com sharding
- Orientado a documentos (JSON) 
- Sem Schema 
- Indíces 
- Sharding (Escala horizontalmente) 
- Javascript
Por que usar NoSQL? 
● Novos paradigmas (nem tão novos assim); 
● Funcionalidades; 
● Escalabilidade; 
● Performance; 
● Não ficar preso a modelagem;
Volume de dados 
● Grande volume é relativo, o que você 
considera grande? 
– Dados que crescem exponencialmente; 
– Agregam muitos valores dinamicamente; 
– Não precisam de modelagem;
Considere uso de MongoDB se... 
● Está usando muito cache em sua aplicação; 
● Os dados estão crescendo de forma exponencial; 
● Precisa de processamento em tempo real; 
● Gosta de desenvolvimento ágil; 
● Sua aplicação é “beta perpétua”; 
● Tem dificuldade para trabalhar com modelo 
relacional; 
● Usa muito “join” na sua aplicação relacional;
JavaScript no Servidor 
Não é baseado em threads 
Eficiente e altamente 
escalável
HHiissttóórriiaa 
Somente 5 anos de vida (criado em 2009) 
Lead e criador: Ryan Dahl 
2010: começa a ganhar mais popularidade 
2011 
surge NPM 
suporte nativo a Windows 
2012: Novo lead: Isaac Schlueter (npm) 
2014 
Novo lead: Timothy Fontaine 
“bug fixing, performance tuning, staying up to date with the V8 
engine”
OO qquuee éé NNooddeeJJSS 
Ambiente de execução e bibliotecas para rodar 
JavaScript 
Independente de qualquer navegador 
Multiplataforma (Linux, Windows, Mac, etc) 
Open Source (https://github.com/joyent/node) 
Single threaded
Loop de eventos com uma única thread 
Work queue 
Consulta o banco 
A única thread 
Resultados 
do BD 
Resultados 
do BD 
Novo 
request 
Novo 
request 
Timeout 
de pooling 
MMooddeelloo aassssíínnccrroonnoo
NNooddee éé…… 
Excelente para: Bom para: 
Apps CRUD “Forms over data” 
Rails/ASP.NET um pouco mais maduros 
Processamento intenso 
Codificação de vídeo, etc. 
Mas ele pode chamar para o codificador 
Comunicação em tempo real 
Sockets, polling, etc. 
Serviços de rede customizados 
Media servers, proxies, etc. 
JSON web services 
Pequena camada de aplicação sobre o BD 
Interfaces web focadas no cliente 
Qualquer coisa que você faria com 
WebAPI 
Ruim para:
Quem usa?
O que é? 
• Framework JavaScript com grande foco em HTML; 
• Conceito MVC; 
• Desenvolvido pela Google; 
• Permite uma padronização de arquitetura 
“enterprise” em uma aplicação web dinâmica; 
• Permite criação de novas tags em HTML para seu 
navegador interpretar; 
• Suporta os navegadores: IE8+, Chrome, Firefox, 
Safari e Opera;
Principais features; 
• Bootstrap; 
• Two-way Data-Binding; 
• Templates; 
• Repeaters; 
• Filters; 
• Injeção de Dependência; 
• Templates; 
• Routes; 
• Eventos; 
• RESTful;
Outras Iniciativas
Aplicações Web Modernas com MEAN Stack
Como começar? 
http://mean.io/#!/
Como começar? 
http://meanjs.org/
BBooiilleerrppllaatteess
Aplicações Web Modernas com MEAN Stack 
João Gabriel Lima 
www.jgabriellima.com 
jgabriel.ufpa@gmail.com

Mean Stack - Aplicações Web Modernas com MEAN

  • 1.
    Aplicações Web Modernascom MEAN Stack João Gabriel Lima www.jgabriellima.com jgabriel.ufpa@gmail.com
  • 2.
    QQQQuuuueeeemmmm ssssoooouuuu Arquitetode Soluções Engenheiro da Computação Mestrando no PPGEE Inteligência Computacional Mineração de Dados BigData Stream Computing Business Intelligence
  • 4.
    Pilha de Tecnologiaspara o desenvolvimento de aplicações Web modernas e robustas
  • 12.
    MONGODB - VANTAGENS ● Velocidade ● Sem necessidade de um ORM ● Acesso mais natural aos dados ● Sem schema / sem migrations (com exceções) ● Failovercautomático ● Possibilidade de escalar escritas com sharding
  • 13.
    - Orientado adocumentos (JSON) - Sem Schema - Indíces - Sharding (Escala horizontalmente) - Javascript
  • 14.
    Por que usarNoSQL? ● Novos paradigmas (nem tão novos assim); ● Funcionalidades; ● Escalabilidade; ● Performance; ● Não ficar preso a modelagem;
  • 15.
    Volume de dados ● Grande volume é relativo, o que você considera grande? – Dados que crescem exponencialmente; – Agregam muitos valores dinamicamente; – Não precisam de modelagem;
  • 16.
    Considere uso deMongoDB se... ● Está usando muito cache em sua aplicação; ● Os dados estão crescendo de forma exponencial; ● Precisa de processamento em tempo real; ● Gosta de desenvolvimento ágil; ● Sua aplicação é “beta perpétua”; ● Tem dificuldade para trabalhar com modelo relacional; ● Usa muito “join” na sua aplicação relacional;
  • 19.
    JavaScript no Servidor Não é baseado em threads Eficiente e altamente escalável
  • 20.
    HHiissttóórriiaa Somente 5anos de vida (criado em 2009) Lead e criador: Ryan Dahl 2010: começa a ganhar mais popularidade 2011 surge NPM suporte nativo a Windows 2012: Novo lead: Isaac Schlueter (npm) 2014 Novo lead: Timothy Fontaine “bug fixing, performance tuning, staying up to date with the V8 engine”
  • 21.
    OO qquuee ééNNooddeeJJSS Ambiente de execução e bibliotecas para rodar JavaScript Independente de qualquer navegador Multiplataforma (Linux, Windows, Mac, etc) Open Source (https://github.com/joyent/node) Single threaded
  • 22.
    Loop de eventoscom uma única thread Work queue Consulta o banco A única thread Resultados do BD Resultados do BD Novo request Novo request Timeout de pooling MMooddeelloo aassssíínnccrroonnoo
  • 23.
    NNooddee éé…… Excelentepara: Bom para: Apps CRUD “Forms over data” Rails/ASP.NET um pouco mais maduros Processamento intenso Codificação de vídeo, etc. Mas ele pode chamar para o codificador Comunicação em tempo real Sockets, polling, etc. Serviços de rede customizados Media servers, proxies, etc. JSON web services Pequena camada de aplicação sobre o BD Interfaces web focadas no cliente Qualquer coisa que você faria com WebAPI Ruim para:
  • 24.
  • 27.
    O que é? • Framework JavaScript com grande foco em HTML; • Conceito MVC; • Desenvolvido pela Google; • Permite uma padronização de arquitetura “enterprise” em uma aplicação web dinâmica; • Permite criação de novas tags em HTML para seu navegador interpretar; • Suporta os navegadores: IE8+, Chrome, Firefox, Safari e Opera;
  • 28.
    Principais features; •Bootstrap; • Two-way Data-Binding; • Templates; • Repeaters; • Filters; • Injeção de Dependência; • Templates; • Routes; • Eventos; • RESTful;
  • 37.
  • 41.
  • 42.
  • 44.
  • 45.
  • 47.
    Aplicações Web Modernascom MEAN Stack João Gabriel Lima www.jgabriellima.com jgabriel.ufpa@gmail.com