Ritorno
Tech 8 min di lettura - 20 agosto 25 - Mayeul Le Monies de Sagazan

Come scegliere un'istanza EC2?

Vuoi lanciare il backend della tua applicazione sul cloud AWS ma non riesci a scegliere tra i 750+ tipi di istanze EC2 disponibili con i loro piccoli nomi affascinanti? (ciao t3.micro, g6e.8xlarge e m7i-flex.large)
Questo articolo è fatto per te!

Cos'è EC2?

EC2 (Elastic Compute Cloud) è un servizio di cloud computing offerto da AWS. Questo servizio offre il noleggio di server virtuali nel cloud.
Ma come può un server essere "virtuale"?
In realtà, AWS possiede enormi computer molto potenti. Su questi computer, un software permette di emulare altri computer associando loro una parte delle risorse (calcolo, memoria RAM). Si dice "virtuale" per differenziarlo da un server "fisico", che si chiama anche "bare metal".
In pratica, un server virtuale, è quasi come avere un vero server fisico, certo c'è un leggero costo di performance a causa del software di virtualizzazione, ma in cambio ci sono grandi vantaggi. Per esempio, se ci si rende conto durante l'utilizzo che si ha bisogno di più performance, si può semplicemente chiedere ad AWS "dammi più potenza di calcolo e 4 Go di RAM aggiuntivi" e il software di virtualizzazione aggiorna la capacità della nostra istanza, cosa che sarebbe molto più complicata con un server fisico.
Ciò che differenzia EC2 dagli altri servizi simili è la vastissima gamma di prodotti disponibili. Infatti EC2, con le sue centinaia di tipi di istanze, copre una vastissima gamma di casi d'uso diversi! Dal piccolo backoffice interno al backend API ad alto traffico. Dal database in tempo reale al server di encoding video. Dalla VM Windows al server di addestramento di reti neurali... Insomma, si può fare di tutto!
Sì, insomma, si può fare di tutto solo se si riesce a trovare l'istanza che ci corrisponde.
Prima di entrare nel vivo dell'argomento, ti propongo di fare una piccola parentesi di vocabolario per capire bene di cosa si parla, soprattutto su un argomento importante: la CPU!

La CPU e le vCPU EC2

Una CPU (Central Processing Unit), spesso chiamato “processore”, esegue le istruzioni dei programmi, effettua calcoli e gestisce le operazioni di base del sistema. In breve, è il "cervello" del computer. Si quantifica la sua potenza in diversi modi. Da un lato, c'è la frequenza, misurata in GHz (gigahertz) che rappresenta (più o meno) il numero di operazioni al secondo che il processore può effettuare. Dall'altro lato, c'è il numero di core e thread che rappresentano il numero di task simultanei che il processore può effettuare. Per esempio, un processore con 4 thread potrà "pensare" a 4 cose contemporaneamente.
Secondo l'azienda che ha progettato la CPU, l'architettura interna e le istruzioni disponibili possono cambiare enormemente, il che fa sì che alcuni software funzionino solo per un'architettura di CPU. Oggi si trovano principalmente 2 architetture di processori: x86 e ARM :
  • x86 è l'architettura più comune oggi, la si trova nella maggior parte dei computer e dei server. In questa architettura, spesso 1 core = 2 thread.
  • ARM è un'architettura che è sempre più popolare soprattutto per il suo basso consumo energetico e il suo costo di produzione inferiore. È utilizzata per gli smartphone, i tablet, i Mac M1, M2, M3... e sempre più server! In questa architettura, spesso 1 core = 1 thread.
Poi, la sua controparte "virtualizzata": la vCPU!
In AWS, la definizione di una vCPU cambia in base all'architettura del processore:
  • x86 : 1 vCPU = 1 thread di un core di processore
  • ARM : 1 vCPU = 1 core
Perfetto, hai le basi, riprendiamo...

I nomi dei tipi di istanze

I nomi dei tipi di istanze rispettano una convenzione di denominazione precisa:
Convenzione di denominazione dei tipi di istanze
Percorreremo le diverse parti del nome di un tipo di istanza, non esitare a tornare sull'immagine di tanto in tanto per capire bene quale parte corrisponde a cosa.

Famiglie di istanze e serie

La prima lettera indica la serie all'interno di una famiglia di istanze, ci sono 5 grandi famiglie e molte sottocategorie chiamate "serie":
  • Uso generale
    • M - rapporto vCPU memoria di 1:4 (per esempio 4 vCPU e 16 Go di RAM)
    • T - istanza "Burstable", ci torneremo
    • Mac – istanza che gira su macOS
  • Ottimizzate per il calcolo
    • C - rapporto vCPU memoria di 1:2
  • Ottimizzate per la memoria
    • R - rapporto vCPU memoria di 1:8 (fino a 1 536 Go di memoria)
    • X – fino a 4 To di memoria
    • U – fino a 32 To di memoria, (U credo come Ubuesque)
  • Ottimizzate per lo storage (generalmente istanze con grandi dischi rigidi e buone prestazioni di rete)
    • Im – rapporto vCPU memoria di 1:4
    • Is – rapporto vCPU memoria di 1:6
    • D – Storage Ddense (fino a 336 To di storage HDD)
  • Calcolo accelerato
    • P – Calcolo accelerato con processore grafico (GPU)
    • G – Grafica intensiva
    • VT – Video Transcoding
    • DL1 – Calcolo accelerato con processore Intel® Gaudi®
    • Inf – AWS Inferentia (progettato per supportare le esigenze di inferenza di machine learning)
    • Trn – AWS Trainium (progettato per supportare le esigenze di apprendimento di deep learning)
    • F – FPGA, Field-Programmable Gate Array (hardware programmabile per compiti specifici)

Generazione della famiglia di istanze

Il numero che segue indica la generazione dell'istanza all'interno di questa famiglia. Generalmente, quando AWS rilascia una nuova generazione, è sia più performante che leggermente meno costosa rispetto alla generazione precedente, il che invita gli utenti a migrare alla generazione più recente.

Le opzioni delle istanze

Alcune famiglie di istanze offrono diverse opzioni, ciascuna corrispondente a una lettera:
  • a – processori AMD
  • g – Processori Graviton AWS. Questi processori utilizzano l'architettura ARM, le istanze graviton sono generalmente molto meno costose delle istanze con processori x86. AWS afferma, ad esempio, che le istanze T4g offrono un rapporto prezzo/prestazioni fino al 40% superiore rispetto a quello delle istanze T3.
  • i – Processori Intel
  • flex – Istanza Flex
  • b – Ottimizzazione dello storage a blocchi
  • d – Volumi di storage delle istanze
  • e – Spazio di storage o di memoria aggiuntivo
  • n – Ottimizzazione della rete e di EBS (Elastic Block Storage)
  • q – Acceleratori di inferenza Qualcomm
  • z – Alte prestazioni

Le dimensioni delle istanze

Non c'è molto da dire su questo aspetto, è abbastanza esplicito. Ecco in ordine le diverse dimensioni esistenti (non tutte le famiglie di istanze hanno tutte le dimensioni disponibili):
nano < micro < small < medium < large < xlarge < 2xlarge < 4xlarge < Nxlarge < metal
Le dimensioni "metal" indicano che si tratta di un server "bare metal", cioè che non c'è virtualizzazione delle risorse (si accede alla CPU e alla RAM senza un passaggio di virtualizzazione).

Le istanze T

Per la grande maggioranza delle istanze, se si ha 1 vCPU si paga per poter utilizzare il 100% di quella vCPU. Tuttavia, AWS si è resa conto che nella maggior parte dei casi, un'istanza EC2 non ha bisogno di utilizzare il 100% della CPU in modo permanente.
carico di lavoro tipico ec2
È basandosi su questa constatazione che le istanze T sono apparse. Queste istanze sono dette "burstable". Permettono, con una tariffa vantaggiosa, di pagare per l'utilizzo di una certa percentuale della CPU (ad esempio 40%). Se si consuma meno, si guadagnano "crediti", e se si consuma di più, si perdono "crediti". Se si arriva a 0 "crediti" e l'utilizzo della CPU è ancora superiore alla percentuale di base, allora si paga per l'utilizzo aggiuntivo.
Questo permette al software di virtualizzazione sulla macchina host di creare molte più istanze virtuali. AWS si assicura solo di poter dare ad ogni VM almeno la percentuale di CPU per la quale paga. Se mai una delle istanze volesse andare oltre la sua percentuale di utilizzo e usare i suoi crediti, può farlo se rimangono risorse di calcolo disponibili sulla macchina host.
Le istanze burstable sono un'ottima opzione economica per le attività che in media non necessitano di molte prestazioni, ma che di tanto in tanto devono sostenere un carico maggiore, ad esempio gli ambienti di test.
Questo tipo di istanze permette ad AWS di risparmiare fornendo più istanze per macchina host; questi risparmi vengono poi trasferiti sul prezzo delle istanze T, il che spiega la tariffa vantaggiosa.
Per dare un'idea, ecco la percentuale di base a cui si ha diritto per le diverse dimensioni di istanze T (sono le stesse percentuali per dimensione per l'intera gamma "burstable" T3, T3a, T4g, T2)
  • nano 5%
  • micro 10%
  • small 20%
  • medium 20%
  • large 30%
  • xlarge 40%
  • 2xlarge 40%

Le istanze flex

Le istanze flex sono tutte recenti (mai 2024) e assomigliano molto alle istanze burstable, ma con garanzie diverse.
Le istanze flex garantiscono una performance CPU di base del 40% pur avendo la capacità di scalare fino alla capacità massima per il 95% del tempo su un periodo di 24 ore. Il 5% del tempo rimanente, potenzialmente non si potrà superare il 40% della CPU.
Per il momento solo la serie M7i possiede una versione flex (M7i-Flex), ma è possibile che altre serie vedano la luce in futuro!

Referenze

È la fine di questo articolo, metto qui in ordine sparso degli articoli interessanti per approfondire!

Desideri essere accompagnato per lanciare il tuo progetto digitale ?

Invia il tuo progetto ora