Mean Stack - Aplicações Web Modernas com MEAN

Post on 11-Jun-2015

347 views 3 download

description

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

Transcript of Mean Stack - Aplicações Web Modernas com MEAN

Aplicações Web Modernas com MEAN Stack

João Gabriel Lima

www.jgabriellima.comjgabriel.ufpa@gmail.com

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

www.jgabriellima.comjgabriel.ufpa@gmail.com