FastDelivery — tracciamento pacchi
Sistema di tracciamento nazionale con QR/RFID, infrastruttura cloud AWS, REST API, sicurezza GDPR, GPS tracking automezzi. Tutti e 4 i quesiti della seconda parte.
Scenario operativo
FastDelivery è un corriere nazionale che opera tramite Sedi Operative (SO) dislocate nelle città italiane e Centri di Smistamento Regionale (CSR) per gestire il trasporto interregionale. Esempio di percorso: un pacco da Voghera (Lombardia) verso Barletta (Puglia) viene ritirato dalla SO di Voghera, inoltrato al CSR di Milano, poi al CSR di Bari, e infine alla SO di Barletta per la consegna.
Sfide tecniche da affrontare
| Sfida | Vincolo | Impatto |
|---|---|---|
| Identificazione univoca | Ogni pacco deve avere un codice non duplicabile, resistente a manomissioni | Determinare il formato (UUID, QR code, RFID) e come generarlo |
| Tracciamento in tempo reale | Presa in carico, transito per SO/CSR, consegna devono essere registrate istantaneamente | Infrastruttura IT con API, dispositivi mobili, rete connessa |
| Consistenza dati | Milioni di pacchi in movimento simultaneamente; ogni evento va verificato | DB scalabile, ridondanza, backup |
| Sicurezza e continuità | Dati personali mittente/destinatario (GDPR), criticità operativa se sistema cade | Cifratura, autenticazione, fault tolerance, RTO/RPO |
Tre ipotesi da sviluppare nella prima parte
- Procedura operativa: come sono acquisiti i dati, come identificato il pacco, come tracciato in ogni passaggio
- Infrastruttura IT: dispositivi (trasportatori, magazzinieri), comunicazioni (rete, protocolli), server (on-prem vs cloud)
- Sicurezza e continuità: protezione dati, autenticazione, disaster recovery, vincoli RTO/RPO
Identificazione univoca del pacco
Ogni pacco riceve un Codice Pacco Univoco (CPU) generato al momento della richiesta online dal cliente. Formato proposto: FD-YYYY-XXXXXX (es. FD-2024-AB7K2M) — 14 caratteri alfanumerici univoci su scala nazionale.
- Stampato su etichetta del pacco
- Leggibile da smartphone trasportatori
- Include URL tracking + CPU cifrato
- Tag passivo ISO 14443 HF 13.56 MHz
- Lettura automatica ai varchi SO/CSR
- Zero contatto fisico richiesto
- Gateway RFID alle entrate/uscite
Ciclo di vita del pacco — flusso di tracciamento
| # | Fase | Attore | Evento registrato | Dati acquisiti |
|---|---|---|---|---|
| 0 | Richiesta online | Cliente mittente | Form web con dati mittente/destinatario | CPU, timestamp, percorso calcolato da algoritmo |
| 1 | Presa in carico SO-A | Trasportatore | Scansione QR via app smartphone | Timestamp, GPS, stato=IN_TRANSITO |
| 2 | Ingresso SO-A magazzino | Gate RFID automatico | Lettura tag al varco entrata | Timestamp ingresso, posizione magazzino |
| 3 | Uscita SO-A → CSR | Magazziniere | Scan barcode su bancale di spedizione | Timestamp uscita, ID mezzo, CSR destinazione |
| 4 | Transito CSR | Gate RFID + smistamento | Lettura automatica ai nastri trasportatori | Ingresso CSR, uscita CSR, corsia smistamento |
| 5 | Ricezione SO-B | Gate RFID | Lettura tag al varco SO destinazione | Timestamp ricezione, posizione magazzino |
| 6 | Consegna finale | Trasportatore | Scansione QR + firma digitale destinatario | Timestamp, firma, foto opzionale, GPS, stato=CONSEGNATO |
Acquisizione dati mittente e destinatario (GDPR-compliant)
Al momento della richiesta online, il mittente fornisce consenso esplicito al trattamento dei dati personali. I dati sono:
• Memorizzati cifrati (AES-256 at-rest) nel database
• Trasmessi su HTTPS TLS 1.3 (in transit)
• Conservati per 5 anni (obblighi fiscali) con diritto alla cancellazione su richiesta
• Separati per ruolo: il destinatario riceve notifica con link tracking ma senza dati del mittente
2a — Dispositivi per trasportatori e magazzinieri
| Ruolo | Dispositivo | Hardware | Software/App |
|---|---|---|---|
| Trasportatore | Smartphone rugged Android | IP65, batteria 12h, GPS, 4G LTE, NFC, fotocamera | App FastDelivery: scansione QR, GPS, firma digitale, notifiche push, mode offline |
| Magazziniere SO/CSR | Palmare industriale | Scanner 1D/2D, WiFi 802.11ac, touchscreen, IP54 | Client web responsive + lettore codice barcode/QR |
| Gate RFID varco | Portale RFID UHF | Lettore 860–960 MHz, range 3–5 m, 500 tag/sec, PoE | Middleware RFID con API REST al sistema centrale |
| Stampante etichette | Stampante termica con encoder RFID | Stampa + scrittura tag in passaggio singolo | Driver integrato nel gestionale |
2b — Modalità di comunicazione
| Collegamento | Protocollo | Dettaglio |
|---|---|---|
| Trasportatore → server | HTTPS REST API (TLS 1.3) | POST /spedizioni/{cpu}/eventi. Bearer JWT(Json Web Token) per auth. Payload JSON cifrato. Retry offline con queue locale per permettere di salvare le operazioni in locale offline e sincronizzarle quando la rete torna disponibile. |
| Magazzino WiFi | WPA2-Enterprise 802.1X | VLAN dedicata magazzino. Rete 192.168.x.0/24 locale. DNS split che permette di utilizzare lo stesso nome di dominio per accedere alle risorse sia dall’ufficio (IP privato) che da fuori (IP pubblico). |
| Gate RFID | GbE cablato + rete locale | Isolamento fisico dalla rete guest. Connessione a API server via tunnel VPN site-to-site SO/CSR→data center. |
| SO/CSR → server centrale | IPSec IKEv2 VPN | Tunnel site-to-site per traffico interno. Endpoint per ogni SO/CSR. Failover automatico su rottura tunnel. |
| Backup / Replicazione | HTTPS + SSH | Replica DB master-slave. Backup incrementali notturni. Cross-region offsite che consiste nell’ archiviare dati, sistemi o backup in una posizione geografica diversa rispetto alla regione principale di produzione. |
2c — Architettura server: confronto on-premise vs cloud
| Componente | Soluzione | Costo/nota |
|---|---|---|
| Web server | 2× con load balancer HW | ~€150k + manutenzione |
| Database | MySQL 8 master-slave su 2 server + NAS backup | RPO (Recovery Point Objective) max 24h, RTO (Recovery Time Objective) ~1h |
| Storage | SAN (Storage Area Network) con RAID-10, 20 TB raw | Scaling manuale, costo incrementale |
| Connectivity | Dual ISP con BGP failover, rack datacenter proprietario | ~€2-3k/mese |
| Problema | Scaling difficile con traffico stagionale; team IT 24/7; DR site (disaster Recovery) aggiuntivo costoso | |
| Servizio AWS | Uso | Vantaggio |
|---|---|---|
| ECS (Elastic Container Service) + Fargate | Container API REST (auto-scaling 2–20 istanze) | Scale to zero di notte (risparmio se non c’è attività), paghi solo quello che usi |
| Aurora MySQL | DB managed | Failover < 30s, backup automatici, Zero RPO |
| ElastiCache Redis | Cache sessioni + rate limiting | Sub-ms latency per letture frequenti |
| S3 + CloudFront | Firme digitali, foto consegna, gestione asset statici | Scalabilità illimitata |
| Route 53(DNS) + ALB (Application Load Balancer) | DNS + load balancer | Failover DNS < 60s, health check automatici |
| SQS (Simple Queue Service) + Lambda | Code eventi RFID + processing asincrono | Rendono il sistema totalmente resiliente e gestiscono il traffico in modo asincrono, evitando di perdere dati durante il failover |

Minacce e protezioni — livelli di sicurezza
| Asset | Minaccia | Contromisura | Standard |
|---|---|---|---|
| Smartphone/palmare | Furto, smarrimento, malware | MDM con wipe remoto, crittografia disco, PIN/biometrico obbligatorio, app whitelist | Android Keystore, Knox |
| Gate RFID | Clonazione tag, intercettazione RF | Tag con cifratura AES-128, autenticazione challenge-response, rete LAN isolata VLAN | ISO 29167 |
| Rete WiFi | Accesso non autorizzato | WPA3-Enterprise 802.1X, RADIUS server, SSID nascosto, IDS wireless | IEEE 802.11i |
| DB Server | Accesso non autorizzato, SQL injection | TLS 1.3 in transito, AES-256 at-rest, prepared statements, RBAC ruoli | GDPR art. 32 |
| API REST | Man-in-the-middle, reverse engineering | Certificate pinning su app mobile, JWT con scadenza, rate limiting, WAF | OWASP Top 10 |
Business Continuity: RTO e RPO
| Componente | Strategia FT | RTO | RPO |
|---|---|---|---|
| API server (ECS) | Multi-AZ auto-scaling, istanza sostitutiva in 60s | < 60s | 0 |
| DB Aurora | Multi-AZ Primary+Standby, failover automatico | < 30s | ≈ 0 |
| Load Balancer (ALB) | Nativamente ridondato 3 AZ | 0 | 0 |
| SO offline | App mobile store-and-forward: buffering locale + sync al ripristino | N/A | < 1h |
| Disaster Recovery | S3 cross-region replica (eu-west-1), snapshot DB daily, test restore mensile | < 4h | < 24h |
- Backup: snapshot Aurora ogni 5 min (PITR), S3 cross-region continuo, test restore mensile
- Monitoring: CloudWatch + PagerDuty alerting 24/7, SLA uptime 99.9% (~8.7h downtime/anno)
- Incident response: runbook per scenari critici, team on-call con escalation
- Change management: deploy blue/green zero-downtime, rollback automatico
Schema concettuale ER — entità principali
Entità: CLIENTE, SPEDIZIONE, EVENTO_TRACCIAMENTO, NODO_LOGISTICO, OPERATORE
Relazioni: Cliente (1) ←richiede→ (N) Spedizione | Spedizione (1) ←genera→ (N) Evento | Evento (N) ←presso→ (1) Nodo | Nodo si specializza in: SO, CSR
Modello logico — DDL MySQL
Pagina web — tracking pubblico (PHP)
Soluzioni tecnologiche — confronto
| Tecnologia | Precisione | Latenza | Costo | Scelta |
|---|---|---|---|---|
| GPS puro (ricevitore) | 3–5 m outdoor | 1–5 sec | Basso | Supporto primario outdoor |
| A-GPS (assisted) | 5–15 m | < 2 sec (fix rapido) | Basso | Integrato smartphone 4G |
| OBD-II + GPS tracker | 3–5 m | 30 sec | Medio (€50–150/device) | ✓ Scelta principale |
| Cell-ID / LBS | 50–300 m | Istantaneo | Zero (rete operatore) | Fallback in tunnel |
Protocolli di comunicazione — MQTT ottimale
| Protocollo | Come funziona | Vantaggio | Svantaggio |
|---|---|---|---|
| MQTT | Publish/subscribe leggero. Veicolo pubblica topic fastdelivery/veicoli/{id}/gps al broker. Server si sottoscrive. QoS 1 (at-least-once) ridondanza. | Overhead minimo (header 2 byte), efficiente su 4G LTE, perfetto per timeseries | Necessita broker MQTT (AWS IoT Core o Mosquitto) |
| HTTPS REST | POST periodico a /api/v1/veicoli/{id}/gps. Payload JSON. Stateful. | Semplice da implementare, no broker esterno | Overhead HTTP grande (~500 byte header), inefficiente per centinaia di veicoli con aggiornamenti frequenti |
Clusterizzazione hardware — architetture
| Tipo cluster | Come funziona | Vantaggi | Svantaggi |
|---|---|---|---|
| HA Attivo-Passivo | 1 nodo primario, 1 standby. Heartbeat monitora primary (es. Keepalived/VRRP). Se cade, standby prende l’IP virtuale in <30s. | Semplice, economico, RTO basso | Nodo standby al 50% sprecato |
| Load Balancing Attivo-Attivo | 3+ nodi tutti attivi. LB distribuisce richieste (Round Robin, Least Conn, IP Hash). Usato per stateless (web server, API). | Scaling orizzontale, nessuno spreco | Complessità session, LB è SPOF |
| Multi-Master DB (es. InnoDB Cluster) | 3+ nodi con replica sincrona. Qualsiasi nodo accetta write. Group Replication MySQL. | Zero data loss, failover automatico | Latenza write (sincronizzazione), rete bassa latency richiesta |
Virtualizzazione software — tipi e applicazioni
| Tipo | Tecnologia | Isolamento | Overhead | Use case |
|---|---|---|---|---|
| Hypervisor Tipo 1 (bare-metal) | ESXi, Hyper-V, KVM | Completo (OS dedicato per VM) | 5–15% | Consolidazione server, ambienti misti |
| Hypervisor Tipo 2 (hosted) | VirtualBox, VMware Workstation | Completo (over OS host) | 15–30% | Dev/test locale, non produzione |
| Container (OS-level) | Docker, Podman, containerd | Parziale (kernel host condiviso, ma namespace isolati) | < 3% | Microservizi, CI/CD, cloud-native |
| Orchestrazione container | Kubernetes, AWS ECS/Fargate | Cluster multi-host container | Overhead K8s | Produzione cloud-scale, autoscaling |
Minacce alle comunicazioni email
| Minaccia | Descrizione | Impatto |
|---|---|---|
| Phishing | Email contraffatta che imita mittente legittimo per ottenere credenziali o dati | Furto account, danni reputazione |
| Email spoofing | Falsificazione campo From mediante SMTP non autenticato | Frode, invio malware come se da mittente legittimo |
| Man-in-the-Middle (MITM) | Intercettazione email in transito SMTP plaintext (porta 25) | Lettura contenuto, modifica messaggi |
| Business Email Compromise (BEC) | Impersonificazione dirigenti per autorizzare trasferimenti fraudolenti | Perdite finanziarie critiche (media €75k/incidente FBI) |
| Malspam | Invio massiccio email con allegati malware (.exe, .zip), macro Word | Infezione ransomware, botnet |
Protocolli di sicurezza email — stack completo
| Protocollo | Meccanismo | Record DNS |
|---|---|---|
| SPF | Elenca IP autorizzati per il dominio | v=spf1 include:_spf.google.com ~all |
| DKIM | Firma SMTP con chiave privata. Verifica con pubblica nel DNS. | v=DKIM1; k=rsa; p=MIGfMA0... |
| DMARC | Policy: cosa fare se SPF/DKIM falliscono (p=reject, quarantine, none) | v=DMARC1; p=reject; rua=mailto:... |
| Protocollo | Uso | Porta | Dettaglio |
|---|---|---|---|
| STARTTLS | SMTP server-to-server | 587 | Upgrade opportunistico a TLS (compatibilità legacy) |
| SMTPS | SMTP cifrato | 465 | TLS implicito dal connection start |
| IMAPS | Ricezione client (cifrato) | 993 | IMAP-over-TLS, obbligatorio |
| POP3S | Ricezione client (cifrato) | 995 | POP3-over-TLS, obbligatorio |
| MTA-STS | Enforce TLS policy | HTTPS | Previene downgrade TLS tra MTA |
| Standard | Meccanismo | Quando usare |
|---|---|---|
| S/MIME | Certificati X.509, firma digitale + cifratura asimmetrica | Email critiche (legali, finanziarie). Integrato in Outlook, Apple Mail. |
| PGP/OpenPGP | Web of Trust, chiavi pubbliche su keyserver | Comunità tecnica/open-source. Meno integrato in client enterprise. |
Stack di sicurezza email FastDelivery (raccomandazione)
- DNS: SPF + DKIM + DMARC p=reject per tutti i domini (@fastdelivery.it)
- SMTP: STARTTLS obbligatorio su porta 587, SMTPS su 465, MTA-STS policy
- Client: IMAPS porta 993, POP3S porta 995, nessun plaintext
- Gateway: anti-spam/anti-malware cloud (Google Workspace o Microsoft 365 Defender)
- Email critiche: S/MIME firma digitale obbligatoria per comunicazioni legali/finanziarie
- MFA: su tutti gli account email aziendali (TOTP o security key)
- User awareness: training anti-phishing periodico, simulazioni