Palestra do Software Freedom Day Belém, que ocorreu no dia 19/09/2014 no CTIC - UFPA - Universidade Federal do Pará.
Apresentando a pilha tecnológica MongoDB, ExpressJS, AngularJS, NodeJS.
Vantagens, Desvantagens e como começar.
Introdução ao projeto open-source MolotovSeries
1. Aplicações Web Modernas com MEAN Stack
João Gabriel Lima
www.jgabriellima.com
jgabriel.ufpa@gmail.com
2. 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
3.
4. Pilha de Tecnologias para o
desenvolvimento de aplicações
Web modernas e robustas
5.
6.
7.
8.
9.
10.
11.
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 a documentos (JSON)
- Sem Schema
- Indíces
- Sharding (Escala horizontalmente)
- Javascript
14. Por que usar NoSQL?
● 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 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;
20. 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”
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 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
23. 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:
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;