Salta el contingut

Rúbrica d'Avaluació: Projecte Final Apache + Docker

Informació General

Aquesta rúbrica avalua el Projecte Final d'Integració (Part 6). Els reptes 1-5 de les Parts 1-5 són formatius i es consideren requisits previs (veure secció de penalitzacions).


1. Servei Apache - Virtual Hosts i HTTPS (2,5 punts)

Criteri Excel·lent (2,5) Notable (1,7) Acceptable (0,9) Insuficient (0)
2 Virtual Hosts funcionals frontend.local i api.local accessibles i servint contingut diferenciat Un dels 2 virtual hosts funcional Virtual hosts configurats però amb conflictes Sense virtual hosts diferenciats
HTTPS i redirecció Certificat configurat, HTTP redirigeix a HTTPS correctament HTTPS funcional sense redirecció automàtica Certificat generat sense HTTPS operatiu Sense HTTPS
mod_rewrite i capçaleres de seguretat URLs sense extensió .html i capçaleres HSTS/X-Frame-Options/CSP presents Rewrite o capçaleres (no ambdós) Configuració parcial Cap de les dues mesures
Logging JSON Format de log personalitzat en JSON aplicat i verificable Logging present en format no-JSON Logging per defecte sense personalitzar Sense logs accessibles

Evidències requerides: captura d'accés a https://frontend.local i https://api.local, captura de redirecció HTTP→HTTPS, mostra del log en format JSON.


2. Serveis de Dades - MySQL, Redis, phpMyAdmin (2,5 punts)

Criteri Excel·lent (2,5) Notable (1,7) Acceptable (0,9) Insuficient (0)
MySQL amb esquema i dades Taules users i articles creades via script d'inicialització amb dades de prova Taules creades manualment sense script Només una taula creada Base de dades buida o inaccessible
Healthcheck i persistència Healthcheck de MySQL configurat i volum amb nom persistint dades entre reinicis Volum persistent sense healthcheck Dades es perden en reiniciar Sense volum
Redis operatiu Redis funcional amb límit de memòria configurat i utilitzat com a cache real (comptador de visites) Redis desplegat però sense ús funcional Redis present sense verificar Sense servei Redis
phpMyAdmin accessible Accés funcional a phpMyAdmin gestionant les taules de MySQL Accessible amb errors menors de connexió Desplegat sense connectar a MySQL No accessible

Evidències requerides: captura de phpMyAdmin mostrant les taules amb dades, captura del comptador de visites via Redis.


3. Xarxes i Seguretat (1,5 punts)

Criteri Excel·lent (1,5) Notable (1,0) Acceptable (0,5) Insuficient (0)
Segmentació de xarxes frontend-network i backend-network separades correctament, MySQL/Redis no exposats a frontend-network Xarxes creades sense segmentació efectiva Una única xarxa per a tot l'stack Sense xarxes definides
Credencials via .env Totes les contrasenyes en .env (no hardcodejades), .env afegit a .gitignore Credencials en .env però sense .gitignore Algunes credencials hardcodejades Contrasenyes hardcodejades al docker-compose.yml

Evidències requerides: captura de docker network ls i docker network inspect mostrant els serveis connectats a cada xarxa; contingut de .gitignore.


4. Funcionalitat de l'Aplicació Web (2,0 punts)

Criteri Excel·lent (2,0) Notable (1,4) Acceptable (0,7) Insuficient (0)
Pàgina principal funcional Mostra estadístiques via Redis, llista els 5 últims articles de MySQL i formulari de creació funcional 2 de les 3 funcionalitats presents 1 funcionalitat present Pàgina estàtica sense integració
API REST GET /api/articles, POST /api/articles i GET /api/stats retornen JSON vàlid 2 dels 3 endpoints funcionals 1 endpoint funcional Sense API funcional

Evidències requerides: captura de la pàgina principal amb dades reals, captura de resposta JSON de cada endpoint (p. ex. amb curl o Postman).


5. Documentació i Estructura del Projecte (1,5 punts)

Criteri Excel·lent (1,5) Notable (1,0) Acceptable (0,5) Insuficient (0)
README.md complet Arquitectura descrita, instruccions de desplegament, URLs i credencials d'accés, funcionalitats explicades Falta 1 dels 4 apartats Falten 2-3 apartats README absent o mínim
Estructura de directoris Segueix l'estructura especificada (apache/, mysql/, logs/, etc.) de forma clara i organitzada Estructura equivalent amb petites variacions Estructura desordenada Estructura no reconeixible

Bonificacions Opcionals

Activitat Bonificació
Healthcheck personalitzat per a cada servei de l'stack +0,5 punts
Nginx com a reverse proxy davant d'Apache +0,5 punts
Rate limiting amb mod_evasive +0,3 punts
Script de backup automàtic per a MySQL +0,3 punts
Monitoring (Prometheus/Grafana o similar) integrat +0,5 punts

Màxim bonificació total: +1,5 punts (nota màxima limitada a 10,0)


Penalitzacions

Situació Penalització
docker compose up -d falla en un entorn net (avaluador) -3,0 punts
Contrasenyes o tokens reals commitejats al repositori -1,0 punt
Ús de tag :latest en alguna imatge del projecte final -0,5 punts
Còpia detectada (stack idèntic sense personalització) Qualificació 0

Taula Resum de Puntuació

Secció Punts
1. Apache - Virtual Hosts i HTTPS 2,5
2. Serveis de dades (MySQL, Redis, phpMyAdmin) 2,5
3. Xarxes i seguretat 1,5
4. Funcionalitat de l'aplicació web 2,0
5. Documentació i estructura 1,5
TOTAL 10,0

Criteris de Superació

Per superar la pràctica (nota ≥ 5,0) cal:

  • ✅ Els 4 serveis (Apache, MySQL, Redis, phpMyAdmin) operatius amb docker compose up -d
  • ✅ Almenys 1 Virtual Host accessible
  • ✅ Base de dades amb les 2 taules i dades de prova
  • ✅ Almenys 1 endpoint de l'API funcional
  • ✅ README.md amb instruccions de desplegament

Data de creació: Juliol 2026 Autor: Curs M0375 - Serveis de Xarxa i Internet