Oltre la velocità: perché Lnkr usa gRPC per l'affidabilità distribuita

Lnkr Engineering,

In un ecosistema health-tech, una singola visita paziente innesca una cascata di eventi interni: verifica dell'eleggibilità assicurativa, controllo disponibilità laboratorio e avvio di audit finanziari. In un'architettura a microservizi, questa è una "catena di chiamate distribuita". Se un anello fallisce, l'intero sistema rischia un fallimento a cascata.

Ecco come la nostra implementazione di gRPC garantisce che Lnkr resti resiliente sotto pressione.

1. Propagazione delle deadline: risolvere il problema delle "richieste zombie"

Nel REST tradizionale, i timeout sono spesso locali. Se il Servizio A chiama il Servizio B con un timeout di 5 secondi, e B chiama il Servizio C, C non sa quanto tempo resta.

  • Il vantaggio gRPC: usiamo la propagazione delle deadline. La deadline iniziale è codificata nei metadati della richiesta. Mentre la richiesta attraversa il nostro stack (Visit Service → Insurer Service → Audit Service), ogni servizio sa esattamente quanti millisecondi restano.
  • Il risultato: se la deadline scade, i servizi downstream smettono automaticamente di elaborare. Questo impedisce alle "richieste zombie" di consumare CPU e connessioni DB per un risultato che il paziente non sta più aspettando.

2. Controllo di flusso sofisticato (backpressure)

I dati sanitari non sono uniformi. Un pull della "storia clinica" può essere 2 KB; un "report di audit finanziario" può essere 50 MB. REST/JSON su HTTP/1.1 può facilmente sovraccaricare un receiver.

  • Gestione finestra HTTP/2: gRPC utilizza il flow control di HTTP/2. Se il nostro "Invoicing Service" è occupato, segnala al "Provider Service" di rallentare lo stream dati a livello di protocollo.
  • Valore business: questo backpressure nativo impedisce ai nostri servizi di crashare durante le ore di punta (es. dimissioni ospedaliere mattutine), garantendo alta disponibilità senza over-provisioning di costose risorse cloud.

3. Interceptors: il "middleware" per la conformità

Lavorare con dati medici e finanziari sensibili richiede un approccio "Zero Trust".

  • Interceptor globali: abbiamo implementato interceptor gRPC (middleware) che avvolgono ogni chiamata. Questo ci permette di gestire autenticazione (JWT), logging e audit trail in modo coerente su tutti i servizi (scritti in Python/FastAPI) senza duplicare codice.
  • Integrità dei dati: ogni campo è validato rispetto alle nostre definizioni .proto prima che la business logic lo tocchi. Se un ID assicuratore manca di una cifra, la richiesta viene rifiutata a livello wire.

4. Ridurre la "Cloud Tax" (compressione HPACK)

La banda in un ambiente microservizi non è gratis — è una parte importante della "Cloud Tax".

  • Compressione header: a differenza del REST, che invia header in testo normale con ogni richiesta, gRPC usa la compressione HPACK. Per richieste piccole e frequenti (come ping di stato), questo riduce l'overhead di rete di quasi il 90%.
  • Efficienza: minore banda significa costi AWS egress più bassi e tempi di risposta più rapidi per provider su connessioni cliniche a bassa banda.

La filosofia ingegneristica

In Lnkr crediamo che l'efficienza del sistema sanitario sia limitata dalla sua "plumbing" dati. Scegliendo gRPC, investiamo in un'architettura "contract-first" robusta quanto veloce.