English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

ospite
1 / ?
torna alle lezioni

Cosa Risolve il Libro di Allspaw

La Disciplina di Non Rimanere Senza Risorse

John Allspaw ha scritto 'The Art of Capacity Planning' (O'Reilly, 2008; seconda edizione 2017) dopo aver gestito le operazioni presso Flickr durante anni di crescita esplosiva. La sua tesi: la pianificazione della capacità non è un esercizio di foglio di calcolo una tantum. È una disciplina continua che combina misurazione, previsione, & ragionamento ingegneristico. Saltare uno di questi tre, & o esaurisci la capacità in produzione o bruci soldi in hardware che rimane inattivo.

La pianificazione della capacità si trova tra due modalità di fallimento:

- Sottodimensionamento: i servizi funzionano al massimo, la latenza aumenta, i tassi di errore salgono, i clienti se ne vanno. Il modo più veloce per perdere utenti in una fase di crescita.

- Sovradimensionamento: l'hardware rimane al 10% di utilizzo, la finanza chiede perché il budget continua a crescere senza che le entrate stiano al passo. Il modo più veloce per perdere il tuo team in una revisione del budget.

L'arte sta nel trovare il corridoio tra questi due burroni e rimanere dentro mentre il carico di lavoro cambia.

Tre domande fondamentali guidano ogni esercizio di capacità:

- Cosa abbiamo? Capacità attuale in unità concrete: richieste al secondo, query al secondo, gigabyte di archiviazione, connessioni simultanee.

- Cosa ci serve? Domanda prevista in una data futura con limiti espliciti di incertezza.

- Quando dobbiamo agire? Tempo di consegna per approvvigionamento, provisioning o scalamento. Il cloud riduce questo a minuti; on-premise può significare mesi.

Corridoio di pianificazione della capacità: insufficiente, ottimale, eccessivo

Perché Non Può Essere un Foglio di Calcolo

Un'azienda di e-commerce pianifica la capacità una volta all'anno, a novembre, estrapolando il traffico dei 12 mesi precedenti in modo lineare. Funzionano su server dedicati con un tempo di approvvigionamento di 6 settimane. Il loro traffico mostra una forte stagionalità settimanale (picco 3x nel fine settimana), una forte stagionalità annuale (5x il Black Friday), & è cresciuto del 40% anno su anno per tre anni.

Elenca almeno tre modalità di fallimento specifiche che questo approccio di proiezione lineare una volta all'anno può produrre. Per ogni fallimento, nomina la parte specifica della realtà dell'azienda che il foglio di calcolo ignora, & proponi una cadenza di misurazione o pianificazione più frequente che lo affronti.

Carico di Lavoro rispetto all'Utilizzo

Due Numeri Diversi, Entrambi Necessari

La pianificazione della capacità fallisce quando i team misurano solo una delle due dimensioni essenziali.


Carico di lavoro: la domanda sul sistema dall'esterno. Richieste al secondo, transazioni al minuto, megabyte al secondo, utenti simultanei. Il carico di lavoro descrive cosa il mondo chiede da te.


Utilizzo: quanto pieno funziona il sistema mentre serve quella domanda. Percentuale CPU, memoria utilizzata, profondità della coda, larghezza di banda della rete, IOPS del disco. L'utilizzo descrive come il sistema si sente sotto quella domanda.


Solo il carico di lavoro ti dice cosa sta arrivando ma non se riesci a servirlo. Solo l'utilizzo ti dice quanto sei pieno ma non cosa aspettarti domani. Hai bisogno di entrambi, tracciati fianco a fianco, per prendere decisioni di capacità.


Rapporto di capacità = carico di lavoro / utilizzo. Se servi 1.000 richieste al secondo al 50% di CPU, il tuo rapporto di capacità è 2.000 RPS per 100% di CPU per server. Questo fattore di conversione ti consente di tradurre il carico di lavoro previsto nel numero di server richiesto.


Allspaw sottolinea misurare alla granularità giusta. Un campione al minuto nasconde i picchi di 30 secondi. Un campione all'ora nasconde tutto. Il vero lavoro di capacità richiede una risoluzione inferiore al minuto per gli eventi di picco e una risoluzione al minuto per il trending. Qualsiasi cosa più grossolana produce una falsa fiducia pericolosa.

Carico di lavoro + utilizzo tracciati insieme nel tempo

Cosa Strumentare

Il tuo team sta lanciando strumentazione di capacità su un nuovo lancio di prodotto (un servizio di transcodifica video). Puoi scegliere fino a 8 metriche da tracciare con risoluzione inferiore al minuto. Il servizio acquisisce caricamenti di video, li mette in coda, transcodifica in più formati, & scrive gli output nell'archiviazione oggetti.

Scegli esattamente 8 metriche. Per ognuna, etichetta se cattura il carico di lavoro o l'utilizzo, & giustifica perché ogni metrica merita l'inclusione rispetto a una metrica che hai lasciato fuori. Identifica una metrica che, se ne avessi solo una, sarebbe più predittiva dell'esaurimento della capacità.

Trend, Stagionalità, Incertezza

Tre Strati di Ogni Previsione

Allspaw e il libro SRE di Google concordano sulla struttura di una previsione utile: trend, stagionalità, & limiti di incertezza. Saltare uno di questi e la previsione diventa fuorviante.


Trend: la pendenza della domanda nel corso dei mesi o degli anni. Spesso modellato con regressione lineare per finestre brevi, esponenziale o lineare a tratti per la crescita composta. La linea di trend risponde a 'dove si sta dirigendo la domanda in generale?'


Stagionalità: i modelli ciclici a più scale temporali. Giornaliera (traffico di punta nel pomeriggio), settimanale (picchi nel fine settimana), annuale (Black Friday, stagione fiscale, anno scolastico). La stagionalità moltiplicativa scala con il trend; la stagionalità additiva aggiunge un offset costante.


Limiti di incertezza: il cono di previsione. Una previsione senza limiti è un'ipotesi. Le vere previsioni pubblicano una stima centrale con limiti superiori e inferiori espliciti, generalmente con una fiducia del 90% o 95%. Il cono si allarga mentre si proietta più lontano nel futuro. Una previsione di 4 settimane potrebbe avere limiti di ±10%; una previsione di 12 mesi spesso ha ±50%.


Decoupling della crescita commerciale dalla domanda tecnica: la pianificazione della capacità prevede il carico di lavoro tecnico, ma i team commerciali prevedono entrate, iscrizioni o campagne. Il lavoro del pianificatore di capacità è tradurre le previsioni commerciali nella domanda tecnica: una crescita del 30% nelle iscrizioni potrebbe significare il 30% di più di chiamate API, ma potrebbe significare l'80% di più se i nuovi utenti utilizzano il sistema più pesantemente, o solo il 15% se si convertono a tassi inferiori. Il rapporto di conversione è importante quanto la previsione commerciale sottostante.

Previsione: linea di trend, increspature stagionali, cono allargato

Previsione del Traffico Festivo

Il tuo servizio serve un sito di e-commerce. Il traffico del Black Friday lo scorso anno era 5x la media di novembre, sostenuto per 12 ore. L'azienda è cresciuta del 40% anno su anno. Il marketing sta lanciando una promozione a pagamento prevista per aggiungere un ulteriore 20% al traffico del Black Friday di quest'anno.

Stima il picco del Black Friday di quest'anno come multiplo della media mensile attuale. Mostra il tuo lavoro. Quindi proponi limiti superiori e inferiori specifici per la previsione & spiega quali eventi del mondo reale potrebbero spingere la domanda effettiva al di fuori di quei limiti.

Conoscere il Tuo Limite

Trovare il Limite Prima che la Produzione lo Trovi

La previsione ti dice cosa sta arrivando. I test dei limiti ti dicono se il sistema può servirlo. Allspaw tratta il test dei limiti come un input non negoziabile per la pianificazione della capacità: non conosci la tua vera capacità finché non l'hai testata sotto carico controllato.

Tre tipi di test dei limiti:

- Test di carico sintetico: un generatore di carico (k6, Locust, JMeter, vegeta) guida il traffico verso un servizio target in staging. Aumenta il carico finché qualcosa non si rompe. Il punto di rottura è il limite. Migliore per il test del servizio isolato.

- Esercitazione di fuoco in produzione: ridurre deliberatamente la capacità in produzione (prosciugare una percentuale di server, uccidere una regione) e osservare come la capacità rimanente gestisce il traffico reale. Testa il vero comportamento di produzione incluse le interazioni inaspettate. Fiducia più alta ma rischio più alto.

- Carico shadow: riprodurre il traffico reale di produzione su un servizio target in esecuzione parallelo alla produzione. Cattura i modelli di carico reali (mix di query raro, agenti utente strani) senza influire sui clienti. Forte via di mezzo.


Spazio libero è il buffer tra il carico attuale e il limite. Regole di buon senso SRE:

- 50% di spazio libero in stato stazionario per un servizio a singola regione (così un fallimento della regione non esaurisce la regione sopravvissuta)

- 30% di spazio libero per un servizio multi-regione con ridondanza N+2

- 100%+ di spazio libero in avvicinamento a eventi di picco noti (Black Friday, finali sportive)


Lo spazio libero non è spreco. È il costo di non fare il paging degli ingegneri alle 3 del mattino, non perdere clienti durante un picco, e non soffrire un fallimento a cascata quando una regione fallisce. I team finanziari a volte spingono per ridurre lo spazio libero; gli ingegneri di capacità devono articolare il costo della corsa serrata per rendere quella conversazione basata su fatti piuttosto che su emozioni.

Buffer di spazio libero: carico attuale, limite, e il gap tra

Progettazione di un Test dei Limiti

Erediti un servizio senza un limite di capacità documentato. Il carico di produzione attuale è 800 richieste al secondo su 12 server, CPU media 35%. Il marketing sta annunciando una campagna tra 6 settimane prevista per spingere il traffico a 3.000 RPS al picco.

Progetta un programma di test dei limiti per le prossime 4 settimane. Specifica il tipo o i tipi di test, le metriche che definiscono 'rotto', l'obiettivo di spazio libero che avresti impostato, & l'azione che prendi a seconda che il test dei limiti riveli una capacità sufficiente. Sii concreto su cosa fai se il test dei limiti mostra che i 12 server attuali non possono gestire 3.000 RPS.

Su, Fuori, o Diagonale

Quando Aggiungere Potenza, Aggiungere Scatole, o Entrambi

Tre strategie di scalamento fondamentali, ognuna con profili di costo e affidabilità distinti:


Scalamento verticale (scalamento su): macchine più grandi. Sostituisci i server a 8 core con server a 32 core. Percorso più semplice; funziona finché non raggiungi i limiti di una singola macchina. Il singolo punto di fallimento rimane. I costi crescono in modo non lineare: una macchina a 32 core spesso costa più di 4x un 8-core.


Scalamento orizzontale (scalamento fuori): più macchine. Aggiungi server dietro un load balancer. La capacità scala linearmente con il numero di server. I modi di fallimento cambiano: devi gestire la coordinazione distribuita, ma un singolo fallimento del server non distrugge più il servizio. La complessità operativa aumenta.


Scalamento diagonale (termine di Allspaw): scala prima fino a una dimensione per server confortevole, quindi scala da lì. Combina operazioni più semplici di server grandi con la ridondanza di più server. La maggior parte dei servizi di produzione vivono nel territorio dello scalamento diagonale.


Prezzi riservati rispetto a on-demand: i provider cloud premiano la prevedibilità. La capacità riservata è 30-60% più economica di quella on-demand ma richiede un impegno di 1-3 anni. I pianificatori di capacità tipicamente bloccano la domanda di stato stazionario con capacità riservata e fanno un'esplosione in on-demand per i picchi. Sbagliare questa divisione può sprecare soldi (over-riservato) o esporre il budget a sorprese (under-riservato durante i picchi).


Istanze spot e carichi di lavoro preemptibili: 60-90% più economiche di on-demand ma possono essere reclamate con preavviso di minuti. Adatte per lavori batch, analisi, carichi di lavoro di training, o qualsiasi servizio progettato per l'interruzione elegante. Il traffico di produzione rivolto agli utenti tipicamente evita spot.

Percorso di scalamento diagonale: scatole da piccole a medie poi scalamento orizzontale

Scelta di un Percorso di Scalamento

Il tuo servizio di transcodifica video funziona su 8 istanze cloud di medie dimensioni (8 core ciascuna). Prevedi una crescita di 3x nei prossimi 6 mesi. Il carico di lavoro è legato alla CPU, parallelizzabile per video, & ogni transcodifica video richiede 90 secondi end-to-end. Le istanze riservate costano il 50% di on-demand. Le istanze spot costano il 30% di on-demand ma possono essere terminate con preavviso di 2 minuti.

Consiglia una strategia di scalamento per i prossimi 6 mesi. Specifica quali dimensioni di istanza scegli, la miscela di riservato/on-demand/spot, & giustifica ogni pezzo della miscela rispetto alle caratteristiche del carico di lavoro. Identifica il singolo rischio più grande nel tuo piano & proponi una mitigazione.

Carriere in Pianificazione della Capacità

Dove le Competenze di Pianificazione della Capacità Pagano

La pianificazione della capacità è raramente un titolo di lavoro in sé. Le competenze appaiono sotto diversi ruoli:


Site Reliability Engineer: la pianificazione della capacità è una responsabilità SRE fondamentale. La maggior parte dei team SRE ha uno o due ingegneri che si specializzano in capacità, possedendo i modelli di previsione, i test dei limiti, e l'automazione di provisioning.


Cloud Cost / FinOps Engineer: un ruolo più nuovo focalizzato sull'ottimizzazione della spesa nel cloud. Combina la pianificazione della capacità con la modellazione finanziaria, la negoziazione dei contratti, e la gestione del portfolio di istanze riservate. Paga estremamente bene nelle aziende native del cloud perché le bollette del cloud sono spesso la seconda spesa più grande dopo lo stipendio.


Performance Engineer: si concentra sull'efficienza per nodo e sui test dei limiti. Il lavoro: estrarre più capacità dallo stesso hardware attraverso profiling, ottimizzazione, e cambiamenti architetturali. Conoscenza pesante dei sistemi e del runtime del linguaggio.


Capacity Planning Specialist: nelle aziende molto grandi (Google, Meta, Amazon, Netflix), esistono team dedicati alla pianificazione della capacità. Posseggono i modelli di previsione su tutta la flotta, negoziano l'approvvigionamento su larga scala, e coordinano con la finanza sulla roadmap hardware pluriennale.


Competenze che si compongono: analisi di serie temporali (R, Python statsmodels, Prophet), teoria delle code (M/M/1, M/M/c, Little's Law), almeno uno strumento di gestione della configurazione, almeno un dashboard di costo del cloud, e la capacità di scrivere un rapporto di previsione che un CFO può capire e agire. Le competenze tecniche ti fanno avere il colloquio; le competenze di comunicazione ti fanno avere il budget.

Carriere in capacità: SRE, FinOps, Performance, Specialist

Riepilogo

Quello che Sai Ora

La pianificazione della capacità è una disciplina continua, non un esercizio annuale. Hai coperto:

- Il corridoio tra sottodimensionamento e sovradimensionamento

- Carico di lavoro rispetto all'utilizzo come le due dimensioni della misurazione

- Trend, stagionalità, e limiti di incertezza come i tre strati di ogni previsione

- Test dei limiti (sintetico, shadow, esercitazione di fuoco) come l'unico modo per conoscere la capacità reale

- Buffer di spazio libero e perché non sono spreco

- Scalamento diagonale e la decisione di prezzo riservato/on-demand/spot

- Percorsi di carriera dove queste competenze guadagnano autorità di budget


Due idee contano di più. Prevedi con limiti, mai con punti singoli. E misura il tuo limite prima che la produzione lo faccia. Porta questi due avanti e il resto segue.


Lettura consigliata: 'The Art of Capacity Planning' di Allspaw (O'Reilly, edizione 2017 seconda), i capitoli rilevanti nel SRE Book di Google (gratuito su sre.google/books/), e 'Systems Performance' di Brendan Gregg per il lavoro di sistemi sottostante. La lezione companion geometry-of approfondisce la struttura visiva: Little's Law come area, curve di code, pendenze di trend, e inviluppi di spazio libero.