“NATIK”: IL PROGETTO DI RICERCA NATO PER DETERMINARE LA FATTIBILITÀ DI DATA CENTER SOTTOMARINI.

“NATIK”: IL PROGETTO DI RICERCA NATO PER DETERMINARE LA FATTIBILITÀ DI DATA CENTER SOTTOMARINI.

Redmond, casa Microsoft, siamo nei primi mesi del 2013. Ad alcuni dipendenti del settore Ricerca & Sviluppo del colosso dei servers, viene in mente l’idea di realizzare dei data center sottomarini. Potrebbe sembrare una pazzia o uno scherzo…invece nel 2014 parte lo sviluppo del primo prototipo di “Natik” e ad Agosto del 2015 il primo test. I data center del futuro potrebbero vivere sott’acqua non solo perché è l’habitat ideale per questo tipo di tecnologia ma anche perché ci sarebbe il vantaggio di rendere le infrastrutture più vicine in termine geografici agli utilizzatori finali. Oggi siamo abituati ad utilizzare svariati tipi di componenti elettronici e sappiamo bene che quando sono sotto stress e li mettiamo a lavorare intensamente, smartphones, notebook e dispositivi vari iniziano ad aumentare la loro temperatura. Ora pensate ai data center in cui ci sono migliaia di dispositivi che vanno a pieno regime, è ovvio che questi hanno bisogno di un sistema di raffreddamento che abbassi la temperatura ambientale ed è proprio questo il problema principale di un data center. Posizionando i data center in fondo al mare si può dire addio all’aria condizionata e con delle turbine che sfruttano i movimenti dell’acqua si può realizzare il raffreddamento con energia pulita, rinnovabile a costo zero! Il colosso di Redmond oggi gestisce un parco data center che va oltre le cento unità e ha spende in manutenzione ogni anno circa 15 miliardi di dollari per un sistema globale che offre oltre tantissimi servizi online in tutto il mondo. In questo modo si può abbassare il primario costo di un data center. Natik è una capsula d’acciaio di circa due metri e mezzo di diametro che è stata immersa a largo della costa Californiana, funzionando per oltre 100 giorni, sorprendendo gli stessi ingegneri che l’avevano progettata.

progetto-natik

L’utilizzo di data center subacquei avrebbe anche benefici logistici, oltre che quelli relativi alla temperatura. La maggior parte della popolazione, infatti, vive generalmente lontana dai server, che sono localizzati in zone poco popolate e quindi a bassa densità. Posizionare i data center nell’oceano e quindi più vicino ai centri abitati, aumenterebbe la velocità di trasferimento dei dati e anche della navigazione in rete degli utenti (oltre che dalla propria connessione dipende anche dal tempo di risposta del server). Anche le tempistiche sulla realizzazione e la posa in opera di un nuovo impianto sarebbero di gran lunga più vantaggiosi, infatti per costruire una capsula marina, servirebbero circa 90 giorni, contro i due anni necessari per la realizzazione di un data center “classico”. Non mancano all'orizzonte molti ostacoli che i ricercatori di Microsoft tenteranno di superare. Uno tra tutti la difficoltà di manutenzione da parte di operatori umani: per questo motivo le capsule dovrebbero essere in grado di rimanere al 100% operative senza manutenzione diretta per almeno 5 anni. Non mancano interrogativi sull'impatto ambientale che un'operazione del genere potrebbe comportare, soprattutto riguardo il riscaldamento dell'ambiente marino. Secondo i primi test condotti da Microsoft, le capsule genererebbero solo un "quantitativo estremamente piccolo" di calore, poiché l'energia che utilizzano è quella delle correnti marine e non ci sarebbe dispersione di calore, a parte quella legata alla conversione dell'energia. I ricercatori dell'azienda hanno anche registrato con sensori acustici che il ticchettio delle testine dei dischi e il fruscio delle ventole è sovrastato dal rumore di un singolo gamberetto che nuota vicino la capsula. natik-team

Di seguito il link ufficiale del progetto per chi volesse approfondire e curiosare sull’argomento:

http://natick.research.microsoft.com/

Pubblicato il 29 apr 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.