Link Shortener — FAS @ UniTN

URL shortener self-hosted con stack di osservabilità production-grade

Di cosa si tratta?

Un link shortener self-hosted realizzato come progetto di gruppo per il corso di Fondamenti di Amministrazione di Sistema a UniTN. L'applicazione Flask espone un REST API (documentata con Swagger/OpenAPI) per creare e risolvere link brevi, persistendo i dati in MySQL. L'intero stack gira su Docker Compose e può essere deployato su un server remoto tramite playbook Ansible.

Stack di Osservabilità

L'obiettivo principale del corso era costruire e operare uno stack di osservabilità production-grade accanto all'applicazione — non solo consegnare l'app, ma essere in grado di vederla girare.

  • Prometheus raccoglie metriche applicative personalizzate: request rate, latenza P50/P95/P99, link creati totali, redirect totali.
  • Loki + Promtail aggregano i log applicativi JSON strutturati in uno store di log centralizzato e interrogabile.
  • Le dashboard Grafana sono auto-provisionate all'avvio dello stack — nessuna configurazione manuale richiesta.
  • Sentry cattura e raggruppa le eccezioni dell'applicazione con stack trace completi per un debugging rapido.

Stack Tecnologico

Python / Flask MySQL Prometheus Grafana Loki Promtail Docker Compose Ansible Sentry Swagger / OpenAPI

Deployment

L'intero stack — applicazione, database e pipeline di osservabilità — è definito in Docker Compose. Un set di playbook Ansible gestisce il provisioning e il deployment su un server Linux remoto: un approccio infrastructure-as-code ripetibile dove l'intero stato del sistema è descritto in file versionati.

Team

Progetto di gruppo sviluppato con Ismaele De Giorgi.