SUS03-BP01 Ottimizzazione del software e delle architetture per processi asincroni e pianificati
Utilizza modelli efficienti di software e di architettura, come quelli basati sulle code, per mantenere un utilizzo elevato e costante delle risorse distribuite.
Anti-pattern comuni:
-
Provisioning di risorse in eccedenza per il carico di lavoro in cloud con lo scopo di far fronte a picchi di domanda imprevisti.
-
Architettura non in grado di disaccoppiare i mittenti e i ricevitori di messaggi asincroni mediante un componente di messaggistica.
Vantaggi dell'adozione di questa best practice:
-
Modelli efficienti di software e architettura riducono al minimo le risorse inutilizzate nel carico di lavoro e migliorano l'efficienza complessiva.
-
È possibile scalare le risorse dedicate all'elaborazione indipendentemente dalla ricezione di messaggi asincroni.
-
Grazie a un componente di messaggistica, i requisiti di disponibilità si attenuano e possono essere soddisfatti con un numero inferiore di risorse.
Livello di rischio associato se questa best practice non fosse adottata: medio
Guida all'implementazione
Utilizza modelli di architettura efficienti come l'architettura basata su eventi
Comprendi i requisiti dei componenti del carico di lavoro e adotta modelli di architettura che aumentino l'utilizzo complessivo delle risorse. Ritira i componenti non più necessari.
Passaggi dell'implementazione
-
Analizza le esigenze del tuo carico di lavoro per determinare come rispondere a tali richieste.
-
Per le richieste o i processi che non necessitano di risposte sincrone, utilizza architetture basate su code e worker a dimensionamento automatico per massimizzare l'utilizzo. Ecco alcuni esempi in cui potresti prendere in considerazione un'architettura basata sulle code:
Meccanismo di accodamento Descrizione I processi AWS Batch vengono inviati a una coda di processi, dove risiedono fino a quando non è possibile pianificare la loro esecuzione in un ambiente di calcolo.
Abbina Amazon SQS e istanze spot per realizzare un'architettura efficiente e in grado di tollerare i malfunzionamenti.
-
Per le richieste o i processi che possono essere elaborati in qualsiasi momento, ottieni una maggiore efficienza utilizzando i meccanismi di pianificazione dell'elaborazione delle attività in blocco. Ecco alcuni esempi di meccanismi di pianificazione su AWS:
Meccanismo di pianificazione Descrizione Una funzione di Amazon EventBridge
per la creazione, esecuzione e gestione di attività pianificate su vasta scala. Definisci una pianificazione in base al tempo per crawler e processi in AWS Glue.
Processi pianificati di Amazon Elastic Container Service (Amazon ECS)
Amazon ECS supporta la creazione di processi pianificati. I processi pianificati utilizzano le regole di Amazon EventBridge per eseguire processi in base a una pianificazione o in risposta a un evento EventBridge.
Configura le pianificazioni di avvio e arresto delle istanze di Amazon EC2 e Amazon Relational Database Service.
-
Se nella tua architettura utilizzi meccanismi di polling e webhook, sostituiscili con eventi. Utilizza architetture basate sugli eventi per la creazione di carichi di lavoro a elevata efficienza.
-
Sfrutta la tecnologia serverless di AWS
per eliminare infrastrutture con provisioning eccessivo. -
Dimensiona in modo appropriato i singoli componenti dell'architettura per evitare la presenza di risorse inattive in attesa di input.
-
Puoi sfruttare i suggerimenti per il ridimensionamento corretto in AWS Cost Explorer o AWS Compute Optimizer
per individuare le opportunità di dimensionamento corretto. -
Per ulteriori dettagli, consulta Ridimensionamento corretto: provisioning delle istanze per soddisfare i carichi di lavoro.
-
Risorse
Documenti correlati:
Video correlati:
-
AWS re:Invent 2023 - Navigating the journey to serverless event-driven architecture
-
AWS re:Invent 2023 - Using serverless for event-driven architecture & domain-driven design
-
AWS re:Invent 2023 - Advanced event-driven patterns with Amazon EventBridge
-
AWS re:Invent 2023 - Sustainable architecture: Past, present, and future
Esempi correlati: