top of page

SageMaker Auto Scaling incontra un vincolo di deployment che AWS CDK deve orchestrare

54 minuti fa
Tempo di lettura: 12 min

AWS ha pubblicato una soluzione alternativa per l'auto scaling di SageMaker relativa agli aggiornamenti degli endpoint che non riescono mentre lo scaling resta registrato. L'approccio usa AWS CDK, un framework per definire l'infrastruttura cloud nel codice, per coordinare modifiche che altrimenti richiederebbero un intervento manuale. La sua rilevanza risiede nel divario che affronta: dichiarare l'infrastruttura desiderata non sempre esprime la sequenza necessaria per raggiungerla.

Il post del 23 ottobre descrive un costrutto riutilizzabile, un componente infrastrutturale pacchettizzato, che rimuove temporaneamente la registrazione dello scaling e la ripristina dopo l'aggiornamento dell'endpoint. AWS CloudFormation, il servizio che effettua il provisioning delle risorse dai template, rimane responsabile del deployment. Le risorse personalizzate, estensioni che eseguono logiche di provisioning specifiche dell'applicazione, gestiscono le transizioni attorno a tale aggiornamento.

Per gli ingegneri di piattaforma, il conflitto centrale è tra configurazione dichiarativa e sequenziamento operativo. Un template può descrivere correttamente un endpoint e le sue impostazioni di scaling, pur lasciando un aggiornamento bloccato dalla loro relazione. L'esempio di AWS inserisce tale relazione nel flusso di deployment, ma i team devono comunque valutare ripristino, capacità e responsabilità.

L'auto scaling di SageMaker evidenzia un divario tra configurazione ed esecuzione

La modifica è un modello di orchestrazione pubblicato, non l'eliminazione della restrizione di aggiornamento sottostante di SageMaker.

La consulente AWS Lauren Eterno descrive l'approccio in un costrutto per l'aggiornamento degli endpoint. Sostituisce le risorse di scaling native con passaggi di provisioning personalizzati attorno alla modifica dell'endpoint. Secondo AWS, ciò consente di modificare la configurazione dell'endpoint e i parametri di scaling in un unico deployment.

La distinzione è importante perché l'affermazione generale secondo cui lo scaling blocca gli aggiornamenti degli endpoint richiede una precisazione. Le regole di aggiornamento degli endpoint di SageMaker identificano esplicitamente le modifiche al tipo di istanza come un caso che non riesce mentre il modello rimane registrato. Consentono inoltre di modificare il modello per una variante già configurata per lo scaling. Una variante è una configurazione di erogazione del modello all'interno di un endpoint.

Questa eccezione evita una lettura eccessivamente ampia dell'annuncio. I team non dovrebbero presumere che ogni rilascio di modello richieda lo smantellamento della registrazione dello scaling. La domanda rilevante è quali proprietà delle risorse cambino e se tali modifiche incontrino la restrizione documentata. La strategia di deployment dovrebbe seguire questa distinzione.

Si consideri un ipotetico servizio di raccomandazione che sposta il proprio modello su un diverso tipo di istanza. Il modello stesso potrebbe rimanere invariato, ma l'aggiornamento dell'infrastruttura attraversa un confine protetto dalla registrazione dello scaling. Un ingegnere che esamina soltanto la nuova configurazione dell'endpoint potrebbe non cogliere questo prerequisito.

L'esempio affronta quindi un problema di ciclo di vita, ossia le transizioni ordinate necessarie per creare, aggiornare e rimuovere risorse. Non introduce un altro algoritmo di scaling. Il suo valore consiste nel coordinare operazioni esistenti affinché il processo di deployment comprenda i loro prerequisiti.

Questo è un confine utile per valutare la notizia. Un nuovo costrutto dovrebbe essere giudicato in base alla sua capacità di rendere le modifiche infrastrutturali ripetibili e recuperabili. Affermazioni su una migliore qualità dell'inferenza, un'esecuzione del modello più rapida o una maggiore efficienza dello scaling richiederebbero prove separate.

La pubblicazione crea anche un obiettivo di revisione concreto per i team che mantengono soluzioni alternative private. Possono confrontare i propri script con un riferimento redatto da AWS anziché ragionare soltanto a partire da un messaggio di errore. Ciò non rende automaticamente il riferimento adatto a ogni ambiente di produzione.

La pressione immediata ricade sui team il cui processo di rilascio presume che un template valido garantisca un percorso di aggiornamento valido. L'esempio mostra perché anche il percorso merita una revisione. Stato desiderato e comportamento di transizione appartengono alla stessa conversazione ingegneristica.

I team di piattaforma ereditano le conseguenze dell'intervento manuale

Una modifica riuscita dell'endpoint è incompleta se il comportamento di scaling previsto non è stato ripristinato.

La preoccupazione operativa più rilevante è la distanza tra configurazione dell'infrastruttura e comportamento in esecuzione. Un endpoint può rispondere alle richieste pur non disponendo della configurazione di scaling attesa dai suoi responsabili. Una revisione del rilascio incentrata sulle risposte dell'applicazione non dimostrerebbe che l'infrastruttura rimanga pronta a una domanda variabile.

AWS descrive scenari di deregistrazione manuale che lasciano lo scaling assente oppure causano il fallimento di aggiornamenti successivi delle risorse. Tali esempi espongono problemi diversi. Un fallimento di deployment visibile richiede attenzione immediata, mentre l'assenza di scaling può sfuggire a una revisione concentrata sul fatto che l'applicazione continui a rispondere.

L'ingegnere reperibile eredita le conseguenze in entrambi i casi. Qualcuno deve determinare quali modifiche siano state completate, quali risorse esistano e cosa tenterà il deployment successivo. Senza una registrazione condivisa, il processo di ripristino dipende dalla ricostruzione delle azioni eseguite al di fuori del normale flusso di rilascio.

Per un team di piattaforma, si tratta di un problema di responsabilità tanto quanto di strumenti. Gli sviluppatori dell'applicazione possono essere responsabili del comportamento del modello, mentre gli ingegneri dell'infrastruttura controllano il deployment. Un flusso che attraversa entrambi richiede una definizione esplicita di completamento che nessuno dei due gruppi possa soddisfare da solo.

Tale definizione dovrebbe includere la configurazione di erogazione e i controlli di capacità previsti. Dovrebbe inoltre distinguere la registrazione dall'associazione della policy. Un target scalabile, la risorsa registrata la cui capacità può variare, e la sua policy di scaling rappresentano elementi correlati ma distinti dello stato finale.

L'implicazione pratica è un controllo di accettazione del rilascio più ampio. I team dovrebbero verificare che l'endpoint usi la configurazione prevista e che i suoi controlli di capacità corrispondano alla modifica approvata. Lo stato di salute dell'applicazione resta necessario, ma risponde a una domanda diversa.

Questo è particolarmente rilevante quando una modifica hardware accompagna impostazioni di scaling riviste. Il rilascio modifica allora sia il modo in cui vengono eseguite le richieste sia il modo in cui la capacità risponde in seguito. Esaminare ciascuna modifica isolatamente lascia l'interazione non valutata.

Un componente riutilizzabile può concentrare tale responsabilità. Invece di chiedere a ogni team applicativo di ricordare una sequenza, il team di piattaforma può mantenere un'implementazione comune. Il beneficio dipende dal trattare il componente come infrastruttura sottoposta a manutenzione, con una responsabilità chiara e un processo di ripristino documentato.

La documentazione deve preservare le decisioni oltre ai comandi. Gli ingegneri che indagano su un incidente successivo devono sapere perché esiste la deregistrazione temporanea e quali ipotesi la giustificano. Una base di conoscenza ingegneristica ricercabile può conservare tali decisioni insieme alle evidenze di deployment.

L'implicazione aziendale è la prevedibilità dei rilasci. Una modifica infrastrutturale che richiede regolarmente l'intervento di specialisti impone lavoro di coordinamento a ogni deployment interessato. Portare la sequenza nel codice offre un modo per ridurre tale lavoro, a condizione che i fallimenti rimangano comprensibili per chi la gestisce.

Questa precisazione separa l'automazione utile dalla complessità nascosta. L'obiettivo dovrebbe essere un deployment che spieghi chiaramente il proprio stato. Il semplice trasferimento di comandi manuali in funzioni non garantisce tale risultato.

Il costrutto rende espliciti ordinamento e disponibilità

Il meccanismo combina una catena di dipendenze ordinata con controlli che verificano che ogni prerequisito sia effettivamente diventato utilizzabile.

La implementazione di esempio segue una sequenza definita: deregistrare lo scaling, aggiornare l'endpoint, registrare il target e associare la policy. La fase di registrazione attende che l'endpoint raggiunga InService, il suo stato operativo pronto. La fase della policy attende finché il target registrato non può essere interrogato.

Questi controlli affrontano confini diversi. L'endpoint deve essere pronto per la registrazione, e la registrazione deve diventare visibile prima che la policy possa essere associata. Trattare queste condizioni separatamente rende il flusso più facile da ispezionare rispetto al presumere che una richiesta accettata significhi che ogni operazione dipendente possa procedere.

Application Auto Scaling, il servizio AWS per regolare la capacità delle risorse supportate, documenta tale divario di visibilità. La sua API di registrazione avverte della consistenza eventuale, ossia che una modifica riuscita può richiedere tempo prima di comparire nelle richieste successive. Ciò rende il controllo della disponibilità una risposta a un comportamento documentato.

L'esempio usa il completamento asincrono, un modello che separa l'avvio di un'operazione dalla verifica del suo completamento. Il framework del provider CDK invoca ripetutamente un gestore di completamento finché non riesce o raggiunge il timeout. Questo evita di vincolare l'intera attesa a una singola invocazione di funzione.

Il riferimento configura controlli ogni 30 secondi. Consente fino a un'ora per la registrazione del target e 15 minuti per l'associazione della policy. Questi valori descrivono i limiti di attesa dell'implementazione; non rappresentano durate di deployment garantite né evidenze sulle prestazioni tipiche di produzione.

Il trigger di configurazione è altrettanto importante. Una proprietà ConfigHash, un valore che rappresenta la configurazione rilevante, cambia quando cambiano le impostazioni dell'endpoint o dello scaling. Ciò fornisce a CloudFormation una proprietà modificata della risorsa personalizzata da elaborare, riportando l'orchestrazione nell'aggiornamento.

È qui che il modello va oltre l'ordinamento delle dipendenze. Una regola di ordinamento da sola non fa rieseguire una risorsa personalizzata invariata. Il flusso necessita sia di un motivo per essere eseguito sia di una sequenza imposta una volta iniziata l'esecuzione.

Il comportamento CDK più ampio appare nel suo framework per risorse personalizzate. CloudFormation invia eventi del ciclo di vita ai provider, e il framework supporta controlli di completamento per operazioni che richiedono tempo. Segnala inoltre un errore quando un gestore fallisce o il periodo di attesa scade.

Per i revisori, queste sono responsabilità separate. Il trigger di configurazione determina quando è necessario lavorare. Le dipendenze determinano quando il lavoro può iniziare. I controlli di completamento determinano quando il lavoro successivo può procedere. La logica di ripristino deve quindi affrontare ciò che accade quando il progresso si arresta tra questi confini.

Il design risultante è più esplicito di uno script di deployment che invia richieste in ordine e presume una disponibilità immediata. Tuttavia, l'esplicitazione non deve essere confusa con una prova di correttezza. Il riferimento fornisce un meccanismo ispezionabile che i team possono valutare rispetto ai propri requisiti operativi.

L'inferenza gestita lascia comunque il coordinamento del deployment all'operatore

Il confronto più ampio riguarda il modo in cui le piattaforme espongono la responsabilità del ciclo di vita, piuttosto che quale fornitore offra lo scaling automatico.

Google Cloud documenta anch'esso lo scaling configurabile per i modelli di previsione distribuiti. Le sue impostazioni di autoscaling per l'inferenza includono conteggi minimi e massimi di repliche, dove le repliche sono copie in esecuzione che servono un modello. La documentazione distingue inoltre il successo del deployment dalla piena disponibilità della capacità nelle configurazioni supportate.

Quel confronto fornisce contesto senza stabilire una classifica tra fornitori. Impostazioni simili non implicano restrizioni di aggiornamento, gestione degli errori o semantiche di distribuzione identiche. L’esempio AWS non offre alcuna base per affermare che un’altra piattaforma eviti ogni problema di coordinamento comparabile.

Per gli acquirenti aziendali, il confronto utile va oltre la semplice esistenza dello scaling. Dovrebbero chiedersi in che modo le modifiche all’hardware interagiscano con i controlli della capacità, come venga segnalato lo stato di disponibilità e chi ripristini la configurazione dopo un errore. Queste domande collegano le funzionalità del prodotto al lavoro necessario per gestirle.

La stessa distinzione si applica all’interno di un ambiente AWS. Definire l’infrastruttura tramite CDK offre agli sviluppatori un’interfaccia di programmazione, ma il deployment risultante continua a seguire il comportamento di CloudFormation. Il linguaggio usato per descrivere le risorse non elimina i prerequisiti a livello di servizio.

Ecco perché l’esempio merita attenzione oltre la sua implementazione specifica. Rende visibile nel codice dell’infrastruttura una dipendenza operativa. Ciò offre ai revisori un punto in cui esaminare una sequenza che altrimenti potrebbe rimanere dispersa tra note di rilascio, script ed esperienza individuale.

Esiste inoltre una distinzione tra disponibilità degli aggiornamenti e disponibilità dello scaling. L’API di aggiornamento degli endpoint di SageMaker descrive lo spostamento del traffico verso una nuova flotta con il ritiro di quella precedente. Questa transizione del serving non stabilisce di per sé che la policy di scaling prevista sia stata ripristinata.

Un team può quindi definire condizioni di accettazione separate per il serving delle richieste e la gestione della capacità. L’applicazione dovrebbe rimanere operativa durante la modifica, mentre il deployment dovrebbe terminare con i controlli di scaling previsti presenti. Nessuna delle due condizioni dovrebbe sostituirsi all’altra.

Questa separazione migliora anche l’analisi degli incidenti. Se le richieste falliscono, gli ingegneri possono indagare sulla transizione del serving. Se la capacità smette di seguire la domanda, possono ispezionare lo stato dello scaling. Un record di deployment che distingue questi esiti offre ai responsabili degli incidenti un punto di partenza più chiaro.

Per le organizzazioni che standardizzano l’infrastruttura di inferenza, la scelta consiste nell’assorbire questo coordinamento in un componente comune. L’alternativa è lasciare ogni team responsabile di comprendere lo stesso confine del ciclo di vita. Un componente condiviso offre coerenza, ma concentra anche la responsabilità della manutenzione.

Questo compromesso merita un responsabile designato. Qualcuno deve riesaminare le modifiche al componente, mantenere la compatibilità con i deployment esistenti e decidere quando le sue ipotesi non sono più adeguate. La riusabilità crea valore organizzativo solo quando anche il modello di manutenzione è riutilizzabile.

La deregistrazione rende il ripristino parte della progettazione

Ripristinare il target è necessario, ma l’accettazione in produzione deve coprire tutto ciò che la deregistrazione rimuove.

L’API di deregistrazione afferma che la rimozione di un target scalabile elimina le policy di scaling e le azioni pianificate associate. Le azioni pianificate sono modifiche della capacità configurate per orari specifici. Questo rende la deregistrazione un’operazione distruttiva del ciclo di vita, anche quando l’intenzione è temporanea.

Questo comportamento solleva un’immediata questione di compatibilità per gli endpoint esistenti. Se un’organizzazione utilizza azioni pianificate o policy aggiuntive, i revisori dovrebbero stabilire come tali configurazioni vengano ripristinate. La presenza di una policy di target tracking, che regola la capacità verso un valore di metrica scelto, non risponde a questa domanda.

La sequenza documentata nell’esempio si concentra sulla registrazione del target e sull’associazione della policy configurata. I team non dovrebbero dedurre che ogni configurazione di scaling già collegata a un endpoint venga rilevata e ricostruita. Requisiti di ripristino più ampi richiedono ispezione e convalida esplicite.

Anche il divario nello scaling merita attenzione. La rimozione della registrazione non significa che l’endpoint sia stato eliminato, ma i suoi precedenti controlli automatici della capacità sono assenti. Gli operatori dovrebbero valutare quale domanda la flotta di serving debba gestire durante tale intervallo.

Si tratta di una valutazione specifica del carico di lavoro. Un servizio interno stabile e un’applicazione pubblica esposta a una domanda imprevedibile presentano condizioni di accettazione differenti. Il riferimento non fornisce prove misurate che stabiliscano una finestra di interruzione accettabile per nessuno dei due casi.

Le impostazioni della capacità richiedono una revisione separata dopo una modifica dell’hardware. Preservare la configurazione della policy precedente non stabilisce che rimanga appropriata per un diverso tipo di istanza. I team dovrebbero valutare il comportamento risultante con una domanda rappresentativa prima di considerare il ripristino un successo operativo.

I test degli errori dovrebbero seguire i confini della transizione. I revisori dovrebbero esaminare un errore di aggiornamento dell’endpoint, un errore di registrazione e un errore di associazione della policy. Ciascuno lascia una domanda diversa sullo stato effettivo e sull’azione necessaria per il ripristino.

Il rollback, il processo di ritorno verso la configurazione precedente dopo un errore, richiede la stessa attenzione del deployment in avanti. Una risorsa personalizzata partecipa a quel ciclo di vita tramite i propri handler. La sua esistenza non garantisce che ogni operazione completata solo parzialmente venga annullata in modo pulito.

La documentazione CDK osserva esplicitamente che un’operazione su una risorsa può fallire anche quando un’azione sottostante è riuscita tecnicamente. Questa distinzione è importante nell’interpretazione dei log. Un errore segnalato dovrebbe attivare l’ispezione dello stato reale della risorsa prima che qualcuno presuma che l’azione non sia mai avvenuta.

L’identità della risorsa è un altro punto di revisione. CloudFormation utilizza l’identificatore fisico della risorsa di un provider per distinguere un aggiornamento da una sostituzione. I team che modificano l’esempio dovrebbero comprendere questo comportamento prima di cambiare i formati degli identificatori o la logica di pulizia.

Queste preoccupazioni non invalidano l’approccio. Definiscono le prove necessarie per adottarlo responsabilmente. Un componente di orchestrazione dovrebbe rendere visibili gli stati di errore, conservare contesto sufficiente per il ripristino ed evitare di segnalare il completamento prima che esista il risultato previsto.

La pubblicazione disponibile è una guida tecnica, non uno studio indipendente sull’affidabilità. Non stabilisce l’adozione in produzione, una riduzione misurata degli incidenti o una garanzia universale di ripristino. Il suo contributo più forte è un progetto esplicito che gli operatori possono testare anziché dover ricostruire autonomamente.

Le prossime prove dovrebbero provenire da aggiornamenti, ripristino e supporto nativo

I segnali più utili sono risultati ingegneristici osservabili, anziché affermazioni più ampie sull’automazione.

Il primo segnale consiste in aggiornamenti di configurazione ripetibili con lo scaling ripristinato in seguito. Nei prossimi mesi, gli adottanti dovrebbero cercare prove relative a modifiche dell’hardware e delle impostazioni di scaling. Una ripetizione riuscita rafforzerebbe l’ipotesi che il componente acquisisca la dipendenza prevista in modo coerente.

Le prove dovrebbero descrivere lo stato finale, non soltanto un comando di deployment completato. I revisori necessitano della conferma che l’endpoint esegua la configurazione prevista e che il target e la policy attesi esistano. L’assenza di ripristino ridurrebbe il valore pratico del modello anche se il serving rimanesse operativo.

Il segnale successivo è il comportamento documentato in presenza di errori iniettati. Una valutazione convincente identificherebbe dove il flusso di lavoro si è interrotto, cosa è rimasto attivo e come è proceduto il ripristino. Prove chiare di ripristino rafforzerebbero la fiducia più di un ulteriore deployment iniziale riuscito.

Al contrario, errori che richiedono interventi non documentati nella console rivelerebbero lavoro operativo incompleto. Ciò non annullerebbe il valore della sequenza automatizzata, ma cambierebbe la decisione di adozione. I team dovrebbero tenere conto di quel lavoro residuo nel loro processo di rilascio.

Il segnale finale è il progresso nel supporto nativo del ciclo di vita. Occorre monitorare la documentazione di SageMaker, CloudFormation e CDK per modifiche che interessano gli aggiornamenti degli endpoint e la registrazione dello scaling. La gestione nativa della sequenza di prerequisiti ridurrebbe la necessità di orchestrazione gestita dall’applicazione.

Finché tale supporto non sarà disponibile, il riferimento offre una base concreta per le decisioni di platform engineering. Integra l’auto scaling di SageMaker nel ciclo di vita del deployment dell’endpoint, anziché trattare il ripristino come un’attività separata dell’operatore. Il suo valore per l’adozione dipende dal fatto che questo flusso di lavoro esplicito si comporti in modo prevedibile nell’ambiente in cui verrà eseguito.

Per i team che valutano il costrutto, è opportuno iniziare con un endpoint di cui siano noti la cronologia degli aggiornamenti e la configurazione di scaling. Esaminate l’infrastruttura generata, identificate ogni configurazione che la deregistrazione rimuove e assegnate la responsabilità del ripristino. Poi testate un aggiornamento rappresentativo e un errore controllato prima di estendere l’adozione. Conservate le prove risultanti insieme alla documentazione operativa del componente, affinché le release future ereditino il ragionamento oltre al codice. La domanda per una revisione del rilascio è concreta: dopo la modifica dell’endpoint, il team può stabilire che il comportamento di serving, scaling e ripristino soddisfi tutti i requisiti? Usate questo criterio per valutare l’orchestrazione dell’auto scaling di SageMaker e richiedete che siano le prove del deployment a rispondervi.

 
 

Inizia gratis

Un assistente IA local-first con gestione della conoscenza personale

Per una migliore esperienza con l’IA,

al momento remio supporta solo Windows 10+ (x64) e M-Chip Macs.

Il tuo partner AI al lavoro
Fai di più con remio

Pianifica. Crea. Consegna.
Tutto in un unico posto.

bottom of page