La containerizzazione è una modalità di partizione dei dati che, utilizzando tipicamente dei domini, aiuta le organizzazioni a gestire informazioni di molteplici entità. Da un paio d’anni il modello di riferimento più adottato dalle aziende è la containerizzazione Docker. Questo in virtù del fatto che Docker risolve e razionalizza la containerizzazione di tutto il mondo open source basato su Linux. In questo articolo analizzeremo il tema dei container e big data.
Container big data in chiave Docker
I container Docker nei cluster di Kubernetes offrono ai team IT un nuovo framework per l’implementazione dei sistemi di big data management. È così che si può rendere più semplice la creazione di un’infrastruttura aggiuntiva per la gestione di tutte le nuove fonti di dati. Pensando all’evoluzione dell’intelligenza artificiale questo tipo di container facilita l’orizzonte delle personalizzazioni associate alla gestione di specifici progetti di data science come, ad esempio, la creazione di modelli di machine learning. Il tutto semplificando il provisioning dell’infrastruttura dei dati quando l’azienda è pronta a mettere in produzione questi modelli avanzati.
La containerizzazione Docker offre un meccanismo di partizione delle applicazioni, dei codici di sviluppo e degli strumenti come Jupyter Notebooks.
“Questa modalità – ha sottolineato Brian Gracely, direttore della strategia di prodotto di Red Hat – abilita la coerenza tra dev, test, staging e produzione, o quando si lavora in ambienti cloud privati o pubblici”.
Che cos’è la governance della containerizzazione e perché è importante
Con l’adozione dei container le azienda hanno dovuto scontrarsi con la difficoltà di gestione di numerosissimi container su un sistema distribuito.
È quindi emersa la necessità dell’orchestrazione dei container intesa come gestione di grandi volumi dei container stessi lungo il loro ciclo di vita inclusi provisioning, monitoraggio, allocazione delle risorse, ridondanza, scalabilità eccetera.
Sono state create piattaforme ad hoc per svolgere questo compito è il caso di Kubernetes.
Cos’è Kubernetes
L’insieme dei container di dati viene generalmente gestita utilizzando Kubernetes, un sistema open source per risolvere i container Linux attraverso ambienti in cloud pubblici, privati o ibridi.
Kubernetes, nome derivante dal greco che significa pilota o timoniere, fornisce una piattaforma altamente scalabile per la distribuzione e l’esecuzione di applicazioni di big data, permettendo di eseguire quasi tutti i carichi di lavoro associati ai big data, all’AI o alle applicazioni di machine learning.
Questo riduce la necessità di dover mantenere cluster a silos per ogni tipo di framework legato ai big data. Le tecnologie emergenti di Kubernetes, come Operator Framework, semplificano il modo in cui vengono gestiti i grandi framework e le applicazioni dei dati, consentendo operazioni altamente automatizzate.
Più nello specifico, Kubernetes consente, per esempio, di organizzare il traffico tra i vari container per far restare stabile il servizio e di costruire un sistema di archiviazione a scelta tra storage locale, cloud pubblico eccetera; è possibile utilizzare Kubernetes per allineare lo stato attuale dei container in base a quello che si desidera, così come istruirlo su quanta CPU e memora Ram abbia bisogno ogni container eccetera.
Kubernetes governance, definire un quadro di governance per la propria organizzazione
Premesso che Kubernetes e i container consentono di semplificare la gestione dei servizi aziendali. Per fare ciò è necessario definire un sistema omogeneo di configurazione e sviluppo delle applicazioni scritte in linguaggi diversi.
Questo ha dei risvolti estremamente positivi sull’organizzazione permettendo di ottimizzare i costi, un miglior bilanciamento dei carichi di lavoro e anche di attivare sistemi di monitoraggio, riuscendo a sfruttare appieno l’elasticità del cloud bypassando il vendor lock-in.
Open source e containerizzazione: i plus Kubernetes
Con la containerizzazione l’implementazione di sistemi big data può comportare anche più configurazioni e impostazioni che devono essere capite e gestite. Gli esperti offrono le linee guida della governance in 5 punti per container e big data.
1. Esplorare le community
La maggior parte delle piattaforme di containerizzazione di dati, Kubernetes incluso, sono tecnologie completamente open source per cui hanno comunità grandi e vivaci che le utilizzano e ne garantiscono il pieno supporto. Come prima cosa da fare, gli esperti suggeriscono di controllare le bacheche delle varie community, i siti GitHub, i canali Slack e i blog, in modo da verificare se ciò che si intende realizzare possa essere già stato fatto. Capitalizzare l’esperienza delle community, infatti, è un grosso valore aggiunto. Progetti come Radanalytics, Kubeflow, TensorFlow, PyTorch, JupyterHub e OperatorHub sono davvero utili sia che si stia partendo con un progetto oppure che si stiano cercando integrazioni esistenti per rendere più efficace il lavoro in esecuzione. Ci sono anche diversi e ottimi tutorial gratuiti online su OpenShift, Kubernetes e l’utilizzo dei container. È importante, infatti, operare un confronto con quanto fatto da altre aziende che hanno implementato la containerizzazione per la gestione dei Big Data. Il progetto ChRIS del Massachusetts Open Cloud, ad esempio, sta risolvendo i problemi della sanità utilizzando un grande volume e un’ampia varietà di fonti di dati. UPS, invece, sta eseguendo analisi a livello edge relative alle consegne effettuate dai propri camion. ACI Worldwide, ancora, utilizza la containerizzazione per fare analisi legate al rilevamento delle frodi con le carte di credito.
2. Pianificare la sicurezza
La containerizzazione è un approccio nuovo e, a dispetto della sua rapida adozione, presuppone comunque diversi punti di attenzione. Gli osservatori, ad esempio, segnalano un potenziale di nuove vulnerabilità alla sicurezza. Le organizzazioni devono formare le persone non solo a realizzare e mettere in produzione i container di dati, ma anche a identificare le possibili falle alla protezione aziendale. Tra le linee guida di quando si implementa una app associata ai big data in un container rientra il monitoraggio, che deve essere parte integrante dello sviluppo. È fondamentale identificare e attenuare i problemi all’interno dei container man mano che si verificano, in quanto una violazione potrebbe significare l’accesso non autorizzato a un’app, una violazione dei dati sensibili o vulnerabilità dei sistemi core. Il modo migliore per garantire la sicurezza in base alla progettazione (Security by design) consiste nell’utilizzare la rete di applicazioni che emerge in modo naturale quando un’azienda partiziona applicazioni, dati e dispositivi tramite API standardizzate in modo da renderli collegabili e riutilizzabili. Queste API possono essere distribuite in contenitori di dati, insieme o separatamente, a seconda delle esigenze aziendali. Quando sono collegati a una rete di applicazioni, i container devono essere progettati in modo da mostrare esattamente quali applicazioni di dati potrebbe essere compromessa, cosicché da poterli disattivare in caso di violazione.
3. Pianificare le API legate alla containerizzazione
Con la containerizzazione, gli utenti possono partizionare le loro applicazioni big data con tutti gli strumenti e le risorse di cui hanno bisogno. L’insieme dei microservizi utilizzati possono essere distribuiti all’interno del container di dati, creando un ecosistema isolato che non può essere influenzato dai processi a valle. Una volta creati, questo tipo di container può essere inserito in una rete di applicazioni API e spostati su qualsiasi cloud o centro dati. La containerizzazione dei microservizi isola ulteriormente un’applicazione big data da un singolo punto di errore, fornendo dei punti logici di accesso ai diversi aspetti funzionali.
4. Integrare i big data e l’infrastruttura delle app
La distribuzione delle app in relazione ai big data su container offre numerosi vantaggi alle organizzazioni che desiderano aumentare isolamento, flessibilità e portabilità. Kubernetes, ad esempio, è la soluzione ideale per avere una singola interfaccia unificata per gli ambienti clusterizzati. Inoltre, dicono gli esperti, eseguendo un cluster Kubernetes per carichi di lavoro che non hanno grandi dimensioni e non sono a pieno utilizzo permette a team IT e agli sviluppatori di dati di poter attingere a quei carichi di lavoro inutilizzati per aumentare l’efficienza complessiva delle risorse all’interno dell’organizzazione.
Chi si occupa di programmazione potrà esplorare le migliori pratiche per la creazione di configurazioni personalizzate a livello di sistema operativo, in modo da facilitare il supporto dei container di applicazioni e dati sulla stessa infrastruttura. Sarà possibile containerizzare le librerie per le applicazioni in modo da poter fare aggiornamenti più mirati o migrare dei particolari carichi di lavoro.
5. Prestare attenzione al potenziamento delle infrastrutture
Come avvertono gli esperti, i grandi sistemi di dati che sono containerizzati e utilizzano Kubernetes non risolvono magicamente tutti i problemi. Chi si occupa di consulenza segnala il caso in cui i team che si occupano dei dati stiano utilizzando YARN, ricordando che l’aggiunta di Kubernetes per container di big data rappresenta un altro ambiente cluster tutto da capire e da gestire. I registri di controllo, il networking delle applicazioni e i dati stateful distribuiti diventano ulteriori aree su cui i team devono intervenire. Per questo, prima di implementare sistemi di Big Data attraverso la containerizzazione, è necessario mettere in conto l’espansione delle infrastrutture da progettare e presidiare.