Vai al contenuto

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-service viene 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=internal
  • PRINT_ENGINE_PROVIDER=hybrid
  • PRINT_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=hybrid
  • PRINT_ENGINE_EXTERNAL_BASE_URL=http://127.0.0.1:18110
  • PRINT_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:

  1. Copia la cartella services/print_engine_service/ sulla macchina target.
  2. Installa lo stesso runtime Python safeops o un virtualenv equivalente.
  3. Configura la stessa PRINT_ENGINE_EXTERNAL_HMAC_SECRET.
  4. Pubblica il servizio sulla nuova macchina, ad esempio http://10.50.x.y:18110.
  5. Aggiorna in SafeOps:
  6. PRINT_ENGINE_EXTERNAL_BASE_URL=http://10.50.x.y:18110
  7. Riavvia safeops-web.service.

In questa fase non serve spegnere subito il motore interno: il rollout resta in hybrid.