Un tecnico che visualizza un monitor o un terminale.

Cos'è l'ingegneria delle prestazioni?

Ingegneria delle prestazioni, spiegazione

L'ingegneria delle prestazioni è la pratica di ottimizzare i sistemi IT per soddisfare i benchmark di velocità ed efficienza.

L'ingegneria delle prestazioni non è una singola azione, ma una metodologia DevOps e shift-left che consente alle aziende di monitorare e ottimizzare le prestazioni in ogni fase del ciclo di vita dello sviluppo del software (SDLC) . Il suo obiettivo è garantire che i sistemi soddisfino le metriche delle prestazioni per criteri quali velocità, affidabilità, efficienza e tempo di risposta.

I team di ingegneria delle prestazioni stabiliscono anzitutto le prestazioni di base del sistema attraverso test di stress. Poi utilizzano questa linea di base per identificare i problemi di rete e le opportunità di miglioramento. Quando i benchmark sono fissati, gli ingegneri possono iniziare a riconfigurare la rete, mettere in atto le correzioni e monitorare continuamente la rete per problemi di prestazioni e pianificazione della capacità futura.

L'observability è alla base dell'ingegneria delle prestazioni. Gli strumenti di observability raccolgono i dati non elaborati (log, metriche e tracce) che descrivono le prestazioni, mentre i team di ingegneria delle prestazioni utilizzano questi stessi dati per tracciare gli effetti delle loro correzioni. Gli ingegneri delle prestazioni utilizzano inoltre vari altri strumenti per Application Performance Management, test di stress, audit e benchmarking dei browser per ottenere le immagini più nitide possibile dei loro sistemi.

Ingegneria delle prestazioni vs. Application Performance Management e test delle prestazioni 

L'ingegneria delle prestazioni è la disciplina più ampia e completa che consiste nell'ottimizzare i sistemi IT per raggiungere benchmark prestabiliti. L'Application Performance Management (APM) e i test delle prestazioni sono due delle attività che rientrano in questo processo complessivo.

L'Application Performance Management (APM) è una pratica che utilizza strumenti software, analisi dei dati e processi di gestione delle applicazioni per aiutare le organizzazioni a ottimizzare le prestazioni, la disponibilità e l'esperienza degli utenti delle applicazioni aziendali. Mentre l'ingegneria delle prestazioni copre l'intero processo di sviluppo, l'APM si concentra sul rilevare e risolvere problemi nelle applicazioni live.

Analogamente, il test delle prestazioni è l'attività specifica di testare le prestazioni di una rete o di un'applicazione in varie condizioni attraverso test di carico, test di stress, test di resistenza e di altro tipo. Come l'APM, il test delle prestazioni è solo un'attività all'interno della più ampia pratica dell'ingegneria delle prestazioni.

Come funziona l'ingegneria delle prestazioni?

L'ingegneria delle prestazioni si realizza attraverso una sequenza flessibile ma completa che include la definizione di benchmark, il test e la definizione delle priorità, l'ottimizzazione, la pianificazione e il monitoraggio delle prestazioni.

Benchmark

In primo luogo, l'organizzazione identifica il livello di prestazioni richiesto ai sistemi e alle applicazioni per soddisfare gli obiettivi aziendali. Successivamente, gli ingegneri delle prestazioni testano le prestazioni attuali per stabilire punti di riferimento e determinare come raggiungere i benchmark.

Le comuni metriche di benchmark includono latenza, throughput, utilizzo delle risorse e tasso di errore. I team di sviluppo possono misurare queste metriche a livello micro (all'interno di un particolare server o servizio) o su scala più ampia, in un'intera applicazione o rete.

Il benchmarking spesso comporta domande specifiche sui requisiti di prestazione e sull'ambiente di sviluppo. Ad esempio, invece di cercare di impostare una soglia generale per l'utilizzo della CPU, gli ingegneri potrebbero chiedersi se meno del 60% della CPU viene utilizzato quando 5.000 utenti utilizzano un'applicazione contemporaneamente.

Test e definizione delle priorità

Utilizzando strumenti di test dedicati, gli ingegneri delle prestazioni convalidano i dati rispetto ai benchmark stabiliti, identificando la natura e la localizzazione delle modifiche necessarie a soddisfare i livelli di servizio richiesti.

Le forme comuni di test delle prestazioni includono:

Test di caricamento

Il test di carico indica il comportamento del sistema quando opera con i carichi previsti. L'obiettivo del test di carico è quello di mostrare il comportamento del sistema quando si verificano workload di routine in condizioni di lavoro normali con un numero medio di utenti simultanei.

Test di scalabilità

I test di scalabilità mettono il sistema sotto stress aumentando il volume di dati o i carichi utente gestiti. Mostra se un sistema è in grado di soddisfare un ritmo maggiore continuando comunque a fornire risultati.

Stress test

I test di stress spingono il sistema ai limiti operativi previsti, e poi anche oltre, per determinare esattamente quanto il sistema può sopportare prima di raggiungere il punto di rottura.

Test di picco

Il test di picco osserva cosa accade quando il traffico degli utenti o il volume di dati subisce improvvisamente un forte e drastico picco di attività. Il sistema deve assorbire varie modifiche pur continuando con le normali operazioni.

Test di volume

Il test di volume esamina come un sistema gestisce grandi quantità di dati, in particolare se può elaborare completamente tali dati e memorizzarli senza degradazione.

Test di resistenza

I test di resistenza, o soak test, consistono nell'osservare un sistema nel tempo per individuare problemi come il degrado graduale dei dati o le perdite di memoria.

Ottimizzazione

Dopo aver identificato i limiti e le carenze del sistema, inizia il processo di ottimizzazione.

A seconda della natura del collo di bottiglia delle prestazioni in questione, gli ingegneri delle prestazioni possono utilizzare strategie di ottimizzazione come:

  • Ottimizzazione degli algoritmi, dove gli algoritmi che potenziano le funzioni del sistema vengono modificati per migliorare l'efficienza.

  • L'ottimizzazione del database, in cui i problemi sottostanti ai dati di sistema vengono risolti tramite processi come l'ottimizzazione delle query (il processo di determinare il modo più efficiente per un database di eseguire una query) o l'ottimizzazione dell'indice, volta a garantire che il sistema utilizzi i percorsi di recupero più rapidi possibile.

  • La cache, che memorizza i risultati delle operazioni di calcolo più impegnative, in modo che possano essere riprodotti e recuperati più rapidamente.

  • Ottimizzazione della memoria, in cui gli ingegneri riducono le perdite di memoria e velocizzano la raccolta dei rifiuti riutilizzando oggetti in memoria, riorganizzando i dati o memorizzando alcuni dati off-site.

  • L'ottimizzazione della rete, che comprende la compressione della larghezza di banda, il bilanciamento del carico, il riutilizzo delle connessioni HTTP e altri metodi per velocizzare le prestazioni della rete.

Pianificazione e monitoraggio

Una volta ottimizzato il sistema, gli ingegneri delle prestazioni monitorano costantemente eventuali scostamenti dalla nuova linea di base e pianificano la crescita e le attività future.

L'observability consente agli ingegneri delle prestazioni di determinare se il sistema sta funzionando come previsto. Raccogliendo e analizzando i log, le metriche e le tracce, gli strumenti di observability consentono ai team IT di automatizzare l'identificazione e la risoluzione dei problemi in tempo reale. Quanto più un sistema è osservabile, tanto più rapidamente e accuratamente i team IT possono passare dall'identificazione di un problema a livello di prestazioni alla sua causa principale, senza ulteriori prove o codifiche.

La pianificazione della capacità consente agli ingegneri delle prestazioni di essere sempre un passo avanti rispetto alle esigenze aziendali, anticipando i requisiti futuri dell'infrastruttura IT. Il capacity planning consiste nell'analisi della domanda attuale e della capacità disponibile, confrontandola con le funzionalità e le risorse dell'organizzazione. Le organizzazioni sviluppano quindi una strategia regolabile che consente loro di scalare in modo efficiente le risorse e la produzione.

AI Academy

Prepararsi all'AI con l'hybrid cloud

Condotto dai migliori leader di pensiero di IBM, il programma di studi è stato progettato per aiutare i dirigenti aziendali ad acquisire le conoscenze necessarie per dare priorità agli investimenti in AI che possono favorire la crescita.

I benefici dell'ingegneria delle prestazioni

I benefici dell'ingegneria delle prestazioni includono un'esperienza utente migliorata, un'infrastruttura IT più scalabile, una risoluzione dei problemi più efficiente e una pianificazione della capacità migliorata.

Esperienza utente migliorata

L'ingegneria delle prestazioni migliora l'esperienza dell'utente risolvendo problemi di prestazioni come l'alta latenza, che possono allontanare gli utenti da un servizio. Ottimizzando il processo di ingegneria del software e i suoi output, l'ingegneria delle prestazioni può contribuire a costruire la fiducia degli utenti e a promuovere il business ripetuto.

Maggiore scalabilità

L'ingegneria delle prestazioni offre un quadro chiaro dei problemi all'interno di un sistema. Questo quadro rende più facile evitare i colli di bottiglia quando si espande il sistema (sia orizzontalmente, aggiungendo nuovi servizi, sia verticalmente, utilizzando una maggiore capacità di rete).

Risoluzione dei problemi efficiente

L'ingegneria delle prestazioni aiuta a garantire che gli ingegneri siano dotati degli strumenti e delle conoscenze necessari per produrre sistemi che soddisfino i benchmark stabiliti. Gli ingegneri possono risolvere i problemi di prestazioni più rapidamente, riducendo il tempo medio di riparazione (MTTR) e a costi inferiori, perché i problemi vengono rilevati prima ancora che abbiano l'opportunità di interrompere in modo significativo le prestazioni di rete.

Capacity planning ottimizzato

L'ingegneria delle prestazioni contribuisce a ottimizzare il capacity planning, offrendo ai tecnici una comprensione più approfondita del comportamento dei sistemi. Attraverso il processo di benchmarking e le pratiche continue di observability, gli ingegneri acquisiscono migliori insight sulle esigenze delle reti. Questi insight aiutano gli ingegneri a prendere decisioni migliori sulla capacità, riducendo il rischio di spendere troppo o troppo poco per la capacità dei server.

Le sfide dell'ingegneria delle prestazioni

Le sfide dell'ingegneria delle prestazioni includono la complessità dei sistemi moderni, l'identificazione della causa principale dei problemi, la considerazione dei problemi "a coda lunga" e la creazione degli strumenti e delle competenze necessarie.

Complessità

Gli ambienti IT moderni sono dominati da microservizi che possono essere migliaia, spesso ospitati in ambienti hybrid cloud complessi. Raccogliere, analizzare e agire sugli insight attraverso questi sistemi distribuiti può essere un processo che richiede molte risorse, con workflow talvolta imprevedibili.

Individuare le cause principali

La complessità rende anche più difficile identificare le vere cause principali dei problemi di rete. Se un'API risponde lentamente, potrebbe essere il risultato di un database indicizzato male, di una perdita di memoria o di un problema di configurazione. Gli ingegneri delle prestazioni potrebbero dover eseguire un'analisi delle cause principali per identificare la reale opportunità di ottimizzazione.

Problemi di coda lunga

I problemi di coda lunga sono condizioni di rete scadenti riscontrate da una piccola minoranza di utenti. Sono spesso causati da problemi idiosincratici e difficili da rilevare, che sfuggono alle normali pratiche di observability. Nel contesto dell'ingegneria delle prestazioni, questi problemi rappresentano una sfida perché minacciano le condizioni generali della rete, ma le loro cause principali sono difficili da scoprire attraverso i normali test delle prestazioni.

Costruire l'infrastruttura

La pratica dell'ingegneria delle prestazioni richiede competenze del personale e funzionalità sofisticate della piattaforma. I test delle prestazioni richiedono costose simulazioni su larga scala delle condizioni di rete. I team devono comprendere abbastanza bene i sistemi da trasformare una grande quantità di dati di telemetria in insight attuabili. La natura flessibile e iterativa dell'ingegneria delle prestazioni richiede una struttura istituzionale in grado di gestire cambiamenti rapidi.

Autori

Derek Robertson

Staff Writer

IBM Think

Matthew Kosinski

Staff Editor

IBM Think

Soluzioni correlate
IBM Cloud Infrastructure Center

IBM Cloud Infrastructure Center è una piattaforma software compatibile con OpenStack, progettata per gestire l’infrastruttura cloud privata su IBM zSystems e IBM LinuxONE.

Esplora Cloud Infrastructure Center
Infrastruttura IT

Distribuisci infrastrutture sicure e pronte per l'AI in ambienti hybrid cloud

Scopri le soluzioni per le infrastrutture IT
Servizi di infrastruttura

Accelera, proteggi e ottimizza la tua infrastruttura hybrid cloud e aziendale con la guida esperta di IBM Technology Expert Labs.

Scopri i servizi per le infrastrutture
Passi successivi

Trasforma la tua infrastruttura aziendale con le soluzioni IBM pronte per l'AI e l'hybrid cloud. Esplora server, sistemi di storage e software progettati per proteggere, scalare e modernizzare la tua azienda, oppure ricevi insight degli esperti per rafforzare la tua strategia di AI generativa.

  1. Esplora la soluzione per l’infrastruttura IT
  2. Esplora IBM Cloud