gRPC

framework multipiattaforma per le RPC (chiamate di procedura remota)

gRPC (gRPC Remote Procedure Calls[1]) è un framework multipiattaforma ad alte prestazioni per chiamate di procedura remota (RPC).

gRPC venne inizialmente creato da Google, ma è open source e viene utilizzato in molte organizzazioni. I casi d'uso spaziano dai microservizi all'"ultimo miglio" dell'informatica (dispositivi mobili, web e Internet delle cose). gRPC utilizza HTTP/2 per il trasporto, Protocol Buffers come linguaggio di descrizione dell'interfaccia (IDL) e fornisce funzionalità quali autenticazione, streaming bidirezionale e controllo del flusso, associazioni bloccanti o non bloccanti, annullamento e timeout. Genera associazioni tra client e server multipiattaforma per molti linguaggi. Gli scenari di utilizzo più comuni includono la connessione di servizi in un'architettura in stile microservizi o la connessione di client di dispositivi mobili a servizi backend.[2]

L'utilizzo di HTTP/2 da parte di gRPC è considerato complesso. Rende impossibile implementare un client gRPC nel browser, richiedendo invece un proxy.[3]

A partire dal 2001 circa, Google ha creato un'infrastruttura RPC di uso generale chiamata Stubby per connettere il gran numero di microservizi in esecuzione all'interno e tra i suoi centri elaborazione dati.[4] Nel marzo 2015, Google ha deciso di realizzare la versione successiva di Stubby e di renderla open source. Il risultato è stato gRPC.

Autenticazione

modifica

gRPC supporta l'utilizzo del protocollo crittografico Transport Layer Security (TLS) e l'autenticazione basata su token. La connessione ai servizi Google deve utilizzare TLS. Esistono due tipi di credenziali: credenziali di canale e credenziali di chiamata.

Per l'autorizzazione basata su token, gRPC fornisce un Server Interceptor[5] e un Client Interceptor.[6]

Codifica

modifica

gRPC utilizza i Protocol Buffers per codificare i dati. I buffer di protocollo forniscono un formato di serializzazione e un linguaggio di definizione dell'interfaccia (IDL).[7]

Testing

modifica

Alcuni degli strumenti software utilizzati per testare le implementazioni gRPC includono Postman, ezy,[8] Insomnia e Step CI.[9]

Adozione

modifica

Molte organizzazioni utilizzano gRPC, tra cui Uber,[10] Square, Netflix, IBM, CoreOS, Docker, CockroachDB, Arista Networks, Cisco, Juniper Networks,[11] Spotify,[12] Zalando,[13] Dropbox,[14] e Google come sviluppatore originale.

Il progetto open source u-bmc utilizza gRPC per sostituire l'Intelligent Platform Management Interface (IPMI).[15] L'8 gennaio 2019, Dropbox ha annunciato che la prossima versione di "Courier", il loro framework RPC al centro della loro architettura orientata ai servizi (SOA), sarebbe stata migrata per essere basata su gRPC, principalmente perché si allineava bene con i loro framework RPC personalizzati esistenti.[16]

  1. ^ gRPC, https://grpc.io/docs/what-is-grpc/faq/.
  2. ^ (EN) gRPC, https://grpc.io/about/. URL consultato il 25 maggio 2021.
  3. ^ (EN) gRPC, https://grpc.io/blog/state-of-grpc-web/.
  4. ^ cloud.google.com, https://cloud.google.com/blog/products/gcp/grpc-a-true-internet-scale-rpc-framework-is-now-1-and-ready-for-production-deployments. URL consultato il 3 aprile 2023.
  5. ^ thecodedata.com, https://thecodedata.com/grpc-interceptors-with-java/.
  6. ^ grpc.io, https://grpc.io/docs/guides/auth/. URL consultato il 24 febbraio 2020.
  7. ^ (EN) docs.microsoft.com, https://docs.microsoft.com/en-us/aspnet/core/grpc/comparison. URL consultato il 24 febbraio 2020.
  8. ^ github.com, https://github.com/getezy/ezy.
  9. ^ docs.stepci.com, https://docs.stepci.com/guides/testing-grpc.html.
  10. ^ eng.uber.com, https://eng.uber.com/architecture-api-gateway/.
  11. ^ grpc.io, https://grpc.io/faq/#who-s-using-this-and-why. URL consultato il 24 febbraio 2020.
  12. ^ jfokus.se, https://www.jfokus.se/jfokus19-preso/Adopting-gRPC-at-Spotify.pdf. URL consultato il 12 maggio 2020.
  13. ^ opensource.zalando.com, https://opensource.zalando.com/tech-radar/. URL consultato l'8 aprile 2021.
  14. ^ Dropbox.Tech, https://dropbox.tech/infrastructure/how-we-migrated-dropbox-from-nginx-to-envoy. URL consultato il 30 ottobre 2020.
  15. ^ GitHub.com, https://github.com/u-root/u-bmc.
  16. ^ Nigmatullin, Ruslan, blogs.dropbox.com, https://blogs.dropbox.com/tech/2019/01/courier-dropbox-migration-to-grpc/. URL consultato il 9 gennaio 2019.

Voci correlate

modifica

Collegamenti esterni

modifica