El modelo web de tres capas — el reparto entre Web, aplicación y base de datos

Este artículo forma parte del curso Fundamentos de informática, que construye desde cero los conocimientos prácticos de informática que necesitas como mínimo para programar y hacer vibe coding.
Frontend y backend son otros nombres para alguna de las tres capas: web, aplicación y base de datos. Los diagramas muestran cómo una solicitud recorre las capas.

Este artículo trata el modelo web de tres capas.

Es una forma de ver una app web como tres roles: web, aplicación y base de datos.

El frontend y el backend de los libros para principiantes son otros nombres para alguna de estas tres.

Cómo se corresponden los términos de los libros con las tres capas
===FrontendBackendBase de datosCapa WebCapa AppCapa BDMostrar yrecibir entradasDecidir y calcularpedir leer/escribirGuardar yleer los datosSolicitudLeer/escribir
La fila de arriba tiene los términos que aparecen en libros y cursos para principiantes, la del medio los nombres que usa este artículo y la de abajo, de qué se encarga cada capa. Las dos cajas unidas por una línea doble son lo mismo con distinto nombre.

El texto usa los nombres completos; los diagramas son estrechos, así que los acortan a capa Web, capa App y capa BD.

El modelo de tres capas divide una app en los roles web, aplicación y base de datos

El modelo de tres capas (three-tier architecture: una estructura que separa la app en tres roles, web, aplicación y base de datos) es la forma básica de una app web, y a cada una de esas partes se le llama capa (tier).

Nombre en este artículoNombre en inglésDe qué se encargaNombre en libros de introducción
Capa de servidor Webpresentation tierDevuelve los archivos de la pantallaFrontend
Capa Appapplication tierDecide y calculaBackend
Capa BDdata tierGuarda y lee los datosBase de datos

El navegador del usuario ejecuta los archivos que devuelve la capa de servidor Web y dibuja la pantalla.

La estructura en sí, es decir, en qué partes divides una app y cómo las conectas, es la arquitectura (architecture), y la «arquitectura de tres capas» de los libros para principiantes es lo mismo que el modelo de tres capas de este artículo.

Dentro de un solo my-app
my-app (app de reservas para socios)
Capa Web (frontend)
  • Muestra el formulario y la lista de reservas
  • Recibe una entrada como 12/24 18:00, 2 personas
  • Se ejecuta en el navegador del usuario
Capa App (backend)
  • Comprueba si el 12/24 18:00 está libre
  • Confirma la reserva y devuelve el resultado a la capa de servidor Web
  • Se ejecuta en el servidor
Capa BD (base de datos)
  • Guarda los registros de reservas y socios
  • Lee y devuelve los registros que le indican
  • Está en el servidor de base de datos
Las viñetas indican de qué se encarga cada capa en la app de reservas.

Las tres capas van de arriba abajo según su cercanía al usuario.

Lo único que el usuario maneja directamente es la pantalla que devuelve la capa de servidor Web, y las otras dos quedan fuera de la vista.

La pantalla que devuelve la capa de servidor Web se ejecuta dentro del navegador, una por usuario.

Con tres usuarios hay tres pantallas, y los tres comparten las mismas dos capas restantes.

Las tres pantallas de la izquierda se ejecutan cada una en una computadora o un teléfono distinto.

De A y B, que eligieron la misma hora, a quien se procesa después se le rechaza porque los registros están reunidos en una sola capa de base de datos.

Por muchas pantallas que haya, hay un solo destino y un solo conjunto de registros.

El modelo de tres capas es un reparto de trabajo dentro de una sola app

El modelo de tres capas es una forma de dividir una app en tres responsabilidades: web, aplicación y base de datos.

El frontend de los libros para principiantes es la capa de servidor Web y el backend es la capa de servidor de aplicaciones; de la pantalla que devuelve la capa de servidor Web hay una por usuario, mientras que una sola capa de servidor de aplicaciones y una sola capa de base de datos las comparten todos.

Por qué dividir en capas — arreglas en un solo lugar y decides para todos en un solo lugar

Hay dos razones para dividir.

La primera es que cuando quieres cambiar algo, el lugar que arreglas queda dentro de una sola capa.

El mismo cambio toca un área distinta según cómo hayas dividido
Cambiar el colordel botónDividido en capassolo la capa WebTodo en una piezabuscar el colorCapas App y BDsin tocarRevisar procesossin relación
Arriba está lo que quieres cambiar. A la izquierda, cuando está dividido en capas; a la derecha, cuando está todo en una pieza; y la fila de abajo es lo que hay que volver a comprobar en cada caso.

Si está dividido, lo único que tocas es un archivo de la capa de servidor Web.

Si está todo en una pieza, primero buscas el lugar que fija el color y después vuelves a comprobar que los procesos sin relación siguen funcionando.

La segunda es que hace falta un lugar que decida sobre todas las solicitudes a la vez y guarde el resultado.

La pantalla que devuelve la capa de servidor Web se ejecuta en el navegador de un solo usuario y no sabe nada de lo que escribieron los demás.

Las reglas de esas decisiones propias de la app son la lógica de negocio (business logic) y van en la capa de servidor de aplicaciones.

Lo que comprueba la capa de servidor Web y las reglas que van en la capa de servidor de aplicaciones
my-app (app de reservas para socios)
Lo que se comprueba en la pantalla
  • Si el campo de la fecha se envió vacío
  • Si el número de personas es un número
  • Puede avisar en el acto, antes de enviar
Reglas en la capa App (lógica de negocio)
  • Si hay reservas que se solapan el 12/24 18:00
  • Si el socio supera su límite de reservas
  • Puede decidir tras leer los registros de todos
El marco exterior es un my-app. La caja de arriba es lo que la capa de servidor Web comprueba en el acto; la de abajo es la lógica de negocio que va en la capa de servidor de aplicaciones.

La pantalla que devuelve la capa de servidor Web también comprueba cosas como si el campo de la fecha está vacío.

Pero esa comprobación la hace un archivo que ya llegó al navegador del usuario, así que el usuario puede reescribirla o saltársela.

Por eso la capa de servidor de aplicaciones comprueba lo mismo otra vez.

Toma el caso en que dos personas envían el mismo 12/24 18:00 en el mismo momento y compara cómo cambia el resultado según dónde pongas esta decisión.

La diferencia está en qué se mira al tomar la decisión.

El lado de la pantalla solo mira la lista de su propio navegador, mientras que la capa de servidor de aplicaciones lee los registros de todos antes de decidir.

Con la decisión del lado de la pantalla, los usuarios A y B solo ven su propia lista, así que los dos deciden que el hueco está libre.

Con la decisión en la capa de servidor de aplicaciones, todas las solicitudes llegan a un mismo lugar y se pueden leer los registros y comprobarlos por orden.

Dividir sirve para acotar dónde arreglas y dónde decides

Si divides en capas, cuando quieres arreglar algo tocas un solo lugar.

La otra razón es que hace falta ver y decidir para todos en un mismo lugar: las pantallas están separadas por usuario, así que no pueden saber lo que enviaron los demás.

Cómo cruzan los datos las capas hasta que se guarda una reserva

La capa de servidor Web y la capa de servidor de aplicaciones se conectan con solicitudes y respuestas; la capa de servidor de aplicaciones y la capa de base de datos se conectan con instrucciones de lectura y escritura.

CapaLo que hace ahíPasa aLo que pasa
Capa WebRecibe la entradaCapa App12/24 18:00, 2 personas
Capa AppComprueba si está libreCapa BDInstrucción de leer las reservas de ese día
Capa BDLee los registrosCapa App0 reservas el 12/24

Cada capa hace solo su parte y la pasa a la siguiente.

La capa de servidor Web nunca se conecta directamente con la capa de base de datos: en medio está siempre la capa de servidor de aplicaciones.

Cuando los registros vuelven de la capa de base de datos, la capa de servidor de aplicaciones decide el resultado.

El camino se parte en dos en la capa de servidor de aplicaciones y vuelve una sola respuesta
12/24 18:00solicitud para 2Capa Applee los registrosEstaba libre→ escribirYa había 1 reserva→ no escribirRespuestaa la capa Web
Una solicitud llega desde la izquierda y se parte hacia arriba o hacia abajo según lo que muestre la lectura de los registros. Aunque se parta, a la capa de servidor Web vuelve una sola respuesta.

Sea cual sea la rama, a la capa de servidor Web vuelve una sola respuesta.

Las tres capas son la forma básica que presenta este artículo, y las apps reales tienen excepciones.

Hay configuraciones que se conectan directamente a un servicio externo en vez de que construyas tú una capa de servidor de aplicaciones, y otras en las que la capa de servidor de aplicaciones está partida en varias piezas.

Aun así, puedes leerlos preguntando de cuál de las tres se encarga cada parte: web, aplicación o base de datos.

Un solo camino de bajada y de vuelta

La entrada del usuario baja de la capa de servidor Web a la capa de servidor de aplicaciones y a la capa de base de datos, y vuelve por el mismo camino.

La capa de servidor Web nunca se conecta directamente con la capa de base de datos: la capa de servidor de aplicaciones lee los registros, decide el resultado y devuelve una sola respuesta.

Qué parte de tu app es cada capa — tres capas no significan tres máquinas

Si decides primero a qué capa pertenece cada archivo y cada framework de los libros para principiantes, los pasos empiezan a tener sentido.

Las mismas tres capas, hechas con JavaScript y hechas con Python
==Capa de servidor WebCapa de servidorde aplicacionesCapa de BDindex.htmlscript.jsserver.js(Express)PostgreSQLindex.htmlscript.jsviews.py(Django)PostgreSQL
Cada fila es una capa. Las columnas del medio y de la derecha son los archivos o productos de esa capa. Las filas de arriba y de abajo son iguales en los dos casos, y solo cambia la del medio.

La capa de servidor Web es el mismo conjunto de archivos en los dos casos.

Lo que el navegador puede leer directamente es HTML, CSS y JavaScript, así que solo puedes elegir lenguaje a partir de la capa de servidor de aplicaciones.

Una capa es una forma de repartir roles, no un número de computadoras.

Las tres capas que se ejecutan dentro de una sola computadora tuya
Tu computadora
Navegador (capa Web)
  • Al abrir http://localhost:3000 aparece el formulario de reservas
  • Lee index.html y script.js y dibuja la pantalla
Servidor local (capa App)
  • Se arranca con node server.js
  • Espera en el puerto 3000 y recibe las solicitudes
Base de datos (capa BD)
  • Guarda los registros de reservas y socios en reserve.db
  • Se ejecuta dentro de la misma computadora
El marco exterior es tu computadora. Las tres capas se ejecutan dentro de esta única máquina, y el reparto en capas es el mismo que después de publicar.

Cuando abres http://localhost:3000 en tu propia máquina, las tres capas están dentro de esa computadora.

Al publicar, lo habitual es que cada capa se coloque en un servidor distinto, y ese trabajo se trata en el artículo «Despliegue y variables de entorno — de funcionar en tu computadora a estar publicado».

Solo la pantalla que devuelve la capa de servidor Web se ejecuta en el dispositivo del usuario; la capa de servidor de aplicaciones y la capa de base de datos están del lado del servidor público.

Aunque muevas la capa de base de datos a otra máquina, la relación no cambia: la capa de servidor de aplicaciones le envía instrucciones de lectura y escritura.

El número de capas y el número de computadoras son cosas distintas

Que esté dividido en tres capas no significa que estén funcionando tres computadoras.

En tu máquina las tres están dentro de tu computadora, y al publicar lo habitual es que cada capa se coloque en un servidor distinto.

QUIZ

Verificación de conocimientos

Responde cada pregunta una a una.

Pregunta 1¿En qué capa pones el proceso que comprueba si hay reservas que se solapan a la misma hora?

Pregunta 2¿Qué pasa entre la capa de servidor Web y la capa de servidor de aplicaciones?

Pregunta 3Abres http://localhost:3000 en tu propia máquina y ejecutas la base de datos también en tu computadora. ¿Dónde están las tres capas?