NodeJS: o que é e quais suas vantagens?
@WellsSA
Wellington S. Almeida
- Software Engineer at @Symphony.fr
- CTO & Co-founder at @Envia.io
- Community Manager at @FlutterNation
- Designer, maybe?
-
Speaker? @icarcal - Music? Let's Rock!
@WellsSA
Mais do que a tecnologia
@WellsSA
A lógica por trás do mercado atual!
O que
Porquê
A princípio
@WellsSA
Então afinal, o que raios é NodeJS?
@WellsSA
O que é NodeJS?
Não é uma linguagem de programação
@WellsSA
Plataforma open-source que permite execução de linguagem Javascript do lado do servidor
O que é NodeJS?
@WellsSA
@WellsSA
Contextualizando um pouco
@WellsSA
@WellsSA
Aplicações web modernas
@WellsSA
Aplicações web modernas
@WellsSA
Atualmente
Frontend
O Frontend é vivo!
- Responsabilidades
- Estados
- Propriedades
ReactJS, AngularJS, VueJS
@WellsSA
Antigamente
Servidor
Infraestrutura
Backend
Frontend Web
Resposta (HTML, CSS, JS)
(Browser)
Frontend Mobile
X
@WellsSA
www.app.envia.io
(http://)
DNS
Você
Resposta
Requisição
Frontend
Infraestrutura
(HTML, CSS, JS)
231.69.123.15
Infraestrutura
Backend
231.69.123.15
Infraestrutura
Backend
(JSON)
Resposta
Requisição
Infraestrutura
Backend
231.69.123.16
Atualmente
@WellsSA
Em termos de dados
Servidor
Infraestrutura
Backend
Frontend Web
Resposta (JSON)
(Browser)
Frontend Mobile
Resposta (JSON)
@WellsSA
Por trás do backend
166.72.122.12
Infraestrutura
Infraestrutura
Backend
231.69.123.15
172.16.124.13
Backend
Infraestrutura
Banco de dados
Resposta (JSON)
Requisição (http | ws | ...)
@WellsSA
SPA + REST
O Frontend Só é carregado uma vez!
(Single Page Application + REpresentational State Transfer)
O que ele precisar, ele pede pro servidor (Que devolve só os dados)
@WellsSA
Profissionalmente falando
E o que isso tudo tem a ver a gente?
@WellsSA
@WellsSA
@WellsSA
O que é JSON?
[
{
nome: "Wellington",
idade: 20,
amigos: ["Kaleo", "Lucas"],
},
{
nome: "Kaleo",
idade: 21,
amigos: ["Lucas", "Wellington"],
},
]
"[{"nome":"Wellington","idade":20,"amigos":["Kaleo","Lucas"]},{"nome":"Kaleo","idade":21,"amigos":["Lucas","Wellington"]}]"
Objeto
X
Texto
(JavaScript Object Notation)
@WellsSA
HTTP
(Hyper Text Transfer Protocol)
Plataforma open-source que permite execução de linguagem Javascript do lado do servidor
O que é NodeJS?
@WellsSA
Tudo perfeitamente integrado
@WellsSA
Tudo perfeitamente integrado
@WellsSA
Facilidade na manipulação de dados
Velocidade no desenvolvimento
Integrações práticas
@WellsSA
E não só isso!
@WellsSA
@WellsSA
@WellsSA
Atualmente
Orientados a documentos
- Também em JSON
Banco de dados
@WellsSA
Além dos ORMs!
(Object-Relational Mappers)
@WellsSA
Possibilitando Migrations!
(Versionamento de banco de dados)
Text
@WellsSA
Inclusive na autenticação
JTW - JSON Web Token
(Fica de lição de casa)
O que possibilita stacks 100% Javascript
@WellsSA
Sendo as mais populares
@WellsSA
-
MEAN → MongoDB ExpressJS AngularJS e NodeJS
- MERN → MongoDB ExpressJS ReactJS e NodeJS
@WellsSA
Well
MERN
Até eu caí no bait
@WellsSA
Agora que acho que vocês já confiam
@WellsSA
O que
Porquê
O que
Calma que tem mais!
@WellsSA
@WellsSA
NodeJS é composto por:
-
V8 Javascript Engine → Interpretador de JS criado pela Google
-
libuv → Biblioteca multiplataforma com foco em I/O
- Conjunto de módulos → Nativos do node
@WellsSA
NodeJS é composto por:
@WellsSA
Single-Threaded
Non-Blocking Input/Output
@WellsSA
Processamento assíncrono
@WellsSA
Processamento assíncrono
@WellsSA
Antes
@WellsSA
Agora
@WellsSA
- Internet of Things (IoT)
- Real-Time Apps
- Single-Page Applications (SPAs)
- Apps With Microservices Architecture
- MEAN and MERN Stacks
- Serverless Architecture
Alinhado com tudo de ponta no mercado
E ser Single-Thread é um problema?
@WellsSA
Como tudo na vida: depende
@WellsSA
@WellsSA
No geral
Para processos bloqueantes muito grandes: pode ser um problema, mas existem fixers
- CPU Intense tasks → NodeJS Worker Threads
- Huge file reading/writing → NodeJS Streams
- Monolithic code → Microservices architecture
@WellsSA
Se Paypal, LinkedIn, Yahoo, Mozilla, Netflix, Uber, Groupon, GoDaddy, eBay, Slack, Trello, Skype, e o Well usam, me parece OK.
Cada caso é um caso
No geral
E nem chegamos na melhor parte ainda!
@WellsSA
(Na minha humilde opinião)
@WellsSA
Depois disso tudo vem a dúvida:
Nossa, e esse monte de tecnologia de ponta não é difícil ou chato de ser usado?
E a resposta é:
@WellsSA
Módulos!!!
Módulos everywhere
MAIS Módulos
(MUITOS Módulos)
Então Bora codar!
@WellsSA
@WellsSA
Lição de casa
Wellington S. Almeida
-
Slides:
https://slides.com/WellsSA - Código: https://github.com/WellsSA
-
Contatos:
https://wellsadev.com/
@WellsSA
NodeJS: O que é e quais suas funcionalidades?
By Wellington Almeida
NodeJS: O que é e quais suas funcionalidades?
- 239