Apuntes DAM
Tema 1 de 7DWES · 2º DAW

Desarrollo Web en Entorno Servidor

Arquitecturas y Tecnologías del Servidor

Qué hace el backend, HTTP en detalle (métodos, códigos, idempotencia), servidores web y de aplicaciones, cómo se ejecuta PHP, lenguajes del servidor, arquitecturas y entorno de desarrollo con Docker.

45 min lecturaPrincipiante

1. La parte de la web que no se ve

Cuando compras algo en una tienda online, la página que ves es solo la superficie. Detrás, un programa que se ejecuta en el servidor comprueba que has iniciado sesión, consulta el stock en una base de datos, calcula el precio con tus descuentos, registra el pedido y envía el correo de confirmación. Ese programa es lo que se estudia en este módulo: el desarrollo en entorno servidor, también llamado backend.

La diferencia con el código del cliente es fundamental. El código del servidor se ejecuta en una máquina que controlas tú, así que el usuario no puede verlo ni modificarlo. Por eso es ahí donde viven las reglas de negocio, la seguridad y el acceso a los datos. El navegador solo recibe el resultado: una página HTML ya construida o unos datos en JSON.

El servidor es la cocina de un restaurante

La comanda
El navegador envía una petición HTTP: qué quiere, con qué datos y quién es.
El cocinero
El programa del servidor interpreta la petición, consulta la despensa (la base de datos) y prepara la respuesta.
La puerta de la cocina
El cliente nunca entra: solo recibe el plato terminado. Lo que pasa dentro es invisible y seguro.

2. HTTP, el idioma entre cliente y servidor

Todo el trabajo del servidor gira alrededor de HTTP, así que merece la pena conocerlo bien. Es un protocolo de texto sencillo: el cliente envía una petición y el servidor devuelve una respuesta. Cada petición es independiente de las anteriores (HTTP no tiene memoria, es sin estado), y por eso más adelante necesitaremos cookies y sesiones para recordar quién es cada usuario.

Petición y respuesta
1POST /carrito/anadir HTTP/1.1
2Host: tienda.com
3Content-Type: application/x-www-form-urlencoded
4Cookie: PHPSESSID=8f3a…
5
6producto=42&cantidad=2
7
8HTTP/1.1 302 Found
9Location: /carrito
10Set-Cookie: aviso=anadido; HttpOnly
MétodoSignificado¿Modifica datos?¿Idempotente?
GETLeer un recursoNoSí
POSTCrear o enviar datos para procesarSíNo
PUTReemplazar un recurso completoSíSí
PATCHModificar parte de un recursoSíNo necesariamente
DELETEBorrar un recursoSíSí

Idempotente significa que repetir la petición deja el sistema igual que hacerla una vez. Borrar el producto 7 dos veces tiene el mismo efecto que borrarlo una; crear un pedido dos veces, no. Esta distinción explica por qué el navegador te avisa al recargar una página a la que llegaste con POST.

CódigoFamiliaLos más habituales
1xxInformación101 cambio de protocolo (WebSockets)
2xxÉxito200 OK · 201 creado · 204 sin contenido
3xxRedirección301 permanente · 302 temporal · 304 no modificado (usa la caché)
4xxError del cliente400 petición mal formada · 401 sin autenticar · 403 prohibido · 404 no encontrado · 422 datos no válidos
5xxError del servidor500 error interno · 502 pasarela incorrecta · 503 no disponible
⭐PROTOCOLO HTTP Requests y Responses con: GET, POST, PUT, PATCH y DELETE | DESARROLLO WEB — TodoCode

3. Servidores web, de aplicaciones y lenguajes

En una aplicación web suelen colaborar dos tipos de programa. El servidor web (Apache, Nginx) recibe las conexiones HTTP, sirve directamente los ficheros estáticos (imágenes, CSS, JavaScript) y pasa las peticiones dinámicas al servidor de aplicaciones o intérprete del lenguaje, que ejecuta tu código y genera la respuesta. En PHP, lo habitual hoy es Nginx con PHP-FPM, un conjunto de procesos que ejecutan los scripts; en Java, un servidor como Tomcat; en Node.js, el propio programa escucha en un puerto.

Qué ocurre en una petición a una página PHP

  1. El navegador pide /productos.php?categoria=teclados.
  2. Nginx ve la extensión .php y pasa la petición a PHP-FPM.
  3. PHP ejecuta el script desde el principio: rellena $_GET, $_POST, $_COOKIE…, consulta la base de datos y escribe HTML con echo.
  4. Todo lo que el script escribe se convierte en el cuerpo de la respuesta.
  5. Al terminar, PHP olvida todo: la siguiente petición empieza de cero. Por eso los datos que deben durar se guardan en la base de datos, en la sesión o en cookies.
TecnologíaLenguajePuntos fuertesDónde se usa
PHP (Laravel, Symfony)PHPFácil de desplegar, enorme ecosistema, alojamiento baratoWordPress (más del 40 % de las webs), tiendas, pymes
Java (Spring Boot)JavaRobusto, tipado, muy escalableBanca, seguros, grandes empresas
Node.js (Express, NestJS)JavaScript / TypeScriptMismo lenguaje en cliente y servidor, tiempo realStartups, APIs, aplicaciones en tiempo real
Python (Django, FastAPI)PythonRapidez de desarrollo, ciencia de datosPlataformas de contenido, IA, APIs
C# (ASP.NET Core)C#Rendimiento, herramientas de MicrosoftEmpresas con tecnología Microsoft

En este módulo usaremos PHP: es el lenguaje de servidor que más se enseña en DAW, sigue moviendo una parte enorme de la web y, desde la versión 8, es un lenguaje moderno, rápido y con tipos. Todo lo que aprendas (validar, proteger, organizar en MVC, acceder a datos, diseñar APIs) se traslada a cualquier otro.

4. Arquitecturas de aplicación

La forma de organizar una aplicación en capas o piezas es su arquitectura. La más clásica es la de tres capas: presentación (lo que ve el usuario), lógica de negocio (las reglas) y datos (la base de datos). Separarlas permite cambiar una sin romper las demás: puedes rediseñar la web o añadir una app móvil sin tocar las reglas del negocio.

ArquitecturaIdeaCuándo
MonolitoToda la aplicación en un solo proyecto y despliegueLa mayoría de proyectos, sobre todo al empezar
Backend + frontend separadosEl servidor expone una API en JSON y una SPA o app móvil la consumeCuando hay varios clientes (web, móvil, terceros)
MicroserviciosMuchos servicios pequeños e independientes que se comunican por redEquipos grandes con partes que escalan por separado
ServerlessFunciones que el proveedor ejecuta bajo demandaTareas puntuales o tráfico muy irregular

Empieza por el monolito

Los microservicios resuelven problemas de organizaciones grandes, pero añaden mucha complejidad: red, despliegues, datos repartidos. Un monolito bien organizado en capas es la mejor opción para casi cualquier proyecto que vayas a hacer en el ciclo y en tus primeros trabajos.

5. Prepara tu entorno de trabajo

Para programar en PHP necesitas el intérprete, un servidor web y una base de datos. Hay tres formas habituales de tenerlos, de más sencilla a más profesional:

OpciónQué esVentajas e inconvenientes
Servidor integrado de PHPphp -S localhost:8000 en la carpeta del proyectoInmediato para practicar; no sirve para producción
XAMPP / LaragonPaquete que instala Apache, PHP y MariaDB juntosCómodo en Windows; las versiones no coinciden con las del servidor real
DockerContenedores con las mismas versiones que en producciónReproducible y profesional; requiere aprender Docker (lo verás en Despliegue)
compose.yaml
1services:
2  web:
3    image: php:8.3-apache
4    ports: ["8080:80"]
5    volumes: ["./src:/var/www/html"]
6    depends_on: [db]
7  db:
8    image: mariadb:11
9    environment:
10      MARIADB_DATABASE: tienda
11      MARIADB_USER: tienda
12      MARIADB_PASSWORD: cambia-esta-clave
13      MARIADB_ROOT_PASSWORD: otra-clave-distinta

Con este fichero, docker compose up levanta Apache con PHP en http://localhost:8080 sirviendo la carpeta src, y una base de datos MariaDB a la que PHP se conecta con el nombre de host db. Completa el entorno con Visual Studio Code (extensión PHP Intelephense), Composer para las dependencias y Git.

6. Ejercicios

Ejemplo Guiado
Fácil

Lee una conversación HTTP

Abre las herramientas de desarrollo (F12 → Red), inicia sesión en una web que uses y busca la petición del formulario de acceso. Responde: ¿qué método usa?, ¿a qué URL?, ¿qué código de estado devuelve?, ¿qué cabecera Set-Cookie recibe y con qué atributos?, ¿a dónde te redirige después? Explica por qué crees que ha elegido ese método y ese código.

Ejemplo Guiado
Medio

Elige la tecnología

Recomienda una tecnología de servidor (PHP con Laravel, Java con Spring Boot, Node.js o Python con Django) y una arquitectura para cada caso, justificándolo: 1. La web de una academia con blog y formulario de contacto, alojamiento económico. 2. La plataforma interna de un banco, con un equipo de 40 desarrolladores Java. 3. Un chat en tiempo real para atención al cliente. 4. Una API que sirve datos a una app móvil y a una web hecha en React.

Ejercicio Práctico
Medio

Tu primer entorno con Docker

Crea un proyecto con el compose.yaml del tema, añade src/index.php que muestre la fecha actual, la versión de PHP (PHP_VERSION) y la lista de extensiones cargadas, y compruébalo en el navegador. Después añade un script src/db.php que se conecte a MariaDB con PDO y muestre «Conexión correcta» o el mensaje de error.

¿Has terminado este tema?

Crea una cuenta gratis para guardar qué temas has terminado, subir de nivel y ganar medallas.

Guardar mi progreso