cloud computing e architetture software: quali … · ... con un approccio di condivisione di tipo...
TRANSCRIPT
CLOUD COMPUTING E ARCHITETTURE SOFTWARE: QUALI IMPATTI SULLO SVILUPPO DELLE APPLICAZIONI?
Emanuele Barrano – [email protected]
Filippo Bosi – [email protected]
Marco Cimatti – [email protected]
Vincenzo Laudizio – [email protected]
Seminari ICT corso Reti di Calcolatori – Università di Bologna - 3 Maggio 2013
Agenda
› Cloud Overview
› Approcci del Cloud Computing
› Conseguenze dell’utilizzo di Piattaforme Cloud (PaaS) sullo sviluppo di applicazioni
› Demo – Sessione pratica
› Conclusioni
2 Cloud Computing e Architetture Software
Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
Cloud Computing: Concetti e Parole Chiave
› disponibilità di risorse IT “on demand”
› affidabilitá delle risorse su richiesta
› virtualizzazione di componenti IT
› allocazione “veloce” di risorse
› architetture orientate all’alta scalabilità
3
Concetti Parole Chiave
› On demand
› Reliability
› Virtualization
› Provisioning
› Scalability
Cloud Computing e Architetture Software Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
Cosa è il Cloud Computing?
› Dal punto di vista dello sviluppo software, il Cloud Computing è un’infrastruttura di sviluppo e di esecuzione che offre
› un’interfaccia utente che nasconde le complessità di gestione a basso
livello dell’infrastruttura
› riduzione dei costi di amministrazione e dei relativi skill necessari
› un insieme di servizi orientati all’amministrazione dell’infrastruttura stessa
› alta scalabilità, preconfigurata
4 Cloud Computing e Architetture Software
Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
Cloud Computing Continuum
› Il Cloud può essere visto come un continuum di servizi su differenti livelli, dall’infrastruttura al software
5
› Infrastructure: fornitura di hardware su cui generalmente si ha controllo sul Sistema Operativo
› Platform: ambienti di più alto livello per i quali gli sviluppatori realizzano applicazioni custom
› Software: software specializzato reso disponibile attraverso internet
Cloud Computing e Architetture Software Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
Un esempio di IaaS – Amazon EC2 (I)
› Specifiche tecniche › AMI (Amazon Machine Image)
› Immagini di macchine virtuali preconfigurate e ready-to-go › Amazon S3 (Simple Storage Service)
› Infrastruttura di storage proprietaria di Amazon che funge da repository per lo storage delle AMIs
› Amazon EC2 (Elastic Cloud Computing) › Applicazione Web che permette l’amministrazione delle macchine
virtuali offerte all’utente finale
› Schema “Pay per Use” basato su › SLA › Traffico dati › Consumo di CPU › Spazio di Storage utilizzato
6 Cloud Computing e Architetture Software
Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
IaaS – Amazon EC2 (II)
7
› Passi necessari per l’utilizzo › Un account Amazon
EC2 › Connessione internet
e un browser › Startup dell’AMI › Amministrazione da
interfaccia utente amazon
Cloud Computing e Architetture Software Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
IaaS – Amazon EC2 (III)
› Caratteristiche di gestione › Capacità di auto-configurazione dell’infrastruttura hardware in termini
di › CPU › RAM › Storage › Network firewall
› Shell remota SSH › Disponibilità di template di immagini di macchina (Amazon AMI) con
un approccio di condivisione di tipo “Community” › Disponibilità – nell’ambiente – di una serie di macchine preconfigurate
da Amazon stessa › Monitoraggio delle risorse in real-time
8 Cloud Computing e Architetture Software
Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
PaaS – Google App Engine
› http://code.google.com/appengine › Google App Engine permette di costruire e far girare
applicazioni web, sullo stesso sistema che Google utilizza per le proprie applicazioni
› Sviluppo rapido › Messa in produzione rapida › Amministrazione semplificata › Non ci si deve preoccupare dell’hardware, dell’installazione di
patch nel sistema operativo o nel middleware, né dei backup › Python, Java, Go (http://golang.org) › Data Store di tipo NoSQL (“BigTable”) › Scalabilità automatica delle risorse › Orientato all’esecuzione di algoritmi specializzati, quali ad
esempio il Map-Reduce
9 Cloud Computing e Architetture Software
Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
PaaS – CloudBees
› http://www.cloudbees.com
› La piattaforma CloudBees offre la possibilità di effettuare build, test ed esecuzione di applicativi Java EE
› Offre › Una piattaforma di sviluppo
› Maven repository
› sistema di versionamento dei sorgenti: SVN, Git
› sistema di Continuous Integration preconfigurato
› Una piattaforma di esecuzione di applicazioni J2EE e Spring
› load balancing
› scalabilità
› alta affidabilità
10
Cloud Computing e Architetture Software Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
PaaS – RedHat OpenShift
› http://openshift.redhat.com › La piattaforma OpenShift offre supporto di sviluppo ed esecuzione multi-
linguaggio e multi-framework, ed è un PaaS basato principalmente sull’offerta di piattaforme software di RedHat. › Costruito su RHEL (RedHat Enterprise Linux) › Selezione di linguaggi, framework e middleware
› Approccio “cartdrige”, che permette allo sviluppatore di selezionare i componenti che interessano
› Java, Ruby, PHP, Python, Perl, node.js › MongoDB, JBoss, Jenkins… › Ruby on Rails, Drupal, Wordpress, MySQL
› Questa piattaforma è un esempio di come nell’arco di 6 mesi un’offerta PaaS possa cambiare radicalmente › Es. fino a diversi mesi fa c’erano 3 offerte commerciali ed era disponibile
SOLAMENTE un’interfaccia web › Oggi interfaccia a linea di comando, disponibilità di una versione open
source e nessuna offerta specializzata, il tutto fuori dal controllo degli sviluppatori
11 Cloud Computing e Architetture Software
Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
Impatti del Cloud Computing sullo sviluppo di Applicazioni
› Gli impatti sono diversi, a seconda del livello di servizi Cloud che si utilizza › Sviluppo su IaaS
› + Il programmatore ha a disposizione un’infrastruttura virtualizzata pronta all’uso.
› + Immagini preconfigurate funzionanti su hardware virtualizzato › + Possibilitá di ottenere configurazioni avanzate attraverso una semplice
interfaccia utente › - Necessità di gestire i componenti infrastrutturali (ad es. aggiornamenti del
Sistema Operativo, applicazione di patch di sicurezza, ecc.) e del middleware (ad es. il web server, gli application server, ecc.)
› Sviluppo su PaaS › + Il programmatore può sfruttare tutti i vantaggi di una piattaforma che
nasconde ogni dettagli dell’infrastruttura virtuale › - Vi sono maggiori limitazioni imposte dalla definizione stessa della
piattaforma da parte del provider (sia inizialmente, sia in corso d’opera, ad es. evoluzioni della piattaforma)
› Sviluppo su SaaS › Normalmente sono applicazioni giá pronte all’uso: non c’é necessitá di
sviluppo (questo significa che gli sviluppatori non avranno alcun impatto )
12 Cloud Computing e Architetture Software
Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
Sviluppo su IaaS (I)
13
› Può essere definita come “virtualizzazione avanzata” › Controllo sul software e sull’infrastruttura hardware (virtuale) › Possibilità completa di autoconfigurazione dello stack
software sull’infrastruttura cloud › + Disponibilità di template precostruiti, possibilità di effettuare tuning
e customizzare i template (ad es. parto da uno stack standard LAMP, o uno standard stack J2EE e poi opero modifiche in piena libertà)
› - Vi è necessità di mantenere nel tempo la configurazione dell’infrastruttura (ad es. patch di sicurezza, aggiornamenti del sistema operativo, aggiornamenti del middleware)
› Sostanzialmente, al provider IaaS è affidata la “sola” gestione dell’hardware fisico e dell’infrastruttura di virtualizzazione.
Cloud Computing e Architetture Software Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
Sviluppo su IaaS (II)
› - L’indipendenza dall’hardware implica alcuni costi › ad es. performance delle virtual machine rispetto all’utilizzo diretto
dell’hardware fisico (20% di overhead, approssimativamente)
› + Di contro, la virtualizzazione permette di ottenere una scalabilità molto flessibile. Si può fare upgrade della potenza di computazione, a seconda delle esigenze dell’applicazione.
› - Il programmatore deve avere, tra le proprie conoscenze, la capacità di gestire ad un certo livello il sistema operativo, il middleware e in generale l’ambiente di esecuzione dei propri programmi
14 Cloud Computing e Architetture Software
Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
Sviluppo su PaaS (I)
› E’ un servizio Cloud che offre › Piattaforme software general-purpose complete
› J2EE › Microsoft .Net › LAMP Stack
› L’infrastruttura (Virtuale?) è completamente nascosta allo sviluppatore › …eccetto la possibilità di monitorare le performance e
l’addebito dei costi (basato solitamente sull’utilizzo di risorse infrastrutturali)
15 Cloud Computing e Architetture Software
Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
Sviluppo su PaaS (II)
› Il programmatore non si deve più (pre)occupare › dell’infrastruttura che supporta gli ambienti di sviluppo e di
esecuzione › della configurazione di
› Hardware › software (lo stack software viene aggiornato automaticamente dal
fornitore della piattaforma)
› Il programmatore si può concentrare sulle sole attività di sviluppo sulla piattaforma offerta dal provider
› “Scompaiono” concetti di base dei sistemi software › Sistema operativo › File System › Application Server › …
16 Cloud Computing e Architetture Software
Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
Cloud in azione…
17
DEMO › Creazione ed utilizzo di un’infrastruttura IaaS su Amazon EC2 › Creazione ed esecuzione di una web application su OpenShift (PaaS) › Creazione ed esecuzione di una web application su CloudBees
…collaborativamente
Cloud Computing e Architetture Software Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
Conclusioni
› Evoluzione dell’offerta di servizi Cloud › IaaS
› Da un ambiente standard di sviluppo e deploy di applicazioni, il programmatore trae beneficio di virtualizzazione avanzata/meccanismi di templating/interfaccia di management
› PaaS › Il programmatore trae beneficio da una piattaforma completamente
virtualizzata
› Gli IaaS sono per i system manager, ciò che i PaaS sono per i programmatori/architetti
› I PaaS sono la “vera” rivoluzione per gli sviluppatori (gli IaaS sono semplicemente un passo evolutivo della virtualizzazione) › Un programmatore non dovrà più occuparsi dei dettagli infrastrutturali per
il funzionamento della piattaforma (e, di conseguenza, della propria applicazione)
› Un programmatore si dovrà preoccupare solo di un’attività: lo sviluppo applicativo
18 Cloud Computing e Architetture Software
Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
19
DOMANDE?
Cloud Computing e Architetture Software Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
Riferimenti
› Lista di Cloud PaaS provider per java › http://gevaperry.typepad.com/main/2011/10/java-paas.html
› Heroku (piattaforma PaaS di SalesForce) › http://www.heroku.com/ (Salesforce)
› Wikipedia
› http://en.wikipedia.org/wiki/Platform_as_a_service
20 Cloud Computing e Architetture Software
Seminari di Reti di Calcolatori – Universitá di Bologna, 3 Maggio 2013
More than 20 years of experience on Enterprise IT
Consulting and Skill Transfer on Architecture, Integration and Process
OMG Influence Member, JSR 312 Expert Group, CSI, WWISA, OpenESB Key Partner, NetBeans Strategic Partner
http://www.imolinfo.it/index_en.php
Semantic Web company, now!
Applied research, training, projects
http://www.sensiblelogic.it
The online italian community dedicated to Java 10 years of articles, publications, books, events, training From programmers to architect More than 1.000.000 read pages per month http://www.mokabyte.it
21