Docker e orchestration tools
Il progetto nasce con lo scopo di supportare il piano didattico del corso di Sistemi Distributi con una presentazione di Docker e delle possibilità offerte dai tool di orchestrazione che si basano su questo tipo di tecnologia per fare sviluppo su larga scala di architetture distribuite.
Docker è un open platform per il deployment di applicazioni containerizzate, una tecnologia che fornisce un’astrazione aggiuntiva grazie alla virtualizzazione a livello di sistema operativo per consentire a ”contenitori software” indipendenti di coesistere sulla stessa istanza di OS, evitando l’installazione e la manutenzione di una macchina virtuale.
La vera potenzialità di Docker emerge però quando più container comunicano tra loro, attraverso una rete interna privata (che può anche essere pubblica) per scambiarsi informazioni e/o servizi: questo concetto è materia per la container orchestration, metodologia altamente funzionale per un’enterprise che deve distribuire e gestire centinaia o migliaia di host, e che desidera automatizzare i processi di deployment, gestione, scalabilità e networking dei container.
Gli strumenti utilizzati per l’orchestrazione offrono un framework per la gestione di architetture e microservizi su larga scala.
Numerosi sono gli strumenti disponibili per la gestione del ciclo di vita dei container, ma, essendo fra i più diffusi, verranno trattati Kubernetes e Docker Swarm:
- Docker Swarm: tool di orchestrazione built in di Docker, ”Docker Swarm” gestisce swarm, insiemi di più host su cui il Docker Engine (cuore operativo della Docker Platform) viene eseguito in modalità ”Swarm”, rendendo i nodi (macchine appertenenti allo Swarm) in grado di agire come manager (per gestire l’appartenenza allo swarm e la distribuzione dei compiti) o worker (per eseguire servizi).
- Kubernetes: architettura software con una struttura client-server che esegue su un cluster (cioè un gruppo di hosts, detti nodi) in cui dispiega la sua applicazione.
I ”partecipanti” al cluster si distinguono in master (Control Plane Node, coordinatore dell’esecuzione dei container ed esecutore dei processi della Control Plane) e worker (esecutore del carico di lavoro secondo le modalità definite dal master).