Negli ultimi anni, la nostra rete ha supportato centinaia di migliaia di eventi sportivi in live streaming, download di software massicci, miliardi di ore di contenuti video in streaming e richieste da migliaia di applicazioni Web che richiedono tempi di risposta in tempo reale e performance coerenti a livello globale. A sostegno di questa enorme crescita, dal 2015, la nostra rete globale è cresciuta fino a oltre 250 Tbps, richiedendo migliaia di nuovi server nei nostri 300 POP.
Per tenere il passo con la sfida di implementare un ingombro di rete in costante crescita e cambiamento, i nostri team operativi hanno sviluppato una piattaforma di automazione IT utilizzando StackStorm. Si tratta di un enorme passo avanti che ha trasformato il modo in cui i nostri team implementano, cambiano, riparano e smantellano l’infrastruttura server, coprendo oltre il 95% della popolazione di server nella nostra rete globale.
Ecco uno sguardo a come abbiamo costruito una piattaforma di automazione che ci ha permesso di:
- Aggiungete più di 12.000 server alla nostra rete in meno di tre anni.
- Automatizzare la generazione dei ticket in alcuni casi e risolvere i problemi senza ticket in altri.
- Offrite ai nostri team gli strumenti necessari per collaborare in tempo reale.
- Ridurre il tempo impiegato dai tecnici per seguire una serie di passaggi manuali.
Personalizzazione di StackStorm per proiettare gamberi
Riconoscendo il valore e la crescente maturità delle piattaforme di automazione IT, nel 2015 abbiamo formato il team di automazione dell’infrastruttura con il nome di progetto Crayfish. Abbiamo iniziato a sviluppare una soluzione di automazione IT sul serio, non è un compito da poco per un’organizzazione delle nostre dimensioni. La scelta del nome per il progetto – che stiamo ancora usando – era intenzionale. Abbiamo a lungo avuto pesci e temi nautici per i nostri strumenti, ma più di questo, abbiamo scelto i gamberi perché servono come filtratori, contribuendo a mantenere pulito l’ambiente in cui vivono.
Inizialmente, abbiamo pensato di sviluppare il nostro framework di automazione IT, ma abbiamo deciso subito che StackStorm, con ulteriori miglioramenti per supportare i nostri requisiti e la nostra scalabilità unici, ci ha permesso di andare avanti nel modo più efficace possibile. “StackStorm è una piattaforma open source basata sugli eventi che supporta un approccio “infrastruttura come codice” all’automazione DevOps.” Eccelle nell’esecuzione di flussi di lavoro basati sugli eventi, si integra con Slack, che utilizziamo nei nostri team operativi e dispone del supporto ChatOps nativo.
Sono state apportate alcune modifiche alla configurazione di StackStorm per consentirne l’esecuzione nella scala necessaria. In primo luogo, ciò ha comportato un aumento del numero di istanze di servizio in esecuzione e una riduzione della conservazione dei dati. Quando abbiamo iniziato il progetto, la nostra rete era composta da 8.000 server. Ora siamo a 20.000 server e stiamo contando. La chiave della nostra scalabilità è stata la possibilità di eseguire un numero qualsiasi di istanze StackStorm come dipendenti, anziché cercare di far gestire tutto a una singola istanza StackStorm. Come mostrato nell’illustrazione seguente, ciò è reso possibile da un’iniziativa che abbiamo sviluppato denominata Policy Engine, che gestisce l’invio delle richieste a StackStorm in base alla nostra logica aziendale. Il motore dei criteri può, facoltativamente, mettere in coda le richieste e eseguirle automaticamente quando i criteri ne determinano la sicurezza. Queste policy monitorano la concorrenza, la capacità, il traffico, lo stato della produzione, l’infrastruttura, le blacklist e il tasso di errore.
Le richieste di invio vengono instradate attraverso un’istanza di Policy Engine a un numero qualsiasi di lavoratori StackStorm per una scalabilità praticamente illimitata.
Codificare la conoscenza tribale
L’approccio di base in qualsiasi progetto di automazione IT è quello di acquisire i processi e i flussi di lavoro esistenti, trasformarli in codice in grado di implementare le fasi del flusso di lavoro senza intervento manuale e archiviare i flussi di lavoro codificati in un archivio centralizzato in cui possono essere richiamati secondo necessità, sia come parte di un’altra automazione sia tramite comandi ChatOps.
Una volta avviato il progetto, il team di gamberi ha acquisito i flussi di lavoro e i processi esistenti di tutta l’organizzazione. Fortunatamente, la maggior parte dei processi più importanti utilizzati da diversi gruppi, come il Network Operation Center (NOC), il Data Center Operations o SysOps, erano ben documentati e potevano essere codificati rapidamente utilizzando il linguaggio di programmazione Python e aggiunti al gambero.
Ad esempio, se il NOC desidera implementare un flusso di lavoro di riavvio, dovrebbe verificare che sia sicuro lavorare sul computer in base a vari controlli dei criteri. Ad esempio, se un server è in produzione, il sistema intraprenderà le azioni necessarie per scaricare le connessioni e aggiornare lo stato. Successivamente, eseguirà il riavvio effettivo e i passaggi necessari per verificare che la macchina sia pronta per la produzione prima di riportarla in produzione.
Di sicuro, c’erano molti casi periferici. Tra i più impegnativi vi erano i processi che non erano riusciti ad arrivare alla documentazione. Questi casi di conoscenza tribale richiedevano una collaborazione interfunzionale e parlare con le persone la cui esperienza assicurava che fossero gestite correttamente. Uno dei vantaggi dell’automazione è stato la possibilità di acquisire queste conoscenze, garantendo che rimangano all’interno della nostra organizzazione in futuro.
In alcuni casi, siamo stati anche in grado di identificare modi più efficienti per gestire un’attività particolare, collegandoci con diversi ingegneri e tecnici che hanno capito cosa stava succedendo per un’attività specifica o come risolvere un particolare problema. Abbiamo scoperto che in alcuni casi vi erano diversi livelli di conoscenza tra i vari membri del team. Ecco quando avremmo raccolto l’intelligenza di tutti e sviluppato un unico flusso di lavoro che tutti concordavano avrebbe fornito la soluzione più efficiente.
Distribuzione di nuovi server su richiesta
Crayfish ha trasformato le nostre operazioni IT su molti livelli, ad esempio semplificando l’amministrazione dei server, riducendo i tempi di inattività dei server e accelerando la distribuzione dei server. Solo nel 2018, ITOps ha aggiunto una capacità di 22 Tbps alla nostra rete globale. L’aggiunta di migliaia di server non sarebbe stata possibile senza l’automazione del gambero. E questo risultato è stato raggiunto senza aumentare significativamente i livelli del personale.
Attualmente, Crayfish fornisce una solida automazione per circa 20 diversi tipi di server. Nella nostra organizzazione, definiamo un tipo di server come un gruppo di server che eseguono più o meno lo stesso servizio. Applicazioni diverse vengono eseguite su diversi tipi di server e ogni tipo di server ha esigenze di supporto diverse durante la produzione. Oggi, Crayfish supporta l’intero ciclo di vita dei server per circa 10 tipi di server e può anche eseguire la maggior parte delle riparazioni, revisioni e patch per circa 10 tipi di server aggiuntivi. Fornisce inoltre vari gradi di supporto per circa 40 o 50 più. Poiché ci siamo concentrati sui tipi di server più diffusi, il gambero supporta circa il 96% della nostra popolazione globale di server.
L’uso di gamberi ha portato a un aumento generale delle prestazioni della CDN e della sua capacità di accogliere eventi imprevisti. La nostra rete è ben attrezzata per supportare un traffico massiccio e in costante aumento dai flussi di eventi sportivi più importanti e dai picchi di download di software, ad esempio mantenendo un numero maggiore di server in produzione e riducendo l’interruzione della rimozione dei server dalla produzione durante i periodi di picco del traffico.
La nostra scala contribuisce al motivo per cui i gamberi sono essenziali dal punto di vista delle prestazioni. Se la vostra azienda dispone di un solo data center, potete pianificare i tempi di inattività e tenere sotto controllo le esigenze di quel data center. Ma quando si parla di un data center in quasi tutti i fusi orari, come mostrato nella mappa di rete qui sotto, è necessario contendersi con profili, utilizzo e tempi di utilizzo diversi. Prendere in considerazione tutti questi fattori caso per caso può essere estremamente complesso, ma il gambero lo gestisce facilmente.
Con il gambero, possiamo comunque pianificare attività come il provisioning o gli aggiornamenti in modo che vengano eseguiti automaticamente, ma il sistema è abbastanza intelligente da soddisfare le esigenze locali. Diciamo che un evento di notizie in Lettonia ha causato un grande picco nello streaming di video proprio quando volevamo rifornire tutti i server in Lettonia. A causa dell’integrazione tra gamberi e il nostro sistema di raccolta delle metriche, il sistema vedrebbe aumentare il traffico e si arresterebbe il rifornimento. Potrebbe persino mettere in produzione più server, se necessario.
Rilevare i guasti dell’infrastruttura prima che diventino interruzioni del servizio
Crayfish e altri sistemi di monitoraggio riducono significativamente i tempi di inattività e di riparazione dei singoli server. I nostri sistemi monitorano continuamente la rete per rilevare eventuali problemi o guasti e possono creare automaticamente ticket o applicare direttamente correzioni. Con i sistemi automatizzati, il personale non è tenuto ad avere “occhi puntati” per individuare gli errori di rete: I computer non si annoiano o si stancano e monitorano continuamente.
C’è pochissima limitazione alla quantità di controlli che può essere fatto in questo modo. Il nostro sistema di metriche esegue continuamente controlli hardware che non richiedono la messa fuori produzione delle macchine, mentre un altro sistema cerca valori errati e chiama crayfish per controllare la macchina quando vengono rilevati problemi. Con questo approccio, possiamo rilevare i guasti hardware molto presto.
Ad esempio, se le metriche mostrano che un disco rigido sta iniziando a fallire, i sistemi automatizzati avvieranno un flusso di lavoro in crayfish che verifica l’errore sulla macchina interessata e raccoglie i dettagli sul guasto, come il disco rigido guasto in quale slot, il numero di Shield e così via. Viene quindi creato un ticket appositamente predisposto per il gruppo operativo del data center e viene inviato un tecnico per installare un ticket sostitutivo.
In passato, qualsiasi flusso di lavoro manuale che richiedeva il coordinamento o il trasferimento tra le varie fasi ha comportato notevoli ritardi lungo il percorso. Con un flusso di lavoro automatizzato, il tempo di completamento può essere di minuti anziché di giorni trascorsi in coda in attesa della comparsa della richiesta. In questo modo, i singoli team operativi sono in grado di controllare meglio i sistemi e le applicazioni.
Fornire agli ingegneri strumenti che li rendano più produttivi
Il nostro precedente approccio al lavoro NOC prevedeva l’emissione di un comando e l’attesa che le cose si verificassero. Se un tecnico NOC trascorre 10, 20 o 30 minuti in attesa che un server si spenga correttamente, è necessario chiedere perché. E’ un buon uso del tempo? I gamberi possono eseguire molte, molte esecuzioni in parallelo. E, come notato in precedenza, i gamberi sono stati progettati per scalare orizzontalmente. Quindi, se abbiamo bisogno di più lavoro, possiamo aggiungere un nuovo nodo. Se improvvisamente ci troviamo a dover fare molto lavoro in una volta sola, possiamo scalare un paio di nodi in tutta la CDN e poi ridimensionarlo.
Inoltre, i tecnici hanno così tanta memoria per quanto riguarda il numero di macchine su cui possono lavorare contemporaneamente. Solo il multitasker più eccezionale è in grado di gestire più di cinque o sei macchine in diversi stati senza perdere traccia o commettere errori. Ma con i gamberi, non c’è bisogno di saltare tra vari compiti, possono emettere un comando e andare avanti.
Basandosi sui sistemi di provisioning intelligenti esistenti sviluppati dai team software Infrastructure and Systems Operations, altri aspetti dei cicli di vita dei server sono pienamente supportati all’interno di Crayfish e si verificano in modo ampiamente autonomo, inclusi gli aggiornamenti del sistema operativo, il provisioning dei server o il reprovisioning degli aggiornamenti del firmware e le patch di sicurezza. Quando viene rilasciata una nuova patch, il crayfish accelera i test di convalida per garantire che la patch possa essere rilasciata correttamente.
Poiché il gambero è integrato con Slack, supporta i normali processi IT e facilita il lavoro collaborativo in base alle esigenze e ai requisiti che cambiano. Invece di aspettare un singolo reparto per implementare una modifica, i team possono ora definire il processo manuale come un flusso di lavoro automatizzato. Possono quindi fornire il flusso di lavoro agli utenti finali per l’esecuzione su richiesta. È inoltre possibile implementare criteri che limitano l’esecuzione sicura di un flusso di lavoro. Ciò consente inoltre a un tecnico che si trova di fronte a un server in un data center di emettere un comando per modificare lo stato di produzione di un server su cui si desidera lavorare.
Considerazioni finali
Con migliaia di clienti che spingono terabyte di dati sulla nostra rete globale di oltre 20.000 server al giorno, la nostra implementazione di StackStorm è diventata uno strumento operativo essenziale per mantenere i nostri servizi sani e sicuri. Ci ha permesso di scalare la nostra rete più rapidamente per soddisfare la domanda dei clienti e offrire al contempo prestazioni migliori nonostante cambiamenti dinamici e picchi di traffico imprevisti. Questa agilità operativa ci rende un provider di servizi più affidabile in grado di scalare per soddisfare le esigenze di streaming media e applicazioni Web.
Sebbene la maggior parte delle organizzazioni non operi con la nostra stessa scala, ci sono ancora diverse puntate operative che possono rendere attraente l’automazione, inclusa la sua capacità di:
- Concentrare gli sviluppatori sul lavoro che genera un ritorno più elevato
- Standardizzare le attività di routine e banali.
- Migliorare la collaborazione tra i vari reparti.
- Ridurre i tempi di inattività dei server.
- Migliorare la sicurezza implementando aggiornamenti del firmware e patch di sicurezza.
Senza dubbio, il passaggio all’automazione IT offre un ritorno sugli investimenti molto attraente, ma è importante assicurarsi che stai facendo una mossa per le giuste ragioni. Un buon approccio consiste nel pensare all’automazione come a un modo per fornire agli ingegneri strumenti che li rendano più produttivi e competenti e che consentano loro di concentrarsi sui miglioramenti.
La transizione all’automazione basata sul flusso di lavoro è un modo eccellente per socializzare e codificare le conoscenze tribali. Invece di adottare un approccio personale, uniamo la tribù, creiamo un flusso di lavoro comune e consentiamo a tutti di contribuire alle conoscenze future acquisite per un singolo risultato.