Aplicações Web Modernas com MEAN Stack
João Gabriel Lima
Quem souQuem souQuem souQuem sou
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
Somente 5 anos de vida (criado em 2009)Lead e criador: Ryan Dahl
2010: começa a ganhar mais popularidade
2011surge NPM
suporte nativo a Windows
2012: Novo lead: Isaac Schlueter (npm)
2014Novo lead: Timothy Fontaine
“bug fixing, performance tuning, staying up to date with the V8 engine”
HistóriaHistória
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
O que é NodeJSO que é NodeJS
Loop de eventos com uma única thread
Work queue
A única thread
Consulta o banco
Resultados do BD
Resultados do BD
Novo request
Novo request
Timeout de pooling
Modelo assíncronoModelo assíncrono
Processamento intensoCodificação de vídeo, etc.Mas ele pode chamar para o codificador
Apps CRUD “Forms over data”Rails/ASP.NET um pouco mais maduros
Comunicação em tempo realSockets, polling, etc.
Serviços de rede customizadosMedia servers, proxies, etc.
JSON web servicesPequena camada de aplicação sobre o BD
Interfaces web focadas no clienteQualquer coisa que você faria com WebAPI
Node é…Node é…
Excelente para: Bom para:
Ruim para:
Quem usa?
• 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;
O que é?
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/
BoilerplatesBoilerplates
Aplicações Web Modernas com MEAN Stack
João Gabriel Lima