NodeJS: o que é e quais suas vantagens?

 

@WellsSA

@WellsSA

Agenda

  • O que é NodeJS (introdução)

  • O que é Javascript

  • Mercado atual (engenharia)

  • O que é NodeJS (técnico)

  • Mercado atual (popularidade)

@WellsSA

O que é NodeJS?

@WellsSA

O que

Porquê

O que é NodeJS?

Não é uma linguagem de programação

@WellsSA

A linguagem é Javascript!

Plataforma open-source que permite execução de linguagem Javascript do lado do servidor

O que é NodeJS?

@WellsSA

E por que Javascript?

@WellsSA

@WellsSA

@WellsSA

Javascript

Aplicações de Servidor

Machine Learning

Automação/testes

Node.JS, Deno, Bun,
+Serveless

Puppeteer, Cypress

TensorFlow.js, Brain.js, Synaptic

Realidade Virtual

React VR, React 360,
A-Frame

Aplicativos móveis

React Native, Ionic

Aplicações Desktop

Electron, NW.js

Games

Phaser, Three.js, Babylon.js

Banco de dados

MongoDB, Cassandra, Dynamo, Firestore

IoT, Música, até Maizena...

Páginas web

reactJS, VueJS, Angular, Svelte, JQuery

@WellsSA

Só pra provar um ponto

@WellsSA

Apps que usam Electron

@WellsSA

Recapitulando

O que é NodeJS?

Não é uma linguagem de programação

@WellsSA

A linguagem é Javascript!

Plataforma open-source que permite execução de linguagem Javascript do lado do servidor

O que é NodeJS?

@WellsSA

Ou seja:

@WellsSA

@WellsSA

E tem mais!

Contextualizando um pouco

@WellsSA

Desenvolvimento web

@WellsSA

Antigamente...

@WellsSA

Hoje em dia...

@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

DNS

Você

Frontend

Infraestrutura

231.69.123.15

Atualmente

(http://)

Requisição

Requisição

Resposta

(JSON)

Resposta

(HTML, CSS, JS)

Infraestrutura

Infraestrutura

231.69.123.15

Servidor

231.69.123.16

Infraestrutura

Backend

@WellsSA

Em termos de dados

Servidor

Infraestrutura

Backend

Frontend Web

Resposta (JSON)

(Browser)

Frontend Mobile

Resposta (JSON)

@WellsSA

Por trás do backend

Infraestrutura

231.69.123.15

Backend

172.16.124.13

Infraestrutura

Banco de dados

166.72.122.12

Infraestrutura

Backend

Resposta (JSON)

Requisição (http | ws | ...)

@WellsSA

Entenderam?

@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

Pega a visão

Objeto

Texto

Objeto

Texto

@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

Wells
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)

@WellsSA

@WellsSA

Então bora codar!

@WellsSA

@WellsSA

Lição de casa

@WellsSA

Wellington S. Almeida

@WellsSA

(2024) NodeJS: O que é e quais suas funcionalidades?

By Wellington Almeida

(2024) NodeJS: O que é e quais suas funcionalidades?

  • 36