Services

I servizi sono container attivati da un endpoint HTTP. Esempi di servizi includono:

  • Siti web
  • API
  • Webhook

Per questi endpoint, usiamo la nostra tecnologia scale-to-zero per spegnere le risorse inutilizzate e inizializzarle solo quando arriva una richiesta.

Come Funziona

Quando crei un servizio, creiamo un endpoint pubblico e emettiamo un certificato TLS valido per esso. Per impostazione predefinita, questo endpoint ospita un server HTTP vuoto che puoi usare per testare la tua configurazione.

Quando ci fornisci un’immagine del container, sostituiamo il nostro segnaposto statico con il tuo sito web o API.

Requisiti per l’Immagine del Container

Ogni immagine del container viene inizializzata su richiesta, quindi qualsiasi sistema distribuito su DownToZero (DTZ) deve essere progettato tenendo conto di questo.

Per impostazione predefinita, DTZ attende che il container apra una porta. La prima porta che viene aperta sarà quella a cui DTZ si collega e inoltra la richiesta.

Variabili d’Ambiente

Il runtime fornisce le seguenti variabili d’ambiente al tuo servizio:

variabile configurabile descrizione
PORT La porta su cui la tua applicazione dovrebbe ascoltare.
DTZ_ACCESS_TOKEN sì (l’identità può essere cambiata) Un JWT generato dal contesto che permette di accedere alle risorse all’interno del contesto.
DTZ_CONTEXT_ID no Il contesto DTZ in cui l’applicazione corrente è in esecuzione.

Intestazioni HTTP delle Richieste

Il runtime inserisce le seguenti intestazioni HTTP in ogni richiesta inoltrata al tuo servizio:

intestazione valore di esempio descrizione
X-Request-ID 5f2a9b4e-2e9e-4e6c-a2a3-9f2a1c3d4e5f Identificatore univoco della richiesta. Utile per correlare i log e tracciare tra componenti.
X-Forwarded-Host api.example.com Il valore originale di Host richiesto dal client. Usalo per generare URL assoluti o per il routing multi-tenant.
X-Forwarded-Proto https Il protocollo originale usato dal client. Per gli endpoint pubblici su DTZ questo è sempre https.

Queste intestazioni sono fornite dalla piattaforma e riflettono il contesto della richiesta rivolta al client; la tua applicazione dovrebbe trattarle come input di sola lettura.