Esempi di parchi risorse

Gli esempi in questa pagina mostrano alcuni scenari ipotetici che utilizzano parchi risorse che illustrano alcuni dei concetti e delle best practice delle nostre guide. Prima di leggere questa guida, dovresti acquisire familiarità con i concetti descritti nella sezione Introduzione ai parchi risorse e con Best practice e requisiti del parco risorse.

Esempio 1: parchi risorse con risorse di produzione, gestione temporanea e sviluppo

In questo primo esempio, sono presenti quattro cluster. Due cluster sono per la produzione (in due regioni per la ridondanza), uno per la gestione temporanea e i test e l'ultimo per lo sviluppo. Tutti i cluster sono di proprietà e amministrati a livello centrale da un team della piattaforma. In questo semplice esempio, sono disponibili due servizi: frontend e backend. Tuttavia, scenari più complessi potrebbero avere un numero maggiore sia di servizi che di cluster.

Diagramma che illustra un sistema con risorse di produzione, gestione temporanea e sviluppo
Un sistema con risorse di produzione, gestione temporanea e sviluppo

Approccio 1: parchi risorse separati per produzione, gestione temporanea e sviluppo

Un possibile approccio per sfruttare i parchi risorse è creare parchi risorse separati per le risorse di produzione, gestione temporanea e sviluppo.

A questo scopo, creiamo tre progetti host del parco risorse separati e inseriamo le risorse in tali progetti oppure, nel caso del nostro cluster di sviluppo on-premise, registriamo il cluster nel progetto example-dev. Non abbiamo dovuto risolvere molti dei problemi relativi all'identicità dello spazio dei nomi e dei servizi a causa della granularità in questo esempio, ma ci siamo assicurati che gli spazi dei nomi dei cluster prod-east e prod-west fossero ben normalizzati.

Il vantaggio di questo approccio è che abbiamo un isolamento molto forte tra ciascuno dei parchi risorse. Lo svantaggio principale di questo approccio è che dobbiamo amministrare tre diversi parchi risorse, il che rende più difficile raggiungere una coerenza tra produzione, gestione temporanea e sviluppo. Inoltre, per i team di sviluppo è più difficile sviluppare i prodotti per i servizi temporanei.

Diagramma che illustra parchi separati per le risorse di produzione, gestione temporanea e sviluppo
Parchi risorse separate per le risorse di produzione, gestione temporanea e sviluppo

Approccio 2: un unico parco risorse per tutte le risorse

Con questo approccio, creiamo un unico parco risorse per tutte le risorse.

Per farlo, possiamo lasciare le risorse nel progetto example e creare il parco risorse al suo interno. Avremmo potuto separare le risorse di produzione e di gestione temporanea inserendole in altri progetti host del parco risorse e sfruttando il VPC condiviso, ma per semplicità abbiamo scelto di non farlo in questo esempio.

Con questo approccio, dobbiamo assicurarci che i nostri spazi dei nomi e servizi siano normalizzati in tutto il parco risorse. Ad esempio, rinominiamo il nostro frontend generico in frontend-prod e frontend-staging rispettivamente nei cluster di produzione e di gestione temporanea. Infine, anche se potremmo mantenere i nomi originali per gli spazi dei nomi di sviluppo, forniamo nomi più chiari (come frontend-dev-alice) per indicare che si tratta di spazi dei nomi di sviluppo.

Con questo approccio, confrontiamo l'isolamento per semplificare la gestione. Ci affidiamo all'autorizzazione del mesh di servizi per evitare comunicazioni indesiderate tra servizi, ma possiamo facilmente amministrare l'intero sistema con l'unico parco risorse. Questo accordo ci permette di applicare criteri a tutte le risorse, il che può darci la certezza che lo sviluppo sembra molto vicino alla produzione.

Diagramma che illustra un singolo parco risorse con risorse di produzione, gestione temporanea e sviluppo
Un unico parco risorse con risorse di produzione, gestione temporanea e sviluppo

Approccio 3: parchi risorse separati per la produzione e non per la produzione

In questo approccio, adottiamo una via di mezzo che combina le risorse di gestione temporanea e di sviluppo in un parco risorse non di produzione, posizionando la produzione in un parco risorse separato.

A questo scopo, creiamo due progetti host del parco risorse, uno per la produzione e uno per quelli non di produzione. Inoltre, inseriamo le nostre risorse direttamente in quei progetti, con il cluster dev on-premise registrato nel nostro parco risorse non di produzione. Dobbiamo normalizzare gli spazi dei nomi e i servizi tra le nostre risorse di gestione temporanea e di sviluppo per fare chiarezza; ad esempio, rinominiamo frontend in frontend-staging nel cluster di gestione temporanea.

Il vantaggio in questo caso è che la produzione è ben separata da quella non di produzione. Ad esempio, possiamo consentire ai servizi di sviluppo di comunicare con i servizi di gestione temporanea, in modo che la frontend della sviluppatore Alice possa parlare con un backend in modalità temporanea mentre lei sviluppa il suo servizio.

Diagramma che illustra i parchi di produzione e non di produzione
Parchi risorse di produzione e non

Riepilogo

Ciascuno degli approcci descritti nell'Esempio 1 è valido. La scelta della tua organizzazione dipende dall'isolamento rispetto alla coerenza (e dalla facilità di gestione). In altre parole, la quantità di isolamento necessaria tra tipi diversi di risorse e la relativa coerenza è necessaria tra loro. È più facile ottenere una maggiore coerenza con meno parchi risorse. Il terzo approccio viene proposto come possibile compromissione, mantenendo la produzione completamente isolata e offrendo al contempo agli sviluppatori la possibilità di lavorare su servizi in fasi.

Esempio 2: parchi risorse con proprietari di risorse diversi

Per questo esempio, abbiamo due team, team-a e team-b. Questi team possiedono e amministrano i propri cluster ed entrambi hanno utilizzato gli spazi dei nomi frontend e backend per i servizi che producono. Tuttavia, né i valori frontendbackend di team-a sono in realtà uguali a quelli di team-b. I due team vogliono creare un mesh di servizi in modo che i servizi possano interagire.

Diagramma che illustra un sistema con risorse di due team
Un sistema con le risorse di due team

Senza un intervento, non è possibile includere questi cluster nella stessa rete mesh. Un buon punto di partenza è trasferire la proprietà dei cluster a un team della piattaforma centralizzata per stabilire una fiducia tra i cluster. In alternativa, se il team a e il team B si fidano l'uno dell'altro, possono coordinarsi per creare questa fiducia. Il passaggio successivo consiste nel normalizzare l'utilizzo dello spazio dei nomi in modo che frontend e backend non siano più sovraccarichi nei cluster di questi due team. Al termine, possono creare un unico parco risorse per tutte le risorse e creare il proprio mesh di servizi.

Diagramma che illustra le risorse di due team in un unico parco risorse
Due risorse di team in un unico parco risorse

Se non è possibile stabilire questo livello di attendibilità, team-a e team-b devono formare due parchi risorse separati che utilizzano due progetti host del parco risorse diversi. Lo svantaggio di questo approccio è che ora devono sfruttare la federazione dei mesh, che è più difficile da amministrare rispetto a un singolo mesh. Il vantaggio è che nessuno dei due team deve normalizzare gli spazi dei nomi e i servizi di cui è stato eseguito il deployment, perciò è possibile solo una comunicazione esplicita e specificamente autorizzata.

Diagramma che illustra le risorse di due team in parchi risorse separati
Due risorse di team in parchi risorse separati