Autonomic computing
# Autonomic computing

L'Autonomic Computing è un'iniziativa avente lo scopo di fornire ai computer gli strumenti necessari per auto-gestirsi senza l'intervento umano.

Avviata dall'IBM nel 2001, è stata ripresa da tante altre aziende, tra le quali HP e Microsoft. L'iniziativa ha coinvolto anche il mondo accademico, con l'istituzione della International Conference on Cloud and Autonomic Computing.

Il progetto è ispirato al sistema nervoso autonomo, ovvero quell'insieme di cellule e fibre che innervano gli organi interni e le ghiandole, controllando le funzioni che generalmente sono al di fuori del controllo volontario.

## Sistemi autonomi

In un sistema auto-amministrato, l'operatore umano ha una nuova regola: egli non deve controllare il sistema direttamente. Invece, egli definisce politiche generali a regole date in input al processo di auto-gestione. Per questo processo, IBM ha definito le seguenti quattro aree funzionali.

* Auto-configurazione: nel caso in cui l'ambiente dovesse subire dei cambiamenti, la configurazione dei componenti verrebbe adeguata, seguendo le linee di condotta indicate dal professionista umano. Tali modifiche potrebbero includere il dispiegamento di nuove componenti, la rimozione di componenti precedentemente dispiegati o modifiche drastiche alla configurazione corrente;
* Auto-guarigione: le componenti dovrebbero essere in grado di rilevare dei malfunzionamenti del sistema ed intraprendere delle azioni correttive. Tali azioni possono includere la modifica dello stato corrente di un componente o di altri componenti;
* Auto-ottimizzazione: monitoraggio e controllo automatico delle risorse per assicurare un funzionamento ottimale e rispettoso dei requisiti definiti. Tra le azioni che possono essere intraprese c'è la riallocazione delle risorse per fare fronte a cambiamenti del carico sul sistema, oppure assicurarsi che determinate transazioni vengano considerate prioritarie rispetto a tutte le altre;
* Auto-protezione: identificazione e protezione da attacchi arbitrari.

L'IBM definisce 5 livelli di evoluzione, in modo da raggiungere il fine ultimo dell'autonomic computing progressivamente:

* Livello Base, è il punto di partenza degli odierni sistemi di calcolo, in cui i componenti del sistema sono gestiti manualmente e singolarmente.
* Livello Gestito, in cui sono introdotti dei sistemi centralizzati di raccolta delle informazioni.
* Livello Predittivo, in cui il sistema è in grado di analizzare i dati raccolti, correlando i pattern con le azioni raccomandate dagli amministratori.
* Livello Adattativo, in cui il sistema è in grado di prendere le decisioni sulla base dei dati raccolti, riducendo al minimo l'intervento umano.
* Livello Autonomo, in cui i componenti del sistema sono totalmente integrati e gestiti dinamicamente sulla base di regole e politiche di alto livello.

Le funzionalità che devono essere presenti sono:

* monitoraggio dello stato attuale del sistema;
* analisi dello stato per stabilire se è necessario un intervento;
* pianificazione dell'intervento;
* esecuzione dell'intervento.
