Vantaggi dell’implementazione di ambienti CI / CD a livello di progetto / app GAE rispetto al livello di servizio / modulo?

In Naming Developer Environments Google suggerisce 2 approcci per l’implementazione di diversi ambienti CI / CD per le app GAE

  • basato su diversi servizi (che si chiamavano moduli) all’interno dello stesso progetto / app:

Se si sceglie di creare l’applicazione microservizi utilizzando solo più servizi, è ansible creare un singolo progetto App Engine per ciascuno dei propri ambienti e nominarli di conseguenza, ad esempio web-app-dev , web-app-qa e web-app-prod .

  • basato su diversi progetti / app:

In alternativa, se si sceglie di creare l’applicazione microservizi utilizzando più progetti, è ansible ottenere la stessa separazione tra gli ambienti, ma sarà necessario utilizzare più progetti, come web-app-dev , web-app-prod , user-service-dev e user-service-prod . Sarà necessario utilizzare i modelli di codice per garantire che i progetti dev chiamino solo altri progetti di sviluppo e i progetti prod solo per altri progetti prod .

inserisci la descrizione dell'immagine qui

Il fraseggio negli snippet di documentazione sopra sembra suggerire che i 2 approcci sarebbero approssimativamente equivalenti, ma c’è almeno una differenza significativa tra i 2 approcci: un approccio basato su progetto / app garantisce l’isolamento dei dati, mentre uno basato su un servizio / modulo non – il datastore e memcache sono condivisi da tutti i servizi.

Un confronto più dettagliato tra i 2 approcci dalla prospettiva di isolamento è documentato in Confronto tra isolamento del servizio e isolamento del progetto :

La seguente tabella fornisce un confronto tra l’utilizzo di più servizi e più progetti in un’architettura di microservizi:

inserisci la descrizione dell'immagine qui

La mia domanda è: oltre alle differenze sopra menzionate, ci sono altri vantaggi nell’usare l’approccio basato sul progetto rispetto a quello basato sui servizi? O tutto ciò che può essere considerato uno svantaggio?

L’approccio basato sul progetto consente inoltre di separare i problemi di fatturazione e i ruoli IAM.

Potresti andare fino a far pagare delle carte di credito diverse, o semplicemente impostare i limiti di fatturazione in modo indipendente (chi vuole che il prodotto scenda perché un bug di sviluppo ha superato il limite di fatturazione?). Riceverai anche rapporti di fatturazione separati, in modo da poter determinare quali produzioni vs dev ti costano più facilmente.

L’approccio basato sul servizio riduce potenzialmente al minimo il lavoro amministrativo. Ad esempio, se per qualche motivo hai bisogno di configurare VPN o altri aspetti di rete, un singolo progetto significa che devi solo configurarlo una volta, piuttosto che una volta per progetto.