Il Cloud Computing Open Source Ing. Marco Marchini Open Source Software (OSS) Open Source indica un metodo di sviluppo del software in cui gli autori del software stesso ne permettono e favoriscono il libero studio e l’apporto di modifiche da parte di altri programmatori. L’intero processo è regolato dall’applicazione di apposite licenze d’uso. Le licenze Open Source ● favoriscono la redistribuzione libera del software; ● ne assicurano la disponibilità del codice sorgente; ● ne permettono la modifica al fine di creare lavori derivati. La filosofia è quella di sfruttare le potenzialità dello sviluppo distribuito del software da parte di comunità di programmatori, al fine di assicurare una maggior qualità, affidabilità e flessibilità dei prodotti a costi inferiori ed evitando vendor lock-in. Tali licenze comunque pongono determinati vincoli ● gli autori del software devono essere menzionati anche nelle versioni modificate, lasciando intatto il loro copyright; ● in seguito a una modifica, non è possibile applicare una licenza d'uso incompatibile con la licenza originaria; ● il software non è usabile se non si rispetta la licenza; ● quando si distribuisce un eseguibile occorre distribuire insieme anche i sorgenti. Esempi di software Open Source Ambito server: BIND (server DNS) Apache, NGINX (server Web) Sendmail, Postfix (server mail) Linguaggi e strumenti per lo sviluppo di applicazioni: Python, Perl, PHP, Ruby, Java Eclipse, NetBeans, Plone, Ruby on Rails MySQL, PostgreSQL Applicazioni per gli utenti finali: LibreOffice, 7-Zip, VLC Firefox, Thunderbird, Gimp Android!! Perché Cloud Open Source? OSS tipicamente user-driven, risolve problemi reali Bassa barriera di partecipazione consente la formazione di comunità di sviluppatori, indipendenti o all’interno di aziende partecipanti, per risolvere i problemi più sentiti dagli utilizzatori Apache Cassandra (database): Facebook, Rackspace, Twitter, Digg, Reddit Hadoop (framework per applicazioni distribuite): Yahoo!, Cloudera Xen (hypervisor - monitor di macchine virtuali): Citrix, Oracle, Fujitsu, Intel, HP, AMD, … Perché Cloud Open Source? “Release early, release often” (Eric S. Raymond) Ciclo di rilasci aggressivo ● feedback rapido da parte di chi testa il sistema ● la tecnologia rimane al corrente con lo “state-of-theart” ● i fornitori del servizio Cloud possono contribuire alla scoperta e soluzione di errori, senza aspettare i vendor Perché Cloud Open Source? Solitamente quello che frena gli utenti dall’utilizzare software Open Source è l’eventuale difficoltà nell’uso di tale software Il Cloud Computing elimina la necessità di essere esperti per provare a usare software Open Source Nel mondo Cloud ogni applicazione è trattata come servizio disponibile per l’utente finale, senza bisogno di operare installazioni/configurazioni complesse Perché Cloud Open Source? Apertura dei dati, degli standard, delle API libvirt: toolkit di virtualizzazione che permette di usare qualsiasi hypervisor (Open Source o meno) libcloud: libreria Python standard che astrae le differenze tra API di diversi Cloud provider jclouds: libreria Java che fornisce API per la portabilità su diversi Cloud promuove, anche grazie all’aiuto di organizzazioni di standard, l’interoperabilità tra Cloud di diversi fornitori (federazione delle Cloud) Storia del Cloud Open Source Open Source 2006 2007 2008 2009 2010 2011 2012 Proprietari Amazon EC2 Google App Engine Progetti IaaS e PaaS Open Source giovani ma in rapido sviluppo A oggi, il mondo Cloud Open Source sembra convergere verso la soluzione OpenStack OpenStack Progetto fondato da Rackspace Hosting e NASA nel 2010, mira a creare una piattaforma Infrastructure as a Service Open Source per Cloud pubbliche e private. Attualmente supportato da più di 150 aziende e 9000 persone, tra cui ➢ HP (primi deployment pubblici: HP Cloud), ➢ IBM (ricerca), ➢ Dell, AMD, Canonical, ecc. Attività su OpenStack Fonte: stackalytics.com Architettura di OpenStack Networking (Neutron) Compute (Nova) gestione della virtualizzazione di rete deployment e gestione su larga scala di VM scalabile di oggetti statici Dashboard (Horizon) portale web di gestione per amministratori e utenti Object Storage (Swift) storage ridondante e Image Service (Glance) Identity Service (Keystone) autenticazione unificata su tutto il sistema memorizzazione, recupero, discovery, registrazione e consegna di immagini di VM Vantaggi di OpenStack Progetto completamente Open (nel codice, nelle API, negli standard) per creare Cloud pubbliche e private Nessuna preferenza su software (Open Source o proprietario) e su piattaforma hardware ● possibilità di sfruttare investimenti precedenti ● no vendor lock-in ● ottimo ambiente per la sperimentazione Standard di riferimento nel mondo Cloud Open Source: integrazione con numerosi componenti o moduli di terze parti per l’ aggiunta di funzionalità (automatizzazione, monitoring, fatturazione) o per l’estensione del Cloud a PaaS (CloudFoundry, OpenShift) Svantaggi di OpenStack Tecnologia ancora molto recente, non consolidata rispetto ad altri Cloud (Open Source e proprietari) già sul mercato da più tempo, come OpenNebula (usato in campo HPC) o il colosso Amazon Web Services Software ancora in fase di sviluppo, gli amministratori che usano OpenStack devono essere pronti a cambiamenti Supporto tecnico carente, necessita maggiore organizzazione Non ha sistemi di monitoring e fatturazione integrati Cloud Federation Cloud pubblico M VM ne zio Strumenti condivisi Gestione va tti ... /a Billing ne io az r ig { Autenticazione VM Python/PHP Cloud privato (Enterprise B) Java/Ruby/Node.js Cloud privato (Enterprise A) Motivazioni per la Cloud Federation Lo studio e la sperimentazione in ambito Cloud Federation sono importanti per le possibilità che aprono Punto di vista dei fornitori dei servizi: ● load balancing (distribuzione carico computazionale e traffico) ● gestione picchi di attività ● aumento della disponibilità dei propri servizi tramite estensione presenza territoriale ● sfruttamento di risorse altrimenti sottoutilizzate Punto di vista dei fruitori dei servizi: ● maggior possibilità di scelta ○ a livello di utente, tra servizi di diversi provider ○ a livello di applicazione, tra infrastrutture e piattaforme di diversi provider La Cloud Federation è considerata il futuro del Cloud Computing Sfide in ambito Cloud Federation La Cloud Federation è un tema di ricerca ancora giovane: ● astrazione dei fornitori di servizi (provider) a. esecuzione e migrazione di VM, anche attive, in modo rapido ed efficiente su Cloud di diversi provider b. condivisione e gestione del carico (computazionale e di storage) tra i diversi provider c. distribuzione dei servizi tra i vari provider in modo da consentire elevate performance e riduzione dei costi ● definizione e implementazione di uno schema di autenticazione comune ● sicurezza e privacy dei dati e delle applicazioni ospitate nei vari sistemi, stabilite tramite redazione di appositi agreement che ne garantiscano i diritti di sfruttamento Altri progetti Cloud Open Source Cloud Foundry è il progetto PaaS Open Source iniziato da VMWare Supporta diversi framework, Cloud provider e servizi, il tutto in una piattaforma scalabile Molteplici linguaggi di programmazione (Java/Spring, Groovy/Grails, Ruby on Rails/Sinatra, Node.js, .Net) Ospitato da diversi Cloud provider, privati e pubblici (vSphere, AWS, Azure, Rackspace, OpenStack, Ubuntu) Ancora in fase beta, ma liberamente scaricabile Cloudify è un popolare progetto Open Source, già in produzione, che permette alle aziende di portare in modo semplice qualsiasi applicazione (Java, .NET, Groovy, Ruby, C++, Node.js, Spring, Chef) su un qualsiasi Cloud (pubblico o privato), senza necessità di modificare il codice. Si avvale di API CLI, REST e Web. Altri progetti Cloud Open Source CumuLogic è una PaaS Open Source per applicazioni Java e Spring. Al momento free in versione beta, supporta diversi Cloud, Open Source e proprietari (Amazon EC2, OpenStack, CloudStack, Eucalyptus, VMWare vSphere) OpenShift è la soluzione PaaS offerta da RedHat, uno dei leader nel mondo Open Source e produttrice dell’omonima distribuzione Linux. Supporta applicazioni Java, Java EE, Python, Perl, PHP, Ruby, Node.js e praticamente tutti i Cloud provider, pubblici e privati. Ancora in versione beta, per ora offre due piani tariffari: uno free con determinati limiti di utilizzo e uno a pagamento che include supporto commerciale di RedHat Altri progetti Cloud Open Source … MOLTI altri ... Conclusioni Il software Open Source aiuta lo sviluppo di tecnologie Cloud tramite collaborazione Il Cloud aiuta il software Open Source rendendolo più facile da provare e usare Poiché il Cloud Computing promette economie di scala, esso richiede una partecipazione di massa per avere successo Il software Open Source guida la missione di ottenere l’ interoperabilità all’interno del Cloud tramite federazione, la quale a sua volta potrà velocizzare l’adozione estesa del Cloud Computing