Automazione e DevOps: OpsWorks per i tuoi stack

Uno dei temi di cui si continua a parlare tanto in Italia resta il DevOps con tutti i suoi concetti di Continuous Delivery e Continuous Integration. Diversi sono i marchi ai quali fare riferimento quando si decide di approcciare a queste metodologie, tra i quali Puppet Labs e Chef. Sul secondo e su come le “ricette”, che altro non sono che delle automazioni da svolgere in determinate fasi del ciclo di vita, possano aiutare a velocizzare i rilasci ci ha creduto anche Amazon che ha creato all’interno del proprio Cloud un prodotto chiamato OpsWorks.

Molte sono le domande che ci vengono fatte su questo prodotto, sulle sue funzionalità, sulle potenzialità e sulle ricadute che può avere nel mondo dei rilasci e dell’elasticità. Vediamo quindi di rispondere ad alcune delle domande più frequenti con dei casi specifici.

Cos’è OpsWorks?

OpsWorks non è altro che una suite di Amazon Web Services che, sfruttando le varie tecnologie messe a disposizione da AWS quali EC2, RDS ed ELB, aiuta nel deploy di infrastrutture che giovano – o addirittura necessitano – di una forte automazione e customizzazione in fase di configurazione ambiente e deploy.

Vero è che Amazon ha già un prodotto simile, chiamato Elastic Beanstalk, il quale fornisce un livello di semplicità nella gestione di stack PHP, Docker, Java o Ruby assoluto. Tuttavia qui parliamo di funzionalità leggermente più avanzate e con un livello di automazione maggiore seppur con un livello di controllo inferiore su alcune componenti d’infrastruttura quali gli Autoscaling Group.

Nel dettaglio OpsWorks è composto da diversi elementi, e sono:

  • Stack
  • Layer
  • Instances
  • App

Ognuno di questi ha un ruolo specifico, delle funzionalità e peculiarità ben distinte che occorre comprendere per poter pianificare l’introduzione di questa suite all’interno del proprio parco servizi. Vediamoli nel dettaglio.

Cos’è uno Stack?

Uno stack è essenzialmente un’insieme di componenti (o sotto-componenti quali Layer e Istanze) che sono tra di loro collegati nell’erogazione di un servizio specifico quale potrebbe essere un’applicazione web, un backend, un proxy etc.

Lo stack è una componente che, una volta costruita, può essere clonata e spostata in diverse Region di Amazon per poter internazionalizzare in tempo zero. All’interno di uno stack è possibile definire, se si vuole, la possibilità di utilizzare delle Chef Recipes personalizzate su Git.

Cos’è un Layer?

Un layer, o in italiano uno strato, è essenzialmente un componente – o un insieme di componenti – che compone lo stack. Si possono avere diversi tipi di layer quali PHP, MySQL, Java, Ruby etc.

OpsWorks a seconda del layer selezionato ha già un subset di ricette già pronte per la configurazione dei layer più comuni, ricette che installano PHP con Apache e così via. A queste ricette è possibile aggiungere le proprie in modo da configurare l’ambiente in maniera totalmente automatica. Un layer ha poi una sua composizione, architettura e separazione degli strati. Quello Web, ad esempio, si può scegliere di configurarlo in Alta Affidabilità, bilanciando quindi il carico degli utenti tramite l’utilizzo di un Elastic Load Balancer lasciando invece uno strato di backend in Java con una singola istanza.

Cos’è un’Istanza?

Niente di più semplice: un server EC2. Un’istanza è quel server sul quale l’intero stack, con layer e applicazioni, risiede. Sarà possibile configurare tutto delle proprie istanze, potenza, storage, security group, key pair etc.

Cos’è un’App?

L’app è essenzialmente il codice che dev’esser deployato in fase di rilascio. Il codice di queste app può risiedere su Git o su di un bucket S3, in modo da poter deployare sempre l’ultima versione stabile. Ovviamente è possibile configurare più di un’applicazione, le quali saranno poi deployabili singolarmente su uno o più server contemporaneamente. Ognuna di queste applicazioni, a seconda del codice con il quale viene scritta, apparterrà di fatto ad un Layer che provvederà prima del deploy a predisporre l’ambiente opportunamente.

Posso creare uno stack completamente customizzato?

Certo che sì! Lo stack, o più precisamente tutti i layers che lo compongono, possono essere completamente custom. Questo significa che, pur prendendo spunto dai layers preconfigurati da Amazon, sarà possibile creare le proprie ricette con i propri pacchetti da installare e le proprie configurazioni. Nulla è impossibile con Chef, e OpsWorks semplifica decisamente la vita.

In che modo OpsWorks garantisce scalabilità ed elasticità?

Come accennato in precedenza OpsWorks chiaramente utilizza tutti i servizi di AWS per poter creare degli stack ad altà affidabilità ma soprattutto scalabili ed elastici. Tuttavia OpsWorks, al contrario di Elastic Beanstalk, non crea alcun Autoscaling Group, nonostante ciò sarà comunque possibile creare delle istanze da attivare in caso di sovraccarico o sulla base di allarmi Cloudwatch personalizzati. Questa astrazione permette una più facile gestione dell’infrastruttura, permettendo di concentrarsi maggiormente su sviluppo e rilasci, minimizzando i rischi di questi ultimi.

Volete provare OpsWorks?

Fai un passo verso DevOps, fai un passo verso l’innovazione!