Architettura con Nomad
Questa pagina descrive l'architettura target per la migrazione a Nomad.
Principi Architetturali
1. Separazione tra Stateful e Stateless
[!IMPORTANT] I servizi stateful (database, cache) vengono gestiti come servizi cloud managed, mentre i servizi stateless (microservices) vengono orchestrati da Nomad.
| Tipo | Gestione | Esempi |
|---|---|---|
| Stateful | Google Cloud Managed | PostgreSQL, Redis |
| Stateless | Nomad | auth, devices, decoder, etc. |
2. Perché Servizi Managed per DB e Redis?
Vantaggi:
| Aspetto | Servizio Managed | Self-hosted |
|---|---|---|
| Backup | ✅ Automatici, point-in-time | ❌ Da configurare |
| HA/Failover | ✅ Automatico | ❌ Complesso |
| Scaling | ✅ Un click | ❌ Downtime |
| Patching | ✅ Automatico | ❌ Manuale |
| Monitoring | ✅ Incluso | ❌ Da configurare |
| Costo operativo | ✅ Basso | ❌ Alto |
Svantaggi:
- Costo mensile più alto rispetto a VM raw
- Vendor lock-in (mitigabile con standard SQL/Redis protocol)
3. Network Architecture
Componenti del Cluster
Control Plane (Alta Disponibilità)
Per produzione, raccomandiamo 3 o 5 nodi per quorum:
| Componente | Nodi | Risorse per Nodo |
|---|---|---|
| Nomad Server | 3 | 2 vCPU, 4GB RAM |
| Consul Server | 3 | 2 vCPU, 4GB RAM |
[!TIP] Nomad e Consul Server possono coesistere sulle stesse VM per ridurre i costi in ambienti non critici.
Worker Nodes (Auto-scaling)
| Tipo | Min | Max | Risorse |
|---|---|---|---|
| General Purpose | 2 | 10 | 4 vCPU, 8GB RAM |
| Decoder (High CPU) | 1 | 5 | 8 vCPU, 16GB RAM |
Servizi Gestiti
| Servizio | Google Cloud | Tier Consigliato |
|---|---|---|
| PostgreSQL | Cloud SQL | db-custom-2-8192 |
| Redis | Memorystore | Basic 2GB |
Mapping Servizi Attuali → Nomad Jobs
| Servizio Attuale | Nomad Job | Tipo | Replicas |
|---|---|---|---|
| auth | auth-service | service | 2-5 |
| devices | devices-service | service | 2-5 |
| tracking | tracking-service | service | 2-5 |
| sharing | sharing-service | service | 2-3 |
| commands | commands-service | service | 2-3 |
| notifications | notifications-service | service | 2-3 |
| billing | billing-service | service | 2-3 |
| websocket | websocket-service | service | 2-5 |
| decoder | decoder-service | service | 2-10 |
| position-filter | position-filter-service | service | 2-5 |
| position-enricher | position-enricher-service | service | 2-5 |
| db-persister | db-persister-service | service | 2-3 |
| event-detector | event-detector-service | service | 2-3 |
| nginx (gateway) | traefik | system | 1 per node |
Data Flow con Nomad
Considerazioni sulla Sicurezza
Network Security
- VPC Privata - Tutti i worker in subnet privata
- NAT Gateway - Per accesso internet outbound
- Private Service Connect - Per Cloud SQL e Memorystore
- Firewall Rules - Solo porte necessarie aperte
Secrets Management
Opzioni:
- HashiCorp Vault (raccomandato)
- Google Secret Manager
- Nomad Variables (per secrets non critici)
Stima Costi Mensili (Produzione)
| Componente | Specifiche | Costo Est. |
|---|---|---|
| Nomad/Consul Servers (3x) | n2-standard-2 | ~$150 |
| Worker Nodes (5x) | n2-standard-4 | ~$400 |
| Cloud SQL | db-custom-2-8192 | ~$100 |
| Memorystore Redis | 2GB Basic | ~$50 |
| Load Balancer | Standard | ~$20 |
| Network Egress | ~500GB | ~$50 |
| Totale | ~$770/mese |
[!NOTE] Questi sono costi stimati. Usare il Google Cloud Calculator per stime precise.