Su Kinsta, le applicazioni e i database vengono eseguiti sull’infrastruttura “top tier” di Google Cloud Platform. In questa guida offriremo i dettagli della nostra infrastruttura di Hosting di Applicazioni e Hosting di Database.

Un diagramma dell'infrastruttura di Hosting di Applicazioni e di Hosting di Database di Kinsta
Un diagramma dell’infrastruttura di Hosting di Applicazioni e di Hosting di Database di Kinsta

Distribuzione

Repository Git

Il codice dell’applicazione è memorizzato in un repository Git. È possibile scegliere una delle seguenti opzioni (o tutte):

Aggiungere/Distribuire un’Applicazione in MyKinsta

Quando si aggiunge un’applicazione, MyKinsta si connette al repository Git per recuperare l’applicazione.

Bot di MyKinsta

Con la distribuzione automatica su commit abilitata nelle impostazioni dell’applicazione, se si esegue un commit di una modifica o un merge sul repository, il bot MyKinsta lo rileva, quindi preleva l’applicazione dal fornitore di servizi Git e distribuisce la versione aggiornata dell’applicazione.

Google Cloud Build

MyKinsta invia l’applicazione a Google Cloud Build per creare un’immagine dell’applicazione a partire dal codice. Sa quali applicazioni o moduli installare per l’applicazione grazie alle informazioni contenute nei buildpack o nel Dockerfile. Il risultato è un’immagine che può essere trasformata in un container.

Google Artifact Registry

Memorizza le immagini dei container pronte per essere distribuite. Ogni applicazione ha una singola immagine che può essere utilizzata ogni volta che deve essere distribuita.

Cluster Kubernetes

L’immagine del registro degli artefatti viene inviata al cluster, una macchina virtuale (VM) in cui possono essere eseguiti più container. I cluster vengono messi a punto per far sì che la richiesta del registro degli artefatti trovi il container giusto, che i container siano in esecuzione e che dispongano delle risorse giuste. Se un container ha dei problemi, l’applicazione viene reintegrata in un altro container. Sulla nostra infrastruttura utilizziamo cri-o v1.23.x; tuttavia, questa versione non è statica e può essere aggiornata man mano che aggiorniamo i diversi componenti dello stack.

La nostra infrastruttura Kubernetes supporta una configurazione multi-tenant, in cui ogni applicazione viene eseguita nel proprio ambiente containerizzato. L’isolamento della rete e la virtualizzazione multistrato garantiscono la sicurezza e impediscono l’accesso non autorizzato tra le applicazioni. Questo design vi offre una piattaforma di hosting affidabile e sicura, consentendovi di concentrarvi sul vostro core business mentre noi ci occupiamo dell’infrastruttura sottostante. Distribuiamo almeno un cluster per regione, con la possibilità di aggiungere altri cluster in base al numero di applicazioni in ogni regione. Questo sistema garantisce l’allocazione ottimale delle risorse e la scalabilità per soddisfare le crescenti esigenze dei nostri clienti.

Richieste

Cloudflare

Quando un visitatore accede al sito web di un’applicazione, per prima cosa accede a Cloudflare, che sa quale cluster ospita il sito web. Quindi invia la richiesta di accesso al cluster giusto.

Attualmente, per l’Hosting di Applicazioni e per l’Hosting di Database, Cloudflare usa le regole del firewall predefinite, la protezione DDoS predefinita e altre impostazioni predefinite.

Bilanciamento del Carico Cloud

Ogni cluster ha un bilanciatore di carico che riceve la richiesta di accesso da Cloudflare e invia casualmente un nodo VM worker.

Ingresso

Il nodo VM worker riceve la richiesta dal sistema Ingress, che sa quale container è responsabile dell’hostname richiesto. Il sistema Ingress invia la richiesta al container corretto e, se al container è collegato un database, comunica con il database e invia una risposta lungo lo stesso percorso.

Macchine Virtuali (VM)

Una macchina virtuale (VM) può contenere più container e più database.

Container

Sulla macchina virtuale ci possono essere più copie di ogni container o applicazione. In questo caso, il sistema di Ingress lo sa e invia casualmente una delle copie dello stesso container.

Archiviazione persistente

È possibile aggiungere l’archiviazione persistente a un processo Web o a processi in background. Questa aggiunge un volume di archiviazione collegato alla macchina virtuale dell’applicazione e conserva i dati anche se l’applicazione viene riavviata o distribuita nuovamente.