RIVOLUZIONE CLOUD

RIVOLUZIONE CLOUD

Il “cloud” ha rappresentato una rivoluzione – tuttora in corso – nel mondo di Internet, sia per le persone che per le aziende. Perchè? Semplice: grazie al cloud, le persone e le aziende possono ora accedere a programmi e servizi tramite Internet che altrimenti richiederebbero ingenti risorse per funzionare. Questo è il cosiddetto “cloud computing”: l’offerta/fruizione di applicazioni e servizi tramite internet. Queste applicazioni sono installate in potenti servers ospitati in grandi data centers e sfruttano la potenza dei servers (e reti di servers) per operazioni che non sarebbero facilmente realizzabili se non a grandi spese. E’ il “cloud computing” a permettere alle persone ed alle aziende – anche alle aziende di piccolissime dimensioni – di accedere gratuitamente e bassissimi costi a programmi e servizi in passato accessibili soltanto a grandi aziende che avevano risorse per investire in un parco hardware e software e nel personale necessario. Un’azienda che vende prodotti potrebbe ad esempio aver bisogno di un programma di gestione delle vendite (come SalesForce) o di CRM (come Sage). Prima del cloud un’azienda avrebbe dovuto acquistare la costosa licenza per l’utilizzo del software, e poi mettere in piedi un team di esperti hardware e software per installare, configurare, testare, eseguire, proteggere, aggiornare il programma una volta acquistato. Ovviamente, piccole e medie aziende non avevano le risorse per poterlo fare o per farlo per tutti i programmi di cui avevano bisogno. Oggi invece, grazie al “cloud computing”, le aziende interessate a specifici servizi semplicemente affittano il servizio via cloud o pagano a consumo, sempre comunque accedendo tramite il cloud al servizio. Il programma che permette la fruizione del servizio ed i dati contenuti in esso sono accessibili via Internet all’azienda, ed eventualmente ai suoi utenti o clienti. I vantaggi del cloud per le aziende sono numerosi. Il fornitore del servizio cloud, chiamato “hosting service provider“, gestisce tutto ciò che riguarda hardware e software al posto dell’azienda. L’azienda accede al servizio e ai suoi dati via Internet, e si può così focalizzare soltanto sul proprio business, dimenticandosi di tutto il lato tecnico. Non si deve preoccupare più ad esempio di installare o aggiornare il programma. Inoltre, l’azienda può pagare solo le funzionalità necessarie: se non serve avere una specifica funzionalità, il costo del servizio è più basso. Gli aggiornamenti sono automatici, la scalabilità verso l’alto o verso il basso è semplice, e i dati sono duplicati in più data centers. Anche in caso di guasti tecnici o attacchi di hackers ai servers di un data center, l’hosting provider può recuperare e duplicare nuovamente i tuoi dati dai servers negli altri data centers. Ovviamente, questi vantaggi valgono anche per gli utenti privati. Quando ti affidi ad esempio ad un servizio cloud per archiviare i tuoi dati, non ti devi preoccupare della possibile perdita dei dati: sai che vengono duplicati più volte in più sedi geografiche diverse. E per molte delle tue attività quotidiane che svolgi tramite computer, ad oggi non sei obbligato a comprare un programma, ad installarlo, ad aggiornarlo, ad avere un computer potente per poterlo usare o un computer capiente per conservare tutti i dati che man mano accumuli nel tempo. E’ per questo che numerosissime attività oggi sono possibili per tutti, mentre in passato erano possibili solo a fronte di grandi spese e del possesso di computer potenti. E la tendenza è questa: sempre più il tuo computer si svuoterà di programmi e funzionerà invece solo come interfaccia per l’accesso a servizi cloud. E sempre più i tuoi dati, la tua musica, i tuoi video, i tuoi documenti saranno depositati in servers accessibili via cloud invece che nel computer di casa o in chiavette usb o in hard disk esterni. E non pensare che il cloud sia utile solo per dati di questo tipo. Ci sono infinite possibili utili applicazioni del cloud in situazioni di vita reali. Pensa invece ad esempio alla possibilità per un dottore, in caso di emergenza medica, di accedere alla tua cartella sanitaria via cloud per capire se sei allergico o meno a certi farmaci o effettuare una diagnosi migliore (sistemi nazionali di Electronic Health Records sono già disponibili in numerosi stati). Le grandi aziende di Internet sono state tra le prime a cavalcare la rivoluzione del cloud. Google si è lanciato nel cloud computing con numerosi servizi come Gmail e Google Docs. Anche lo sviluppo di Android è fortemente orientato al cloud, permettendoti di accedere alla posta elettronica, ai tuoi documenti direttamente dal dispositivo (smartphone o Tablet) su cui è installato. Google ha anche investito pesantemente in computers come Chromebook, che si appoggiano al cloud per quasi ogni possibile attività che tu voglia fare o di cui il computer ha bisogno per la manutenzione, l’aggiornamento e la sicurezza. Microsoft ha sviluppato la piattaforma Azure, puntando principalmente sui servizi per le piccole e medie imprese, e sta anche modificando la propria offerta software spingendo verso il cloud. L’ultima versione di Office 365 si appoggia al cloud per salvare i tuoi file direttamente nel cloud e renderli sempre disponibili dovunque, tramite connessione Internet. Anche Apple è stata tra i pionieri del cloud: non a caso iTunes, che sfrutta il cloud per salvare i tuoi file e gusti musicali, è la piattaforma leader nel mercato della musica digitale. Il cloud può essere usato per il backup dei tuoi dati, per l’archiviazione (il cosiddetto cloud storage), per la condivisione dei tuoi file con i tuoi contatti, per la collaborazione online su documenti, e per la gestione delle tue foto e dei tuoi file audio e video.

Pubblicato il 26 feb 2016

Potrebbero interessarti

La scelta della tecnologia nei progetti software

La scelta della tecnologia nei progetti software

Quando si inizia un nuovo progetto software la valutazione delle tecnologie da utilizzare, ed in particolare, la scelta del framework, è una fase fondamentale e particolarmente critica che richiede grande attenzione e uno studio preliminare approfondito. Al giorno d'oggi gli strumenti che supportano lo sviluppo software sono numerosi, con caratteristiche, vantaggi, svantaggi e costi differenti. La fase precedente a questa scelta, dovrebbe prevedere un'accurata raccolta di requisiti funzionali, non funzionali e relativi all'aspetto grafico che il prodotto finale dovrà avere. Una volta completata questa prima analisi, si procede con quella delle tecnologie disponibili. Trovare la tecnologia che supporti completamente ed esaustivamente lo sviluppo delle funzionalità richieste è impossibile, ma si può restringere il campo selezionando quella che facilita maggiormente il lavoro. Lo sviluppo delle funzionalità non è però l'unico fattore da considerare. Altri, altrettanto importanti, sono: - Il supporto da parte degli sviluppatori della tecnologia, ma anche quello di una community che attraverso forum e blog proponga soluzioni a problemi più o meno comuni che si possono presentare; - La stabilità degli aggiornamenti nel tempo: utilizzando componenti che non vengono aggiornati da molto tempo, si rischiano problemi di compatibilità che in futuro potrebbero costringere a dover rimuovere quel componente o addirittura a dover riprogettare tutto utilizzando tecnologie diverse; - La compatibilità tra le tecnologie e la facilità con cui interagiscono dovrà essere comprovata, se si dovesse aver bisogno di utilizzarne più di una; - La scelta tra linguaggi nativi e ibridi: si tratta di un problema molto comune quando si parla di sviluppo di App. Utilizzare linguaggi nativi, ovvero linguaggi scritti appositamente per un determinato sistema (ad esempio iOS o android), permette di sfruttare al massimo le potenzialità del dispositivo migliorando nettamente le prestazioni. Lo svantaggio che ne consegue è che la stessa App dovrà essere sviluppata più volte nei vari linguaggi. D’altro canto, l’utilizzo di linguaggi ibridi permette di sviluppare una singola App che funziona su vari sistemi, a discapito però delle prestazioni; - L’esperienza nelle tecnologie, fattore va valutato insieme al tempo a disposizione. Se il tempo per la realizzazione del prodotto finale è limitato, probabilmente è meglio optare per tecnologie che già si padroneggiamo in modo da poter entrare subito nel vivo dello sviluppo. In caso contrario si possono anche scegliere tecnologie che prevedano una prima fase di formazione. Per lo sviluppatore, quindi, la valutazione della giusta tecnologia da utilizzare è un passo fondamentale. Se questo aspetto viene affrontato con la giusta attenzione, porta indubbi vantaggi al progetto che si intende realizzare.

CMS headless: gestori di contenuto per le moderne esigenze

CMS headless: gestori di contenuto per le moderne esigenze

Lo sviluppo tecnologico ha portato a dover trasferire contenuti e dati attraverso piattaforme e canali di comunicazione differenti. Anche la gestione del flusso dei dati sul web si è evoluta. I CMS tradizionali non riescono a soddisfare le esigenze moderne per la loro struttura monolitica che prevede la gestione e la visualizzazione dei dati in un unico software. Per questo motivo sono nati i CMS headless, ovvero “senza testa”, poiché la parte di presentazione dei dati (Content Delivery Application) non è presente nel sistema che, è composta dalla sola parte di gestione dei contenuti (Content Management Application).  Il contenuto di questo tipo di CMS si può considerare puro e permette in una sola istanza di essere visualizzato su diverse piattaforme quali siti web, smartphone, tablet e device IoT. I servizi sono offerti mediante delle API di tipo REST basate sul protocollo HTTP. Le diverse operazioni di CRUD sui dati vengono effettuate chiamando il giusto URL che farà da endpoint e utilizzando uno specifico verbo HTTP quali GET, POST, PUT e DELETE. Focalizzandosi solo sulla parte di gestione dei contenuti, il CMS headless è un sistema più semplice di uno tradizionale riuscendo quindi ad offrire i suoi servizi mediante un numero più basso di operazioni. I contenuti possono essere offerti dividendo il carico di gestione e flusso dei dati utilizzando un CDN (Content Delivery Network), il quale permette di ridurre gli attacchi di tipo DDOS. La sua flessibilità permette di sviluppare dei frontend con qualsiasi tecnologia e di facilitarne un loro possibile aggiornamento, senza aver bisogno di dover aggiornare anche il backend. In conclusione possiamo affermare che la tendenza è sempre più quella di sviluppare sistemi di questo tipo o talvolta di tipo ibrido. Non è un caso che alcuni tra i CMS di maggior rilievo come WordPress e Drupal si stiano spostando anch’essi verso questa direzione.

Magento 2 - usare Transaction per salvare oggetti

Magento 2 - usare Transaction per salvare oggetti

Magento 2 è la nuova versione della piattaforma E-commerce che offre nuove e interessanti funzionalità. Tra queste Transaction per salvare oggetti. Una funzionalità poco conosciuta, che risulta però molto utile se si desidera garantire uno stato coerente nel database. Con una singola transazione è possibile combinare molti oggetti da salvare . In tal caso sono possibili due esiti: Transazione riuscita garantisce che tutte le operazioni SQL all'interno della transazione siano eseguite senza problemi. Quindi i dati sono validi e vengono salvati in db. Errore di transazione qualcosa è accaduto durante l'esecuzione della transazione. I sistemi di transazione forniscono una funzione chiamata rollback in cui i dati vengono ripristinati all’istante prima dell’inizio della transazione. Magento 2 in alcuni casi  non sembra garantire un comportamento corretto nelle operazioni verso il db. Un esempio è il mal funzionamento con "rollback della transazione asimmetrica", ossia il salvataggio di default di tutte le informazione riguardati più tabelle. Tale malfunzionamento può essere risolto usando alternativamente:TransactionFactory o Custom SQL statement transaction TransactionFactory Il seguente codice mostra come utilizzare TransactionFactory in Magento 2: class MyClass { protected $saveTransaction; public function __construct \Magento\Framework\DB\TransactionFactory $transactionFactory ){ $this->saveTransaction = $transactionFactory->create(); } public function saveManyObjects() { ... $this->saveTransaction->addObject($order); $this->saveTransaction->addObject($customer); $this->saveTransaction->addObject($customObject); $this->saveTransaction->save(); } } Se si esegue il metodo saveManyObjects () di questa classe, tutti gli oggetti specificati vengono salvati contemporaneamente. Per una transazione è necessario iniettare la classe \ Magento \ Framework \ DB \ TransactionFactory, che offre tutte le funzionalità necessarie. È possibile aggiungere oggetti da salvare con il metodo addObject (). Si possono aggiungere oggetti quali: ordini, clienti, prodotti o persino oggetti personalizzati. Tramite il metodo save() viene eseguito automaticamente un commit o una rollback in base all’esito dell’operazione garantendo uno stato coerente dei dati.  Custom SQL statement transactions Se si vuole usare istruzioni SQL custom utilizzando le transazioni è possibile riferirsi al seguente codice di esempio: $connection = $this->getConnection(); $connection->beginTransaction(); try { ... $connection->commit(); } catch (\Exception $e) { $connection->rollBack(); throw $e; } È possibile chiamare il metodo beginTransaction () per inizializzare una transazione sull'oggetto “connection” dell'utente. In seguito si possono creare le istruzioni di inserimento o aggiornamento. Con commit () vengono rese persistenti le operazioni sul database. Se qualcosa non è andato a buon fine, il costrutto try catch chiamerà una transaction rollBack per ripristinare uno stato coerente del database e genererà un errore. In conclusione Magento 2 offre tutto il necessario per utilizzare le transazioni. Una transazione è uno strumento utile per rendere sicure le modifiche al database, impedendo di corrompere un database se qualcosa non ha avuto esito positivo.