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