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 conoscere i concetti descritti in Introduzione ai parchi risorse e Requisiti e best practice 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 il 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 presenti due servizi: frontend e backend. Tuttavia, scenari più complessi potrebbero avere un numero maggiore di servizi e 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: separare i parchi risorse per produzione, gestione temporanea e sviluppo

Un possibile approccio all'utilizzo dei parchi risorse è quello di creare parchi risorse separati per le risorse di produzione, gestione temporanea e sviluppo.

Per farlo, creiamo tre progetti host del parco risorse separati e collochiamo le risorse al loro interno. In alternativa, nel caso del nostro cluster di sviluppo on-premise, registriamo il cluster nel progetto example-dev. Non abbiamo dovuto risolvere molti dei problemi di uguaglianza degli spazi dei nomi e di uguaglianza 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 l'isolamento tra ciascuno dei parchi risorse è molto forte. Lo svantaggio principale di questo approccio è che abbiamo bisogno di amministrare tre diversi parchi risorse, il che rende più difficile ottenere la coerenza tra produzione, gestione temporanea e sviluppo. Per i team di sviluppo, invece, è più difficile utilizzare servizi in fasi.

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

Approccio 2: un parco risorse per tutte le risorse

In 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 nostre risorse di produzione e di gestione temporanea inserendole in altri progetti host del parco risorse e sfruttando il VPC condiviso, ma in questo esempio abbiamo scelto di non farlo per semplicità.

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

Con questo approccio, preferiamo preferire la facilità di gestione all'isolamento. Ci affidiamo all'autorizzazione del mesh di servizi per impedire comunicazioni indesiderate tra i servizi, ma possiamo amministrare facilmente l'intero sistema con un unico parco risorse. Questo accordo ci consente di applicare criteri a tutte le risorse, il che può dare la certezza che lo sviluppo sembra molto vicino alla produzione.

Diagramma che mostra 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: separa i parchi risorse per la produzione e per quelli non di 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, ponendo al contempo la produzione in un parco risorse separato.

Per farlo, creiamo due progetti host del parco risorse, uno per la produzione e uno per non di produzione. Inoltre, posizioniamo 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 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 isolata dalla non produzione. Ad esempio, possiamo consentire ai servizi di sviluppo di comunicare con i servizi di gestione temporanea, in modo che la frontend della sviluppatrice Alice possa parlare con un backend inscenato mentre sviluppa il suo servizio.

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

Riepilogo

Ciascuno degli approcci descritti nell'esempio 1 è valido. La scelta scelta dalla tua organizzazione dipende dall'isolamento, dalla coerenza (e dalla facilità di gestione); in altre parole, il livello di isolamento necessario tra i diversi tipi di risorse e la coerenza necessaria tra i diversi tipi di risorse. Maggiore coerenza è più facile da ottenere con meno parchi risorse. Il terzo approccio viene offerto come possibile compromesso, mantenendo la produzione completamente isolata e offrendo agli sviluppatori la possibilità di lavorare su servizi in fasi.

Esempio 2: parchi risorse con diversi proprietari di risorse

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

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

Senza un intervento, non è possibile rendere questi cluster parte dello stesso mesh. Un buon punto di partenza è trasferire la proprietà dei cluster a un team centralizzato della piattaforma per stabilire la fiducia tra i cluster. In alternativa, se i team a e B si fidano l'uno dell'altro, possono coordinarsi per formare 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 su tutte le risorse e creare il proprio mesh di servizi.

Diagramma che mostra le risorse di due team in un unico parco risorse
Risorse di due team in un unico parco risorse

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

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