Services
I servizi sono container che vengono attivati da un endpoint HTTP. Esempi di servizi includono:
- Siti web
- API
- Webhook
Per questi endpoint, utilizziamo 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 rilasciamo un certificato TLS valido per esso. Di default, questo endpoint ospita un server HTTP vuoto che puoi usare per testare la tua configurazione.
Quando ci fornisci un’immagine container, sostituiamo il nostro placeholder statico con il tuo sito web o API.
Requisiti per l’Immagine del Container
Ogni immagine container viene inizializzata su richiesta, quindi qualsiasi sistema distribuito su DownToZero (DTZ) deve essere progettato tenendo conto di questo.
Di default, DTZ attende che il container apra una porta. La prima porta che viene aperta sarà quella su cui DTZ si collega e inoltra la richiesta.
Variabili d’Ambiente
Il runtime fornisce le seguenti variabili d’ambiente al tuo servizio:
| variabile | modificabile | descrizione |
|---|---|---|
| PORT | sì | La porta sulla quale la tua applicazione deve 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. |
Header delle Richieste HTTP
Il runtime inserisce i seguenti header HTTP in ogni richiesta inoltrata al tuo servizio:
| header | valore di esempio | descrizione |
|---|---|---|
| X-Request-ID | 5f2a9b4e-2e9e-4e6c-a2a3-9f2a1c3d4e5f | Identificatore univoco per la richiesta. Utile per correlare i log e tracciare attraverso i componenti. |
| X-Forwarded-Host | api.example.com | Il valore originale 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 endpoint pubblici su DTZ questo è sempre https. |
Questi header sono forniti dalla piattaforma e riflettono il contesto della richiesta rivolta al client; la tua applicazione dovrebbe considerarli come input in sola lettura.