Automazione

Automatizzare le interazioni ripetitive con i sistemi software.

Obiettivi: La disponibilità sempre maggiore di server e di servizi ha reso le infrastrutture IT sempre più grandi, più distribuite e quindi sempre più complesse. Molte attività che potevano svolgersi manualmente, per la loro sporadicità ed eccezionalità, sono diventate sempre più frequenti e sempre più normali. Si pensi solo all'esempio della creazione di un server, partendo dall'hardware: coi moderni sistemi di virtualizzazione, quella che era un'attività rara e che poteva durare una giornata è diventata un'operazione di routine quotidiana.

Perché:

  1. Per impiegare meno tempo nello svolgimento di compiti ripetitivi.
  2. Per lasciare più tempo ed energie per i compiti creativi.
  3. Per eliminare gli errori.

Come: Scrivendo dei programmi in linguaggi di programmazione di alto livello come Python, con librerie apposite (Fabric, SaltStack) o direttamente in Domain Specific Languages (DSLs) pensati per coordinare più calcolatori contemporaneamente (Puppet, Ansible, CFEngine3). Utilizzando dei "robot" che continuamente ripercorrano le azioni necessarie ad un'attività (ad esempio usando Jenkins per automatizzare il processo di test e build di un software).