Print Engine Estratto¶
Obiettivo¶
Estrarre progressivamente il motore di stampa da SafeOps senza spegnere subito quello interno.
Questo permette di:
- provare il servizio esterno in sicurezza
- fare rollout graduale per tenant o per tipo documento
- migrare in un secondo momento su un altro server AlmaLinux
1. Architettura consigliata¶
Stato iniziale¶
- SafeOps continua a usare il motore interno
- il nuovo
print-engine-serviceviene introdotto come bootstrap esterno
Stato intermedio¶
- provider
hybrid - alcuni flussi o tenant provano il motore esterno
- fallback interno disponibile
Stato finale¶
- provider
external - il motore interno viene tenuto solo come fallback tecnico temporaneo
2. Provider selector¶
Configurazione proposta:
PRINT_ENGINE_PROVIDER=internalPRINT_ENGINE_PROVIDER=hybridPRINT_ENGINE_PROVIDER=external
3. Piano di migrazione¶
Fase 1¶
- introdurre servizio esterno bootstrap
- tenere il motore interno invariato
Fase 2¶
- validare healthcheck e autenticazione HMAC
- attivare pochi flussi pilota
Fase 3¶
- spostare il servizio su altra macchina AlmaLinux
- aggiornare
PRINT_ENGINE_EXTERNAL_BASE_URL - validare con rollout graduale
Fase 4¶
- rendere l'esterno default
- mantenere l'interno come fallback per un periodo limitato
4. Fallback e rollback¶
Fallback consigliato:
- se il provider esterno non risponde o fallisce, il flusso ricade sull'interno in modalita
hybrid
Rollback:
- riportare
PRINT_ENGINE_PROVIDER=internal - nessuna migrazione dati distruttiva
Stato implementato ora¶
Bootstrap presenti:
- servizio esterno:
services/print_engine_service/ - client SafeOps:
app/services/print_engine_client.py - config provider:
config.py
Deploy systemd consigliato¶
Unit file pronto:
deploy/systemd/safeops-print-engine.service
Configurazione minima in .env:
PRINT_ENGINE_PROVIDER=hybridPRINT_ENGINE_EXTERNAL_BASE_URL=http://127.0.0.1:18110PRINT_ENGINE_EXTERNAL_HMAC_SECRET=<secret condivisa con SafeOps>
Installazione locale sulla stessa macchina:
cp deploy/systemd/safeops-print-engine.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable --now safeops-print-engine.service
systemctl status safeops-print-engine.service
Log utili:
journalctl -u safeops-print-engine.service -f
journalctl -u safeops-web.service -f
Migrazione su altra macchina AlmaLinux¶
Quando vuoi spostarlo fuori dal server SafeOps:
- Copia la cartella
services/print_engine_service/sulla macchina target. - Installa lo stesso runtime Python
safeopso un virtualenv equivalente. - Configura la stessa
PRINT_ENGINE_EXTERNAL_HMAC_SECRET. - Pubblica il servizio sulla nuova macchina, ad esempio
http://10.50.x.y:18110. - Aggiorna in SafeOps:
PRINT_ENGINE_EXTERNAL_BASE_URL=http://10.50.x.y:18110- Riavvia
safeops-web.service.
In questa fase non serve spegnere subito il motore interno: il rollout resta in hybrid.