Introdução ao Backend

Internet, Web... ?

Protocolo HTTP

Frontend e Backend

REST e roteamento

notas em GraphQL

notas em MVC

notas em Microsserviços

Internet, Web... ?

Infraestrutura

Rede de computadores

Conteúdos

Páginas, apps

Internet

Web

Diferença

Internet, Web... ?

Cliente

Servidor

Arquitetura

Internet, Web... ?

Protocolo HTTP

Frontend e Backend

REST e roteamento

notas em GraphQL

notas em MVC

notas em Microsserviços

Protocolo HTTP

Requisição

Resposta

GET

POST

PUT/PATCH

DELETE

1xx

2xx

3xx

4xx

5xx

Internet, Web... ?

Protocolo HTTP

Frontend e Backend

REST e roteamento

notas em GraphQL

notas em MVC

notas em Microsserviços

Frontend e Backend

HTML

CSS

JavaScript

Vue.js

React.js

TailwindCSS

PostgreSQL

MongoDB

Sinatra.rb

Python com Django

Node.js

Express

Servidor clássico

página HTML

Requisições recebiam documentos HTML como resposta

Realidade: clientes sempre eram browsers

views

erb / haml

%section.container
  %h1= post.title
  %h2= post.subtitle
  .content
    = post.content

Frontend e Backend

Servidor moderno

dados serializados

documento JSON

Requisições recebem os dados  em um documentos JSON como resposta

Realidade: diversidade de clientes (browser, apps, outros backends)

{
  "post": {
    "title": "Some title",
    "subtitle": "Some subtitle",
    "content": "Lorem ipsum dolor amet."
  }
}

Frontend e Backend

Internet, Web... ?

Protocolo HTTP

Frontend e Backend

REST e roteamento

notas em GraphQL

notas em MVC

notas em Microsserviços

REST e roteamento

REpresentational State Transfer

Roy Fielding

sugestão de uso para os verbos de HTTP para ser mais semântico

GET domain.com/users
DELETE domain.com/users/42
POST domain.com/users
--data { name: 'João' }

REST e roteamento

Roteamento

GET domain.com/users
DELETE domain.com/users/42
POST domain.com/users
--data { name: 'João' }

Acessar a lista de todos os usuários cadastrados na plataforma

Criar um novo usuário na plataforma, com os dados informados

Remover da plataforma o usuário especificado

Internet, Web... ?

Protocolo HTTP

Frontend e Backend

REST e roteamento

notas em GraphQL

notas em MVC

notas em Microsserviços

notas em GraphQL

Descreva seus dados

Solicite o que deseja

Receba resultados previsíveis

type Project {

    name: String

    tagline: String

    contributors: [User]

}

query {

    project(name: "GraphQL") {

        tagline

    }

}

{

    project: {

        tagline: "A query language"

    }

}

Alternativa ao REST

notas em GraphQL

type User {
  name: String
  email: String
  photo: String
  projects: [Project]
}

type Project {

    name: String

    area: String

    contributors: [User]

}

query {

    getUser(name: "João") {

        name

        email

        projects {

            name

            area

        }

    }

}

{

    user: {

        name: "João",

        email: "joao@mail.com",

        projects: [

            {

                name: "USPCodeLab",

                area: "Technology",

            }, {

                name: "Byron",

                area: "Technology",

            }

        ]

    }

}

Boa alternativa ao REST

Internet, Web... ?

Protocolo HTTP

Frontend e Backend

REST e roteamento

notas em GraphQL

notas em MVC

notas em Microsserviços

notas em MVC

V for View

geração das visualizações e exibições

(front-end)

C for Controller

conexão entre camadas M e V e porta de entrada das requisições

(lógica de negócio)

M for Model

abstração da camada de persistência

(banco de dados)

notas em MVC

V for View

C for Controller

M for Model

Internet, Web... ?

Protocolo HTTP

Frontend e Backend

REST e roteamento

notas em GraphQL

notas em Microsserviços

notas em MVC

notas em Microsserviços

Monolito

Microsserviços

notas em Microsserviços

Codebase e Times de desenvolvimento

notas em Microsserviços

Escalabilidade

Made with Slides.com