You are on page 1of 155

Introducción

al Backend
Nicolas Molina
TITLE
@nicobytes

Colombiano viviendo en
Bolivia.
Senior Software Developer.
+8 de experiencia.
Roles del
Desarrollo Backend
BACKEND DEV
DB ADMIN
SERVER ADMIN
FRONTEND
y BACKEND
TITLE
TITLE

Frontend
Backend
(Client)
(Server)
Client
TITLE
Navegador
(Frontend)

Backend
Móvil (Server)

IOT
TITLE
Navegador
(Frontend)

HTML CSS JS
(icon + text) (icon + text) (icon + text)

Tailwind Angular
Markdown (icon + text)
(icon +text)
(icon +text) React
Bootstrap
(icon + text) (icon + text)
Foundation Vue
(icon + text) (icon + text)
TITLE
Mobile

IOS Android
Cross Platforms
(icon + text) (icon + text)

Swift Kotlin
(icon + text) (icon + text) React Native
Obejct C Java (icon + text)
(icon + text) (icon + text) Ionic
(icon + text)
.NET MAUI
(icon + text)
TITLE Python - Django
(icon + text)

JavaScript - Express
(icon + text)

TypeScript - NestJS
(icon + text)

Ruby - Ruby on Rails


(icon + text)
Backend
PHP - Laravel
(icon + text)

Java - Spring
(icon + text)

GO
(icon + text)

C#
(icon + text)
Client
TITLE
Navegador
(Frontend)

Backend
Móvil (Server)

IOT
Client
TITLE
Navegador
(Frontend)

Backend
Móvil (Server)

IOT
TITLE

Client Backend
APIs

HTTP
¿QUÉ ES UN
FULLSTACK?
TITLE
TITLE
¿Cómo se
construye
el Backend?
TITLE
CLIENTES COCINA

CHEFS
MESERO

COMIDA
CARTA

IMPLEMENTOS
TITLE
CLIENTES COCINA

CHEFS
MESERO
USUARIOS /

COMIDA
NAVEGADORES

CARTA

IMPLEMENTOS
TITLE
CLIENTES COCINA

CHEFS
FRONTEND
MESERO

COMIDA
CARTA

IMPLEMENTOS
TITLE
CLIENTES COCINA

CHEFS
MESERO

COMIDA
CARTA

APIs

IMPLEMENTOS
TITLE
CLIENTES COCINA

DEVs /

CHEFS
Endpoints

MESERO

COMIDA
CARTA

IMPLEMENTOS
TITLE
CLIENTES COCINA

CHEFS
MESERO

COMIDA
Bases
de Datos

CARTA

IMPLEMENTOS
TITLE
CLIENTES COCINA

CHEFS
MESERO

COMIDA
CARTA

IMPLEMENTOS
Librerías
TITLE
TITLE
FRAMEWORKS TITLE

- 2 Chefs

- 5 Huevos

- 1 Sartén
¿Cómo escoger
lenguajes y frameworks
para Backend?
TITLE
Django

Spring
Flask
Java
Python
FastAPI

Go
Express Gin

JavaScript NestJS Ruby


Rails
Ruby

Laravel

PHP Symphony
HTTP
TITLE
DOMINIO

https://platzi.com/cursos

PATH /
PROTOCOLO
ENDPOINT
NAVEGADOR TITLE FRONTEND

HTML

CSS

REQUEST RESPONSE JS

DATOS

XML
DNS JSON

SERVER
1XX = INFO TITLE
2XX = INFO TITLE

200 = OK

201 = CREATED
3XX = TITLE
REDIRECT

301 = MOVED
4XX = TITLE
CLIENT ERROR

400 = BAD

404 = NOT FOUND

409 = CONFLICT
5XX = TITLE
SERVER ERROR

500 = ?

503 = ?
APIs
CLIENTES SERVIDORES

Servidor
1
ENDPOINTS
Servidor
/users 2
/users/create
/users/:id Servidor
3

Servidor
4
CLIENTES SERVIDORES

Servidor
1
ENDPOINTS
Servidor
/users 2
/users/create
/users/:id Servidor
3

Servidor
4
CLIENTES SERVIDORES

Servidor
1
ENDPOINTS
Servidor
/users 2
/users/create
/users/:id Servidor
3

Servidor
4
REST API
TITLE
domain.com

domain.com/users
domain.com/tasks
domain.com/companies
CRUD TITLE

CREATE = POST
READ = GET
UPDATE = PUT / PATCH
DELETE = DELETE
TITLE
endpoint method body response status
/users GET N/A [ {}, {} … ] 200
/users/:id GET N/A {} 200
/users POST { ... } { ... } 201
PUT /
/users/:id { ... } { ... } 201
PATCH
/users/:id DELETE N/A ✅ 201
Insomnia
& Postman
La nube
NUBE
CPU

RAM

SSD
platzi.com
TITLE
Address: Cra. 7a …
Lote: 2km2
TITLE
TITLE
REPO
LOCAL
REMOTO

PUSH

PULL
TITLE
LOCAL

REPO
REMOTO
LOCAL

LOCAL
TITLE
REPO
REMOTO
Pruebas ✅

Calidad ✅

Seguridad ✅
TITLE
El servidor
CPU

RAM

SSD
Cookies
y sesiones
TITLE

Almacena información en los navegadores


TITLE

Client Server
TITLE

Client Server
TITLE

Client Server
TITLE

Client Server
TITLE

Client Server

El server puede
verificar
la información
en la cookie
TITLE

Client Server

Con la cookie puede


recordar el usuario
TITLE

Client Server

Con la cookie se puede


manejar la sesión
TITLE
Navegador

Server

Mobile
TITLE
Navegador

Server

Mobile
Mobile no soporta
cookies ya que no
es un navegador
TITLE
Navegador

JWT Server

Mobile
JWT funciona
en mobile y en
navegadores
Bases
de datos
TITLE

Server
TITLE

En el server tenemos lógica


Server - Reglas de negocio
- Validación
- Autorización
- Etc.
TITLE

Server

CPU
RAM
Disk
TITLE

Server

Backend
CPU
RAM
Disk
Server

Drivers
Backend
TITLE
DB
Relacionales
SQL

No Relaciones
NoSQL
TITLE
Drivers
Backend

SQL

ORMS - POO
TITLE

Server

Backups
Drivers Replicación
Backend Escalamiento
Soporte
TITLE

Drivers
Server
Backend Server
Backups
Replicación
Escalamiento
Soporte
TITLE
¿Qué es el
escalamiento?
TITLE

Server
CPU
RAM
Disk
TITLE

Server

CPU ++
RAM ++
Disk ++
TITLE

Server

CPU ++
RAM ++
Disk ++
TITLE

Server

CPU ++
RAM ++
Disk ++
TITLE

Server

CPU ++
RAM ++
Disk ++
TITLE

Server Server Server


TITLE

Server Server Server

Load
Balancer
TITLE

Server Server Server

Load
Balancer
TITLE
TITLE

Server Server Server

Load
Balancer
¿Qué es la
replicación?
TITLE

Server Server Server

Load
Balancer
TITLE

Server Server Server

Load
Balancer
TITLE

Server Server Server

Load
Balancer
TITLE

Server Server Server


TITLE
TITLE

Write
TITLE

Read
TITLE

Server Server Server


¿Qué es
la caché?
955
844
955
844
1799
Primera vez = 30s

955
844
1799
Segunda vez = 2s

955
844
1799
Server
Lógica de negocio
Autorización
Server Autenticación
Conexión a DB Rules

Solicitudes
Lectura

Lógica de negocio
Autorización
Server Autenticación
Conexión a DB Rules

Solicitudes
Lectura

Lógica de negocio
Autorización
Server Autenticación
Conexión a DB Rules

Solicitudes
TITLE
Nueva Solicitud

¿Está en
caché?

Hace el proceso con server Retorna la información


/ DB

La guarda en caché
TITLE
Nueva Solicitud

¿Está en
caché?

Hace el proceso con server Retorna la información


/ DB

La guarda en caché
TITLE
Nueva Solicitud

¿Está en
caché?

Hace el proceso con Retorna la información


server / DB

La guarda en caché
TITLE
Nueva Solicitud

¿Está en
caché?

Hace el proceso con Retorna la información


server / DB

La guarda en caché
TITLE
Nueva Solicitud

¿Está en
caché?

Hace el proceso con Retorna la información


server / DB

La guarda en caché
TITLE
Nueva Solicitud

¿Está en
caché?

Hace el proceso con server Retorna la información


/ DB

La guarda en caché
TITLE
Nueva Solicitud

¿Está en
caché?

Hace el proceso con server Retorna la información


/ DB

La guarda en caché
TITLE
Nueva Solicitud

¿Está en
caché?

Hace el proceso con server Retorna la información


/ DB

La guarda en caché
TITLE
● E-commerce
● Sitios de noticias
● Blogs
● No es bueno para Realtime
● Evitar ataques DDOS
Colas
de tareas
Reportes
Backups
Gráficos
ZIPs, PDFS, CSVs
Un request se ejecuta
lo más pronto posible
y responde por el
mismo medio.
Un request se ejecuta
lo más pronto posible
y responde por el
mismo medio.
Una cola de tareas
eventualmente ejecuta un
proceso y puede responder
por otros medios.
Una cola de tareas
eventualmente ejecuta un
proceso y puede responder
por otros medios.
Cajero

Tarea

Tarea Tarea Tarea Tarea Tarea


Cajero

Tarea

Tarea Tarea Tarea Tarea Tarea

Fila
Server Server Server Tasks
Reportes
Backups
Gráficos
Zips, PDFS, CSVs
Server-Side
Rendering
TITLE

JSON
SERVER XML
FILES
HTML
TITLE

JSON
SERVER XML
FILES
HTML
TITLE

CSR SERVER

HTML
TITLE

CSR SSR

HTML
TITLE

CSR SSR

HTML es rápido.
Y bueno para los motores de búsqueda.

Pero NO es interactivo.
TITLE

CSR SSR

JSON no es tan rápido.


Malo para los motores de búsqueda.

Es altamente interactivo.
TITLE

CSR SSR

JSON
No es tan Rápido
Malo para los motores de búsqueda

Es altamente interactivo
TITLE

CSR SSR

Angular
VueJS
React
TITLE

CSR SSR

Es interactivo
Rápido
Bueno para los buscadores
HTML / JSON
TITLE

CSR SSR

Angular
VueJS
React / NextJS
Astro
Qwik
TITLE

CSR SSR

Angular
VueJS
React / NextJS
Astro
Qwik
TITLE

Vercel

Tasks Server Render Netfly


Server APIS Server

Firebase Hosting
¿Qué aprender
ahora?
TITLE
TITLE

You might also like