Rúbrica d'Avaluació: Projecte Final Apache + Docker
Informació General
- Pràctica: Pràctiques (reptes) i projecte de Docker i Apache HTTP Server
- Puntuació total: 10,0 punts
- Modalitat: Individual
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