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
     
  • MERNMongoDB 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

@WellsSA

NodeJS: O que é e quais suas funcionalidades?

By Wellington Almeida

NodeJS: O que é e quais suas funcionalidades?

  • 205