¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Arquitectura de software: capas, servicios y eventos

Después de esta lección: Puedo elegir entre capas, servicios o eventos según lo que necesita un sistema.

Lección de 55 min4 comandosLaboratorio de PostgreSQL y PostgREST: una base de datos y una API REST en el navegador

Qué es una arquitectura de software

Una arquitectura de software es la forma en que se reparten las partes grandes de un sistema y cómo se hablan entre sí. Los tres estilos más comunes son las capas, los servicios y los eventos.

Elegir bien depende de lo que el sistema necesita, no de lo que esté de moda. Un estilo que ayuda a un equipo grande puede estorbar a uno pequeño.

Al terminar esta lección

Nota

Puedo elegir entre capas, servicios o eventos según lo que necesita un sistema.

Palabras clave

PalabraQué significaEjemplo
Arquitecturacómo se reparten y se hablan las partes grandes de un sistema
Capaun nivel que solo habla con el de al ladopresentación, lógica, datos
Servicioun programa con un trabajo, al que otros piden por red
Eventoun aviso de que algo ha pasadosala reservada
Publicarenviar un evento sin saber quién lo recibe
Escucharesperar un tipo de evento para reaccionar

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Las capas reparten el trabajo por niveles

En un estilo de capas, cada nivel hace un tipo de trabajo y solo habla con el nivel de al lado. Lo habitual son tres: lo que ve la persona, las reglas del negocio y los datos.

Es sencillo de entender y de probar. Todo vive en un solo programa, así que un cambio pequeño se despliega entero y no hay red de por medio.

Los servicios separan el sistema en programas

En un estilo de servicios, cada parte es un programa aparte con un trabajo, y se hablan por red. El servicio de reservas, el de salas y el de avisos pueden tener equipos distintos.

Se puede cambiar o escalar uno sin tocar los demás. A cambio, hay red de por medio: las peticiones pueden fallar o tardar, y el sistema entero es más difícil de seguir.

Un error frecuente

Advertencia

Mucha gente cree que los servicios son siempre mejores que las capas porque son más modernos. Cada servicio añade red, fallos y trabajo de despliegue. Con un equipo pequeño y un sistema sencillo, las capas bastan y cuestan menos.

Los eventos avisan sin saber quién escucha

En un estilo de eventos, una parte publica un aviso cuando algo pasa: "sala reservada". Otras partes que lo escuchan reaccionan por su cuenta.

Quien publica no sabe quién escucha, así que se puede añadir un oyente nuevo sin tocarlo. A cambio, es más difícil seguir qué ocurre y en qué orden.

Ejemplo resuelto: cuándo encaja cada estilo

EstiloEncaja cuandoLo que cuesta
CapasHay un equipo pequeño y un sistema que cabe en un solo programaTodo se despliega junto
ServiciosHay tres o más equipos, o una parte necesita crecer solaRed, fallos y más despliegues
EventosMuchas partes deben reaccionar cuando algo pasaEs difícil seguir el orden de lo que ocurre

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Las partes del laboratorio ya son tres

El laboratorio es un ejemplo real. Tu terminal, la API y la base de datos son tres partes que se hablan por red. Los comandos las miran sin cambiar nada.

Primero pides a la base de datos una suma, que ella resuelve sola. Luego pides a la API su raíz, que debe responder con un 200. Por último, publicas un evento de ejemplo en la base. Da primero a psql la contraseña.

Dar a psql la contraseña

Comando
export PGPASSWORD=shop

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pedir una suma a la base de datos

Comando
psql -h db -U shop -c "select 1 + 1 as total"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pedir a la API su dirección raíz

Comando
curl -s -o /dev/null -w "%{http_code}\n" "http://api:3000/"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Publicar un evento de ejemplo

Comando
psql -h db -U shop -c "notify reservas, 'sala A1 reservada'"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Sobre este laboratorio y su código: Laboratorio de PostgreSQL y PostgREST: una base de datos y una API REST en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.