Thinking Serverless per aumentare le visite e fidelizzare i lettori di giornali e magazine on line

serverless computing

In un articolo precedente abbiamo descritto quali sono i benefici per il settore publishing derivanti dall’adozione delle tecnologie cloud.
Attraverso l’esempio dei case study abbiamo dimostrato come i servizi cloud siano un asset importante per i giornali on line, driver strategico per migliorare l’esperienza utente e aumentare le revenue.

Nella prima parte di  questo articolo  introdurremo il concetto di serverless computing, dandone un quadro di riferimento generale.
Ci soffermeremo poi sui principali servizi che compongono la piattaforma Serverless Amazon Web Services, il primo cloud provider sul mercato.

Nella seconda parte dell’articolo illustreremo come l’adozione di un approccio serverless permette alle redazioni di concentrarsi su contenuti di qualità e sull’offerta di nuovi servizi ai propri lettori.

Descriveremo infine le storie di successo  di clienti del settore publishing che hanno ricavato benefici tangibili implementando architetture serverless sfruttando i servizi di AWS.

Che cosa è il serverless computing?

Serverless computing è un paradigma di elaborazione cloud che permette la creazione e l’esecuzione di applicazioni e servizi delegando la gestione dell’infrastruttura (server e servizi di backend) alla piattaforma del cloud provider.

Secondo la Cloud Native Computing Foundation (CNCF) “Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.”.

È un approccio nuovo caratterizzato da un alto livello di astrazione nell’utilizzo delle risorse e dei servizi messi a disposizione dai cloud provider.

Questo modello di sviluppo permette di concentrarsi sull’obiettivo principale di chi realizza applicazioni: scrivere la logica di business facendola aderire ai processi, ottimizzando e generando innovazione dei prodotti e dei servizi.

Nelle architetture serverless è possibile eseguire un’applicazione o erogare un servizio senza doversi più preoccupare dell’infrastruttura e delle operazioni da compiere su di essa (provisioning, scalabilità, patching).

Distinguiamo due casi:

  • applicazioni che si appoggiano a servizi di backend cloud esterni per la logica di business, quali database,  storage, autenticazione e gestione degli utenti, invio di notifiche push, integrazione con i social, upload e la condivisione di files, immagini e video.
    In stile “aaS” il modello cloud di riferimento è il BaaS (backend as a service) noto anche come “mobile backend as a service” (MBaaS).
  • applicazioni in cui la logica di business è scritta dallo sviluppatore all’interno di una funzione. La funzione contiene le parti di codice necessaria che deve essere eseguito in risposta a determinati eventi o trigger. Questo è un approccio altamente funzionale: la logica di business si attiva solo quando il processo e l’applicazione lo richiedono. Si tratta di un approccio asincrono, basato su eventi, in cui il codice viene eseguito (con i costi che ne conseguono) solo quando necessario.
    In stile “aaS” il modello cloud di riferimento è il FaaS (Function-as-a-service).

Architetture serverless e microservizi

In genere, le applicazioni serverless sono costruite usando un’architettura a microservizi in cui un’applicazione viene separata in componenti indipendenti, suddivisa in parti (servizi) più piccoli, ciascuno dei quali viene eseguito da un proprio processo.

Ogni singolo servizio è autonomo rispetto agli altri: può essere rilasciato in modo indipendente dagli altri, senza che tale attività abbia effetti sul resto del sistema.

Evitando progetti e architetture monolitiche e disponendo di processi di distribuzione del software fluidi e veloci, i team possono aggiungere o modificare funzionalità di un prodotto o applicazione in maniera incrementale.
Questo permette ad un’organizzazione di rispondere prontamente alle necessità di un mercato in continuo cambiamento e alle aspettative di utenti sempre più esigenti.

La figura seguente illustra il passaggio da un’applicazione monolitica ad un’applicazione a microservizi dedicata alla gestione di un blog.

serverless monolith microservices

I microservizi implementano ciascuno una singola funzionalità e comunicano tra di loro attraverso API snelle, che definiscono in che modo un componente software interagisce con l’esterno, quindi con altri software. Le API, Application Programming Interface, sono i “connettori” di un servizio verso l’esterno e permettono a chi lo usa di astrarsi dal suo funzionamento.

 

Cinque ragioni per adottare l’approccio serverless

Grazie alla forte riduzione dei costi delle infrastrutture, a team più focalizzati e ad un time to market più rapido, le aziende che hanno adottato gli approcci serverless stanno acquisendo un vantaggio chiave sui concorrenti.

La figura seguente rappresenta cinque buone ragioni per usare serverless:

 

serverless vantaggi

Focus sulla logica dell’applicazione
Gli sviluppatori possono concentrarsi sul prodotto da realizzare e sulla logica senza preoccuparsi di prevedere server e middleware, gestire il traffico di rete o altri problemi legati al funzionamento e alla configurazione dell’infrastruttura.

Riduzione del time to market
L’eliminazione degli oneri di gestione dell’infrastruttura permette agli sviluppatori di concentrarsi sulla qualità del prodotto e di distribuire le applicazioni più velocemente.
L’utilizzo, all’interno di applicazioni serverless, di prodotti e funzioni come mattoncini, permette integrare un nuovo servizio, testarlo e verificarne l’impatto sul mercato in tempi molto più rapidi che nelle tradizionali attività di ricerca e prototipazione.

Pay per use e fatturazione inferiore al secondo
Non sono previsti costi per la capacità inutilizzata. La fatturazione, con una granularità a livello di millisecondi, avviene in base alla richiesta e dipende dalla durata necessaria per l’esecuzione del codice. Dato che le risorse IT vengono allocate dinamicamente, non è più necessario investire in capacità in eccesso preventivamente. I server inattivi e sottoutilizzati sono fonte di sprechi: è eliminato il concetto di risorsa inattiva.

Scalabilità automatica event-driven
Le risorse vengono dimensionate in modo automatico per far fronte a ogni tipo di workload, e ricalibrate in modo automatico in risposta agli eventi in in tempo reale.
Oltre alla scalabilità, sono integrate anche la disponibilità e la tolleranza ai guasti senza bisogno alcuna configurazione o gestione.

Riduzione dei costi di gestione dell’infrastruttura
L’infrastruttura server è resa disponibile e gestita dal cloud provider: i team IT sono sollevati dalla necessità di provvedere, distribuire, aggiornare, monitorare o gestire i server.

 

Esempi di applicazioni serverless

Da quanto detto sino a qui serverless è l’architettura nativa del cloud che, trasferendo i compiti e le responsabilità operative al fornitore di servizi cloud, porta agilità e innovazione alle aziende che adottano questo approccio.
Serverless è adatto  a quasi ogni tipo di applicazione o servizio di back-end.
È particolarmente adatto alle applicazioni event-driven  in cui è un modello il flusso di esecuzione del programma è determinato non a priori ma in base ad eventi esterni.(Event-Driven Programming: programmazione guidata dagli eventi).
Un esempio è quello di un’app di messaggistica che  invia notifiche all’utente finale tramite messaggi push su dispositivi mobili, SMS e-mail.

Gli approcci serverless sono ideali per applicazioni in cui il carico può variare dinamicamente perchè significa non dover sostenere costi di elaborazione quando non c’è traffico di utenti finali, offrendo al tempo stesso un dimensionamento istantaneo per soddisfare la domanda elevata. Un esempio è la vendita flash su un sito di e-commerce o una segnalazione sui social media che scatena un’ondata improvvisa di traffico.

La figura seguente illustra alcuni degli ambiti in cui le applicazioni serverless sono più diffuse.

 

serverless diffusione

Nel paragrafo dedicato ai casi d’uso nel settore editoriale/media saranno descritti alcuni esempi di implementazione di questo tipo di architetture con riferimento ai clienti che le hanno adottate.

L’approccio serverless è sempre appropriato?

Da quanto detto sino ad ora potrebbe sembrare che le architetture serverless siano una sorta di manna dal cielo.
In realtà, come ogni approccio che voglia essere strategico, va calato nel contesto e nella logica di business dell’applicazione da costruire.

Vi sono dei casi in cui quella serverless non è la scelta migliore:

  • Quando è richiesto un controllo estremamente preciso dell’ambiente, ad esempio si accede a operazioni di networking di basso livello, per consentire una corretta esecuzione del codice.
  • Serverless è un modello di esecuzione adatto per servizi con input e output ben definiti: per questo è altamente scalabile e permette di ottimizzare e assegnare facilmente priorità a compiti specifici.
    È adatto per l’elaborazione in batch, per le applicazioni basate su una catena di elaborazione dati prima di innescare un’azione.
    Serverless è quindi poco adatto all’esecuzione prolungata di processi: Più in generale, le applicazioni con traffico costante non rientrano nel campo di applicazione.

In qualità di Partner specializzato nello sviluppo, migrazione e gestione di applicazioni cloud valutiamo in base al contesto l’opportunità di adottare l’approccio serverless.

La piattaforma Serverless di AWS

Una piattaforma serverless è costituita dalla serie di servizi che comprendono sia l’app serverless, come i componenti di elaborazione e di storage, che i tool richiesti per scrivere, creare, distribuire e diagnosticare le app stesse. La piattaforma deve inoltre poter scalare tutti gli elementi di un’applicazione e fornire un’affidabilità completa.

ideato ha scelto la piattaforma di AWS per la realizzazione di applicazioni serverless.

Amazon Web Services ha aperto il mercato del cloud serverless con l’introduzione di Lambda alla fine del 2014.
Da allora ha notevolmente esteso la sua offerta serverless ad un gran numero di servizi arrivando a offrire infrastrutture serverless al 100%.

La slide riporta nella figura seguente è tratta dall’intervento di Danilo Poccia, Senior Technical Evangelist di AWS, al recente AWS Transformation Day, tenutosi a Milano il 7 novembre, in cui ideato era presente in qualità di Partner AWS certificato.

serverless aws

Abbiamo scelto questa slide perchè raccoglie tutti i componenti e i servizi della piattaforma: i “building blocks” che permettono di costruire applicazioni serverless con tutti i benefici che ne derivano.

Nel paragrafo seguente prenderemo in esame alcuni dei servizi raccolti in questa slide portando esempi di casi reali in cui sono stati implementati.

 

Casi d’uso per il Publishing

Seattle Times: elaborazione di file in tempo reale

The Seattle Times è un quotidiano a gestione familiare fondato nel 1896 e pubblicato nell’area nordoccidentale degli Stati Uniti.
The Seattle Times ha vinto 10 premi Pulitzer, il riconoscimento più importante in ambito giornalistico, e due prestigiosi Online Journalism Award per l’eccellenza del giornalismo digitale.
Seattletimes.com attira circa 7 milioni di visitatori unici al mese, ed è quindi il network digitale locale più diffuso della sua area.

 

Seattle Times usa AWS Lambda per ridimensionare le immagini in modo che vengano visualizzate correttamente su più dispositivi: computer desktop, tablet e smartphone.  I dati vengono elaborati immediatamente dopo il loro caricamento.

Lambda è un servizio di elaborazione serverless che esegue il tuo codice, in risposta a determinati eventi gestendo in autonomia le risorse necessarie per l’elaborazione. È possibile utilizzare AWS Lambda per estendere altri servizi AWS oppure creare veri e propri servizi di back-end in grado di sfruttare la scalabilità, le prestazioni e la sicurezza di AWS.

Con AWS Lambda è possibile creare miniature di immagini, transcodificare filmati, indicizzare file, elaborare log, convalidare contenuti e aggregare e filtrare dati in tempo reale.

Le immagini correlate agli articoli vengono ridimensionate in base all’ambiente di visualizzazione, per raggiungere più rapidamente tutti i lettori.

“AWS Lambda consente di ridimensionare le immagini in modo estremamente rapido”, ha dichiarato Rob Grutko, Director della tecnologia del The Seattle Times. “In precedenza, quando occorreva ridimensionare un’immagine in 10 formati diversi, doveva essere fatto in sequenza. Con AWS Lambda, vengono create 10 immagini contemporaneamente, quindi l’operazione è molto più rapida e non è necessario effettuare alcuna manutenzione sul server”.

La figura seguente illustra come lavora AWS Lambda.

Per la lettura completa del case si rimanda al link del sito AWS.

Hearst Corporation: serverless real-time analytics platform

Un editore di contenuti multimediali può trasmettere in streaming miliardi di record di clickstream dalle sue proprietà on line, aggregare i dati e aggiungervi informazioni demografiche sugli utenti.

Può inoltre ottimizzare il posizionamento dei contenuti sul proprio sito, in modo da offrire contenuti più rilevanti e una migliore esperienza ai propri utenti.

Hearst Corporation è un gruppo statunitense che opera nel settore editoriale, della stampa quotidiana e periodica, della produzione radiofonica e televisiva e dei servizi di digital publishing.

Grazie ad un’architettura serverless basata su Amazon Kinesis e Spark in Amazon EMR ha creato una soluzione di analisi di clickstream per trasmettere ed elaborare 30 terabyte di dati al giorno provenienti dagli oltre 300 siti web di Hearst in tutto il mondo.
Amazon Kinesis consente di elaborare e analizzare i dati in real time.

L’utilizzo di architetture serverless ha permesso a Hearst di monitorare in tempo reale le modalità con le quali gli utenti navigano, i loro processi d’acquisto e la reazione ai messaggi pubblicitari. Ha migliorato l’esperienza dei lettori proprio grazie all’analisi dei flussi di clickstream in tempo reale.

Amazon Kinesis è una piattaforma per lo streaming di dati in AWS che offre servizi avanzati per semplificare il caricamento,l’analisi e l’elaborazione dei flussi di dati.

La figura seguente illustra come lavora AWS Kinesis.

serverless aws kinesis

Per la lettura completa del case si rimanda al link del sito AWS.

 

Bustle: Back-end per dispositivi mobili

Bustle.com è un sito Web di notizie, intrattenimento, stile di vita e moda dedicato ad un pubblico femminile.
Il passaggio a un’architettura serverless basata su AWS Lambda e Amazon API Gateway gli ha fruttato un risparmio sui costi di circa l’84%.

Amazon API Gateway è un servizio completamente gestito che semplifica agli sviluppatori la creazione, la pubblicazione, la manutenzione, il monitoraggio e la protezione delle API su qualsiasi scala. Amazon API Gateway gestisce tutte le attività di accettazione ed elaborazione relative a centinaia di migliaia di chiamate API simultanee, inclusi gestione del traffico, controllo di accessi e autorizzazioni, monitoraggio e gestione delle versioni delle API.

Gli sviluppatori di Bustle hanno infatti acquisito maggiore agilità e hanno potuto concentrarsi sulla realizzazione di nuove funzionalità del prodotto invece di occuparsi della gestione dell’infrastruttura e della scalabilità.

Ora il team di Bustle è più efficiente e impiega la metà delle persone normalmente richieste per realizzare e gestire siti della scala di Bustle.

Per la lettura completa del case si rimanda al link del sito AWS.

 

“Alexa, quali sono le notizie di oggi?”

A fine ottobre 2018 è stata presentata in Italia Alexa,  l’assistente virtuale di Amazon basato sull’intelligenza artificiale e i comandi vocali.

Preinstallato sui dispositivi Echo, Alexa è programmato per rispondere ai comandi vocali, riprodurre musica, controllare luci ed elettrodomestici, ma anche aggiornare l’utente con notizie, risultati sportivi, meteo e notifiche su tutto ciò che è possibile connettere.

Alexa offre quindi comandi aggiuntivi (o Skills) in modo che i suoi utenti possano personalizzare la loro esperienza.
Infatti, aggiungendo determinate Skills, gli utenti saranno in grado di fare cose con un semplice comando vocale in base ai propri interessi.

 

Per esempio, Alexa può leggere le notizie e fornire aggiornamenti personalizzati in base alle preferenze. È possibile scegliere il quotidiano o il notiziario preferito, da Repubblica, IlSole24Ore al e TGCOM24, per ascoltare le notizie.
Il Flash Briefing di Repubblica, per esempio, offre un aggiornamento orario sulle ultime notizie di politica, cronaca, economia e sport.

Ancora è possibile conoscere i risultati della squadra di calcio del cuore. Basta dire “Alexa, qual è il risultato della partita dell’Inter?”; o le previsioni del tempo.

La figura seguente illustra il funzionamento di Alexa.

serverless alexa

Il modo più semplice per gli sviluppatori di Alexa Skill di connettere la propria Skill al cloud è utilizzare AWS Lambda

La figura seguente illustra l’interazione tra AWS Lambda e lo sviluppo di Skill Alexa.

 

serverless alexa

Un nostro case: Monrif

Con il continuo incremento di dispositivi che accedono ad Internet, riuscire a garantire un’esperienza utente ottimale richiede di studiare nuove soluzioni rispetto a quelle del passato.

Dispositivi con dimensioni di schermo e risoluzione sempre più svariate introducono una complessità crescente e un possibile aumento dei costi di sviluppo di deploy e di manutenzione.

L’utilizzo di S3 come storage ad oggetti per le risorse statiche ha aperto un tema legato all’applicazione delle intestazioni di cache nelle immagini.

L’introduzione di queste intestazioni incoraggeranno il caching del browser, che ridurrà i costi della larghezza di banda e velocizzerà i tempi di caricamento del sito.

La configurazione di queste intestazioni su S3 è complicata perché ad oggi non esiste un modo nativo per applicare queste intestazioni ad un gran numero di oggetti.

Se anche si provasse ad utilizzare la CLI di AWS, questo processo può essere lungo e noioso.

Per il cliente Monrif, nel progetto Localmente, abbiamo utilizzato le notifiche degli eventi S3 e una funzione Lambda.

Quando viene creato un nuovo oggetto in un bucket, viene scatenata la funzione che ci permette di elaborare le immagini e applicare un’intestazione di cache corretta.

Per semplificare lo sviluppo di queste funzioni abbiamo utilizzato Serverless Framework, che ci ha aiutati nell’automazione e nella gestione del codice e dell’infrastruttura rilasciata.

I prossimi passi prevedono l’elaborazione e il ridimensionare delle immagini on the fly.

Questo approccio ha diversi aspetti positivi:

  • Maggiore agilità, il dimensionamento delle immagini avviene su richiesta.
  • Riduzione dei costi di archiviazione, non c’è necessità di memorizzare immagini a cui gli utenti non hanno accesso.
  • Resilienza al fallimento. Se l’elaborazione delle immagini è progettata per verificarsi solo una volta dopo la creazione dell’oggetto, un errore intermittente in tale processo potrebbe causare errori.

Conclusioni

In questo articolo abbiamo introdotto le tecnologie serverless evidenziandone vantaggi e casi d’uso per gli editori digitali.

Rivolto ad un pubblico di non addetti ai lavori, il post ha cercato di dare un quadro di riferimento a coloro che lavorano nelle redazioni e che spesso in prima persona si trovano a condividere con i team IT le scelte tecnologiche e strategiche relative allo sviluppo delle applicazioni e piattaforme editoriali.

ideato è partner certificato di AWS, specializzato nel settore digital publishing & media.
Continua a seguirci sul nostro sito e su Linkedin per conoscere le soluzioni che abbiamo messo in campo per i nostri clienti.