Descomplicando a

Web moderna

 

@WellsSA

Wellington S. Almeida

  • Fullstack Javascript Engineer
  • Community Manager at @EW.it
  • NodeJS Instructor at @CodersClub
  • CTO & Co-founder at @Envia.io
  • Community Manager at @FlutterNation
  • Designer, maybe?
  • Speaker? @icarcal
  • Music? Let's Rock!

@WellsSA

ETEC Everywhere

@WellsSA

Mas afinal, o que raios é a web?

@WellsSA

No nosso caso

@WellsSA

Frontend

Backend

Infraestrutura

Mas melhor que isso!

@WellsSA

A lógica por trás do mercado atual!

Tecnologias

Conceitos

A princípio

@WellsSA

ANTES DE TUDO

@WellsSA

MAS PRIMEIRO

@WellsSA

1. Aproveite a jornada!

@WellsSA

2. Interrompa, interaja, faça perguntas! :D

("Tamo aí pra isso")

@WellsSA

3. Não se preocupe em saber tudo isso!

(Ajuda, mas não é obrigatório!)

@WellsSA

Partindo do básico

"Lá em 1800 e Chicão era     jovem" - Correa, Cristiano

@WellsSA

Programação Estruturada

meu programa;

int variável;
String variável2;

begin
    # um monte de código
    # mais código
    # sério, muito código
    # mais um pouquinho de código
    # já disse que tem código?
    # pode acreditar, código mesmo
	...
end

@WellsSA

Programação Orientada a Objetos

class Ornitorrinco {
    String nome;
    int idade;
}
function alimentar(Ornitorrinco o, Alimento b) {
    // M A G I A
    // mentira, mais código mesmo
}
class Batata extends Alimento {
    // Exemplo meramente ilustrativo
    // Tipo foto de alimento
}

@WellsSA

ISSO É MUITO ÚTIL

// Antes
[1, 2, 3, 4, 5]

// Depois
[Ornitorrinco, Ornitorrinco, Ornitorrinco, Ornitorrinco]
[
    {
        nome: 'Zé',
        idade: 15,
    }, 
    {
        nome: 'Zezim',
        idade: 3,
    }, 
]

@WellsSA

Programação Funcional

var x = 2;
var y = 3;
var resultado;

function somar() {
    resultado = x + y;
}

function causarDiscordia() {
    x = x + 10;
}

causarDiscordia();
somar();
const x = 2;
const y = 3;

function somar(a, b) {
    return a + b;
}

const resultado = somar(x, y);

Antes

Depois

Stateless / Immutable

@WellsSA

O quê, não como

const meuEmail = 'zezim123@gmail.com';

function recuperarSenha(email) {
    // 1. Validar o e-mail
    const deuBom = validaEmail(email);

    // 2. Se o e-mail estiver certo, pegar os dados do usuário
    if(deuBom === true) {
        const meuUsuario = procuraUsuarioPorEmail(email);

        // 3. Gerar chave de acesso única
        const token = gerarToken(meuUsuario.id);

        // 4. Preparar mensagem
        const mensagem = 
            'Para alterar sua senha clique em http://meusite.com?auth=' + token;
			
        // 5. Enviar e-mail com a mensagem
        const email = enviarEmail(email, mensagem);
    }
}

@WellsSA

  • A forma com que programamos muda!
  • Mas por quê?

Ou seja

Programação Estruturada

Programação Orientada a Objetos

Programação Funcional

@WellsSA

A evolução vem da necessidade!

@WellsSA

E quais as necessidades da web moderna?

@WellsSA

Agooora sim

@WellsSA

Frontend

Backend

Infraestrutura

@WellsSA

O que é                             ?

Frontend

  • Exibição para o usuário
     
  • Num ambiente controlado (navegador ou aplicativo)
     
  • Web / Mobile / Terminal

@WellsSA

Falando de Web

  • Não interage com o computador (pra existir precisa do browser)
     
  • Não interage com outras abas

@WellsSA

Falando de Mobile

  • Interage com o "computador" (celular) - mas precisa de permissão
     
  • Não interage com outros aplicativos

Tudo que chega pro usuário, ele tem acesso!

(Nada de senha em input hidden!)

@WellsSA

O que é                             ?

  • Responsável por interagir com serviços!
    (Bancos de dados, APIs, outros backends)
     
  • Tem acesso ao computador
     
  • Pode escrever arquivos
    (TXT, PDF, PNG, XLSX, etc)
     
  • Pode ter chaves de acesso

Backend

@WellsSA

Serviços?

http://localhost:3306

Text

(Processos)

@WellsSA

Serviços

@WellsSA

Serviços

http://localhost:3306

Host

Porta

(Máquina)

@WellsSA

O que é                             ?

  • No nosso exemplo, o computador
     
  • Todo o ambiente onde nossos serviços rodarão
     
  • Como vou subir a máquina que vai rodar meu código? O banco de dados?

Infraestrutura

@WellsSA

Provedores de cloud

  • Te permitem criar suas "máquinas" online
     
  • Oferecem serviços de bancos de
    dados, servidores, etc.

@WellsSA

Separado funciona, mas e junto?

www.wellsadev.com

231.69.123.15

(http://)

DNS

Você

Resposta

Requisição

Frontend

Infraestrutura

Infraestrutura

Infraestrutura

Backend

(HTML, CSS, JS)

@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

Requisições (http | ws | ...)

Resposta (JSON)

@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

A magia da evolução

Componentes

Módulos

Containers

Frontend

Backend

Infraestrutura

@WellsSA

Componentes

Frontend

O Frontend é vivo!

  • Responsabilidades
  • Estados
  • Propriedades

ReactJS, Angular JS, VueJS

@WellsSA

@WellsSA

@WellsSA

Antigamente

Servidor

Infraestrutura

Backend

Frontend Web

Resposta (HTML, CSS, JS)

(Browser)

Frontend Mobile

X

@WellsSA

Atualmente

Servidor

Infraestrutura

Backend

Frontend Web

Resposta (JSON)

(Browser)

Frontend Mobile

Resposta (JSON)

@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

Lembram desse modelo?

www.wellsadev.com

231.69.123.15

(http://)

DNS

Você

Resposta

Requisição

Frontend

Infraestrutura

Infraestrutura

Infraestrutura

Backend

(HTML, CSS, JS)

@WellsSA

Agora ele fica assim

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

@WellsSA

Profissionalmente falando

@WellsSA

Módulos

Implementações independentes que funcionam separadamente

NodeJS, Python, Spring

Backend

@WellsSA

Serverless

(Sim, SEM SERVIDOR!)

Funções everywhere

"Pay as you go"

@WellsSA

Containers

Docker, Kubernetes, Docker-Compose

Infraestrutura

Então eu preciso saber de tudo isso pra ser dev?

@WellsSA

NÃÃÃÃÃO!!

@WellsSA

@WellsSA

Existem EQUIPES <3

@WellsSA

E dias normais

Então Bora codar!

@WellsSA

Wellington S. Almeida

@WellsSA

Descomplicando a Web Moderna 2.0

By Wellington Almeida

Descomplicando a Web Moderna 2.0

  • 80