Pregunta 1¿En qué capa pones el proceso que comprueba si hay reservas que se solapan a la misma hora?
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.
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ículo | Nombre en inglés | De qué se encarga | Nombre en libros de introducción |
|---|---|---|---|
| Capa de servidor Web | presentation tier | Devuelve los archivos de la pantalla | Frontend |
| Capa App | application tier | Decide y calcula | Backend |
| Capa BD | data tier | Guarda y lee los datos | Base 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.
- 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
- 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
- Guarda los registros de reservas y socios
- Lee y devuelve los registros que le indican
- Está en el servidor de base de datos
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.
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.
- 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
- 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
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.
| Capa | Lo que hace ahí | Pasa a | Lo que pasa |
|---|---|---|---|
| Capa Web | Recibe la entrada | Capa App | 12/24 18:00, 2 personas |
| Capa App | Comprueba si está libre | Capa BD | Instrucción de leer las reservas de ese día |
| Capa BD | Lee los registros | Capa App | 0 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.
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.
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.
- Al abrir http://localhost:3000 aparece el formulario de reservas
- Lee index.html y script.js y dibuja la pantalla
- Se arranca con node server.js
- Espera en el puerto 3000 y recibe las solicitudes
- Guarda los registros de reservas y socios en reserve.db
- Se ejecuta dentro de la misma computadora
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.
Verificación de conocimientos
Responde cada pregunta una a una.
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?