Questo principio del pilastro dell'ottimizzazione del rendimento del Google Cloud Well-Architected Framework fornisce consigli per promuovere una progettazione modulare. Componenti modulari e interfacce chiare possono consentire scalabilità flessibile, aggiornamenti indipendenti e separazione futura dei componenti.
Panoramica del principio
Comprendi le dipendenze tra i componenti dell'applicazione e i componenti del sistema per progettare un sistema scalabile.
La progettazione modulare consente flessibilità e resilienza, indipendentemente dal fatto che sia stata inizialmente eseguita una progettazione monolitica o di microservizi. Suddividendo il sistema in moduli indipendenti e ben definiti con interfacce chiare, puoi scalare i singoli componenti per soddisfare esigenze specifiche.
La scalabilità mirata può contribuire a ottimizzare l'utilizzo delle risorse e a ridurre i costi nei seguenti modi:
- Fornisce solo le risorse necessarie a ogni componente e ne alloca meno a quelli meno impegnativi.
- Aggiunge altre risorse durante i periodi di traffico elevato per mantenere l'esperienza utente.
- Rimuove le risorse sottoutilizzate senza compromettere il rendimento.
La modularità migliora anche la gestibilità. Le unità più piccole e autonome sono più facili da comprendere, sottoporre a debug e aggiornare, il che può portare a cicli di sviluppo più rapidi e a una riduzione del rischio.
Sebbene la modularità offra vantaggi significativi, devi valutare i potenziali compromessi in termini di rendimento. L'aumento della comunicazione tra i moduli può introdurre latenza e overhead. Cerca un equilibrio tra modularità e rendimento. Una progettazione altamente modulare potrebbe non essere adatta a tutti i casi. Quando il rendimento è fondamentale, potrebbe essere appropriato un approccio più strettamente accoppiato. La progettazione del sistema è un processo iterativo, in cui rivedi e perfezioni continuamente la progettazione modulare.
Consigli
Per promuovere le progettazioni modulari, tieni presenti i consigli riportati nelle seguenti sezioni.
Progettazione per basso accoppiamento
Progetta un' architettura a basso accoppiamento. I componenti indipendenti con dipendenze minime possono aiutarti a creare applicazioni scalabili e resilienti. Quando pianifichi i limiti dei tuoi servizi, devi tenere conto dei requisiti di disponibilità e scalabilità. Ad esempio, se un componente ha requisiti diversi dagli altri, puoi progettarlo come servizio autonomo. Implementa un piano per i guasti controllati per i sottoprocessi o i servizi meno importanti che non influiscono sul tempo di risposta dei servizi principali.
Progettazione per la concorrenza e il parallelismo
Progetta l'applicazione in modo che supporti più attività contemporaneamente, ad esempio l'elaborazione di più richieste utente o l'esecuzione di job in background mentre gli utenti interagiscono con il sistema. Suddividi le attività di grandi dimensioni in blocchi più piccoli che possono essere elaborati contemporaneamente da più istanze di servizio. La concorrenza delle attività ti consente di utilizzare funzionalità come la scalabilità automatica per aumentare l'allocazione delle risorse in prodotti come i seguenti:
Bilancia la modularità per un'allocazione flessibile delle risorse
Ove possibile, assicurati che ogni componente utilizzi solo le risorse necessarie (come memoria, spazio di archiviazione e potenza di elaborazione) per operazioni specifiche. L'allocazione eccessiva delle risorse può comportare costi non necessari, mentre l'allocazione insufficiente delle risorse può compromettere il rendimento.
Utilizza interfacce ben definite
Assicurati che i componenti modulari comunichino in modo efficace tramite interfacce chiare e standardizzate (come API e code di messaggi) per ridurre l'overhead dei livelli di traduzione o del traffico estraneo.
Utilizza modelli stateless
Un modello stateless può aiutarti a gestire ogni richiesta o interazione con il servizio indipendentemente dalle richieste precedenti. Questo modello facilita la scalabilità e il ripristino, perché puoi aumentare, ridurre o riavviare il servizio senza perdere i dati necessari per le richieste o i processi in corso.
Scegli tecnologie complementari
Scegli tecnologie che completano la progettazione modulare. Valuta i linguaggi di programmazione, i framework e i database per il supporto della modularità.
Per maggiori informazioni, consulta le seguenti risorse: