Principi fondamentali della progettazione del sistema

Last reviewed 2023-08-05 UTC

Questo documento nel framework dell'architettura Google Cloud descrive i principi fondamentali della progettazione di sistemi. La solida progettazione del sistema è sicura, affidabile, scalabile e indipendente. Consente di apportare modifiche iterative e reversibili senza interrompere il sistema, ridurre al minimo i potenziali rischi e migliorare l'efficienza operativa. Per ottenere una solida progettazione del sistema, consigliamo di seguire quattro principi.

Documenta tutto

Quando inizi a spostare i carichi di lavoro nel cloud o a creare applicazioni, un ostacolo principale al successo è la mancanza di documentazione del sistema. La documentazione è particolarmente importante per visualizzare correttamente l'architettura dei deployment attuali.

Un'architettura cloud adeguatamente documentata stabilisce un linguaggio e standard comuni, che consentono ai team interfunzionali di comunicare e collaborare in modo efficace. Fornisce inoltre le informazioni necessarie per identificare e guidare le decisioni di progettazione future. La documentazione deve essere scritta tenendo conto dei tuoi casi d'uso, per fornire un contesto per le decisioni di progettazione.

Nel tempo, le tue decisioni di progettazione si evolveranno e cambieranno. La cronologia delle modifiche fornisce il contesto necessario ai tuoi team per allineare le iniziative, evitare duplicati e misurare le variazioni delle prestazioni in modo efficace nel tempo. I log delle modifiche sono particolarmente importanti quando esegui l'onboarding di un nuovo Cloud Architect che non ha ancora familiarità con il design, la strategia o la cronologia attuali del tuo sistema.

Semplifica la progettazione e utilizza servizi completamente gestiti

La semplicità è fondamentale per la progettazione del sistema. Se la tua architettura è troppo complessa da capire, sarà difficile implementare la progettazione e gestirla nel tempo. Ove possibile, utilizza servizi completamente gestiti per ridurre al minimo i rischi, i tempi e gli sforzi associati alla gestione e alla manutenzione dei sistemi di base.

Se stai già eseguendo i carichi di lavoro in produzione, esegui dei test con i servizi gestiti per vedere come potrebbero aiutarti a ridurre le complessità operative. Se stai sviluppando nuovi carichi di lavoro, inizia in modo semplice, stabilisci un prodotto minimo funzionante (MVP) e resisti alla tentazione di lavorare troppo. Puoi identificare casi d'uso eccezionali, eseguire l'iterazione e migliorare i sistemi in modo incrementale nel tempo.

Disaccoppia l'architettura

Il disaccoppiamento è una tecnica utilizzata per separare le applicazioni e i componenti di servizio in componenti più piccoli che possono operare in modo indipendente. Ad esempio, potresti suddividere uno stack di applicazione monolitica in componenti di servizio distinti. In un'architettura disaccoppiata, un'applicazione può eseguire le proprie funzioni indipendentemente, indipendentemente dalle varie dipendenze.

Un'architettura disaccoppiata offre maggiore flessibilità per:

  • Applica upgrade indipendenti.
  • Applicare controlli di sicurezza specifici.
  • Stabilire obiettivi di affidabilità per ogni sottosistema.
  • Monitora la salute.
  • Controlla in modo dettagliato i parametri di costo e prestazioni.

Puoi iniziare il disaccoppiamento nelle prime fasi della fase di progettazione o incorporarlo come parte degli upgrade del sistema durante la scalabilità.

Utilizzare un'architettura stateless

Un'architettura stateless può aumentare l'affidabilità e la scalabilità delle applicazioni.

Le applicazioni stateful si basano su varie dipendenze per l'esecuzione delle attività, ad esempio i dati memorizzati nella cache locale. Le applicazioni stateful richiedono spesso meccanismi aggiuntivi per acquisire l'avanzamento e riavviarsi senza problemi. Le applicazioni stateless possono eseguire attività senza dipendenze locali significative utilizzando spazio di archiviazione condiviso o servizi memorizzati nella cache. Un'architettura stateless consente di fare rapidamente lo scale up delle applicazioni con dipendenze di avvio minime. Le applicazioni possono resistere ai riavvii rigidi, avere tempi di inattività inferiori e offrire prestazioni migliori agli utenti finali.

La categoria di progettazione del sistema descrive i suggerimenti per rendere le tue applicazioni stateless o per utilizzare funzionalità cloud-native per migliorare l'acquisizione dello stato delle macchine per le applicazioni stateful.

Passaggi successivi