Competence Center

Soluzioni Innovative, all’avanguardia e pensate per migliorare ed rendere efficienti i processi aziendali del tuo Business.
Integrazioni con gestionali aziendali, applicazioni, software, soluzioni Front end e molto altro.
Di seguito troverai informazioni utili, soluzioni innovative e news su SharePoint, Liferay, vTiger e molto altro ancora.

Cosa è il Test-driven development e come può aiutarci nei processi di sviluppo?

Tempo di lettura: 6 minuti, Autore: Daniele Fontani

 

In questo articolo cercherò di spiegare che cos’è il TDD e come può essere d’aiuto nei processi di sviluppo.

Ci sono molte risorse e libri su questo argomento, ma vorrei cercare di spiegarlo con un semplice esempio pratico. Probabilmente i puristi di questo metodo troveranno la spiegazione incompleta (mi scuso per questo), ma credo che sia sufficiente per imparare e capire i concetti base.

Inizierò con la definizione di Wikipedia:

Il test-driven development (abbreviato in TDD), in italiano sviluppo guidato dai test o sviluppo guidato dalle verifiche, è un modello di sviluppo del software che prevede che la stesura dei test automatici avvenga prima di quella del software che deve essere sottoposto a test, e che lo sviluppo del software applicativo sia orientato esclusivamente all’obiettivo di passare i test automatici precedentemente predisposti. Più in dettaglio, il TDD prevede la ripetizione di un breve ciclo di sviluppo in tre fasi, detto “ciclo TDD”.

Chiaro?

L’obiettivo principale del TDD è creare una strategia dove i test guidano lo sviluppo per renderlo più efficiente, produttivo e diminuendo le regressioni.

Questo metodo ci insegna a lavorare con parti di codice più piccole, farle funzionare, e infine integrare insieme tutte le parti (già funzionanti).

I benefici del TDD

L’introduzione del TDD sarà un punto di svolta per la tua esperienza di sviluppo.

Ecco una breve lista dei benefici più importanti:

  1. Focus sui punti più importanti: ti verrà richiesto di scomporre il problema in piccole parti, questo ti aiuterà a mantenere l’attenzione sulle cose più importanti. Il pre-requisito è proprio scomporre un grosso task in piccoli passi e sviluppare tramite unit test.
  2. Gestire compiti più semplici: lavorando su singoli task si semplifica la risoluzione dei problemi e si accelera il processo di sviluppo. Non ti ritroverai, dopo aver scritto tutto il codice, a scoprire che qualcosa non va e non sapere perché.
  3. Integrazione semplificata: quando le singole parti del progetto saranno completate, metterle insieme sarà un vero piacere. In caso di regressione saprai in anticipo in quale parte del codice si nasconde l’errore.
  4. Test gratis: una volta che il task è terminato, rimangono a capitale tanti unit test che possono essere usati come base di partenze per altri unit test ed integration test, utili per migliorare la qualità del codice ed evitare regressioni.

Cosa non è il TDD

TDD è un grande metodo, ma non è:

  • una sostituzione dei test (unit test, acceptance test, ui test)
  • qualcosa che puoi imparare in un giorno
  • qualcosa che scrive codice al posto tuo
  • una magia che tiene lontani i bug dal tuo codice

Il ciclo TDD

Il TDD è composto principalmente da tre fasi:

  1. Write the unit test (RED)
  2. Make it work (GREEN)
  3. Refactor

Ad esempio, si scrive un test automatico, usando il codice all’interno per implementare la funzione finchè passa i test, quindi si esegue il refactoring posizionando questo pezzo di codice dove serve.

Limiti

In molti casi è difficile sviluppare un test che riproduca una reale funzione del codice.

E’ adatto per procedure semplici ed autocontenute, ma quando andiamo a coinvolgere il database o la UI la difficoltà di scrivere test aumenta e in molti casi l’effort supera i possibili vantaggi.

Ci sono alcune best practices e librerie che ci aiutano per risolvere queste problematiche, ma in generale non è facile testare tutte le parti dell’applicazione usando un semplice test.

Che cos’è il BDD

BDD è uno sviluppo del TDD che entra in gioco in situazioni nelle quali il test è limitante.

Questa estensione usa lo sviluppatore come test, mantenendo la filosofia del BDD. Puoi comunque scomporre un compito complesso in altri più piccoli, testando il comportamento dell’utente con gli stessi vantaggi del TDD nei compiti di backend.

I requisiti del TDD

Quando si lavora in team tutti i membri del gruppo devono conoscere e condividere questa filosofia, oltre a conoscere tutta la tecnologia coinvolta.

Prima di tutto il codice deve essere verificato da un efficace sistema di test:

  • .net, .net core: costruiti su Visual Studio o xunit (il secondo è il mio preferito)
  • java: junit funziona molto bene, non ho avuto bisogno di cercare alternative
  • php: il test php ha funzionato in tutti i casi

Poi è fondamentale avere un’architettura che permetta di fingere o ricreare il comportamento corretto durante il test.

Sto parlando di un ORM che può funzionare in memoria o su un database locale durante il test, ma anche da usare come service o repository pattern.

Può aiutare anche usare una libreria DI (quella integrata in .net core, autofac o qualsiasi altra…).

Per ultimo è importante aver prototipato un buon processo di sviluppo, con continuous integration, oltre ad una corretta configurazione per definire quali test conviene eseguire durante l’integrazione e quali vanno eseguiti solo localmente.

Conclusione

La TDD è una metodologia che guida il processo di sviluppo supportato dai test.

Ciò aiuta la codifica in molti modi, ma richiede che tutti i membri del team abbiano alcune nozioni di base.

Una volta eseguito questo passaggio, gestirai un compito più semplice e avrai molti test che potranno essere riutilizzati.

Questo processo aiuterà ad evitare la regressione e raggiungere l’obiettivo più rapidamente, nonostante lo sforzo di scrivere unità test durante lo sviluppo.

Inoltre, se l’applicazione è difficile da testare a causa della complessità, è possibile mantenere la stessa filosofia usando il metodo BDD.

Integrazione tra Pimcore e piattaforme di Ecommerce

Tempo di lettura: 7 minuti, Autore: Marco Guiducci

 

Abbiamo già precedentemente visto come Pimcore implementi il concetto di PIM in modo semplice e dinamico, fornendo all’utente uno strumento pratico e personalizzabile sulla base delle proprie esigenze.

Vediamo adesso come Sintra ha sfruttato le proprie conoscenze della piattaforma Pimcore per fornire ai propri clienti uno strumento versatile, in grado di soddisfare le diverse necessità che ciascuno di essi aveva sia in termini di progettazione ed importazione dei dati relativi ai propri prodotti, sia per ciò che concerne la sincronizzazione di tali dati verso le proprie piattaforme E-Commerce.

 

Integrazione tra PIM e Sistemi di Vendita

L’aggiornamento in tempo reale delle informazioni relative ai prodotti all’interno di un canale di vendita E-Commerce è sempre più fondamentale data la diffusione sempre più in scala globale del commercio online.

Ciascuna piattaforma E-Commerce, tipicamente, dispone della propria base dati; se un’azienda presenta la necessità di vendere i propri prodotti attraverso diversi canali, mantenere aggiornate le informazioni sui prodotti in ciascuno di essi potrebbe risultare laborioso e portare ad un’incoerenza del dato.

L’utilizzo di un PIM consente di gestire e aggiornare le informazioni in un’unica piattaforma, e di inviarle ai vari canali di distribuzione, che dunque avranno solo il ruolo di marketplace e non dovranno farsi carico di tenere aggiornati i dati dei prodotti.

Le funzionalità base di Pimcore prevedono flussi di esportazione dati manuali da interfaccia utente, e mettono a disposizione un set di API che sistemi esterni possono invocare per ottenere informazioni.

Questo flusso di esecuzione è limitante nel caso in cui si abbia la necessità di inviare i dati ai diversi marketplace in tempo reale, perché necessiterebbe sempre azione manuale da parte di un operatore o forzerebbe i marketplace stessi a interrogare costantemente Pimcore per ricevere aggiornamenti, rallentando l’esperienza utente nel sito.

In alcuni contesti si adotta la soluzione di inserire un sistema terzo, che agisce da middleware e che mantiene aggiornate le varie piattaforme; il problema che si ha nell’utilizzo di queste soluzioni è che si aggiunge un ulteriore elemento da manutenere, complicando l’architettura del sistema.

La soluzione che Sintra ha realizzato nel suo sistema di integrazione è molto semplice: nel momento in cui le informazioni di un prodotto cambiano, Pimcore si fa carico di invocare le API dei vari marketplace al fine di sincronizzare il dato in essi. Questo permette di mantenere il dato costantemente aggiornato in ogni canale di vendita in maniera trasparente a ciascuno di essi, senza la necessità di aggiungere altre componenti.

 

Il modulo Sintra di Integrazione Prodotti

Il plugin realizzato da Sintra consente di estendere le funzionalità di Pimcore rendendolo, oltre che accentratore delle informazioni, anche distributore di tali informazioni verso i vari canali di vendita e pubblicazione (data syndicaton).

 

Funzionalità

Il plugin Sintra fornisce una serie di classi e set di attributi precompilati realizzati per semplificare e permettere la sincronizzazione dei prodotti verso piattaforme E-Commerce.

Grazie alla realizzazione di una classe Pimcore è possibile rappresentare i diversi marketplace come oggetti Pimcore, indicando quanti e quali attributi dei prodotti definiti in Pimcore sia necessario inviare allo specifico canale, come correlare ciascuno di questi attributi al suo corrispettivo, e altre informazioni utili alla sincronizzazione.

Ciò consente di configurare il flusso di aggiornamento dati da Pimcore ai vari canali di distribuzione agendo direttamente da interfaccia, senza la necessità di avere alcun file di configurazione esterno, riducendo la complessità iniziale e facilitando la manutenzione.

Ad oggi, sono già state sviluppate da Sintra le integrazioni per Magento 2 e Shopify; la natura del plugin consente di poter sviluppare con un effort limitato integrazioni verso altre possibili piattaforme, a patto che esse espongano opportune API, o di personalizzare ed estendere quelle già sviluppate, in base alle proprie esigenze.

 

Come funziona?

Una volta configurati gli oggetti Pimcore che rappresentano i vari canali di distribuzione, sarà possibile attivare il flusso di sincronizzazione.

Al momento di ogni salvataggio di un prodotto in Pimcore, sarà eseguito un controllo che, verificando quali modifiche sono state portate al prodotto, determinerà se esso necessita di essere sincronizzato in ciascuno dei canali precedentemente definiti, ciascuno sulla base delle proprie esigenze; in caso affermativo, i dati aggiornati del prodotto saranno inviati alla rispettiva piattaforma.

Questo controllo avviene in maniera automatica e trasparente all’operatore, che avrà la possibilità di verificare lo stato di sincronizzazione dei vari prodotti in ciascun canale e di decidere liberamente quali prodotti vendere, e dunque sincronizzare, all’interno delle varie piattaforme.

integrazione-prodotti-pim

Vantaggi

Questo plugin offre una soluzione dinamica che permette di sincronizzare le informazioni relative ai prodotti da Pimcore a uno o più canali di distribuzione, configurabile totalmente da interfaccia web e personalizzabile sulla base delle proprie necessità.

La gestione centralizzata dei prodotti tipica di una soluzione PIM viene integrata permettendo l’invio di informazioni in tempo reale verso piattaforme esterne in maniera trasparente ad esse, permettendo di realizzare un’infrastruttura E-Commerce in grado di mantenere aggiornate le informazioni in diversi marketplace.

Come utilizzare il modulo di integrazione prodotti sintra?

Per utilizzare il plugin Sintra è sufficiente scaricarlo ed integrarlo alla propria installazione di Pimcore, importando la configurazione delle classi Pimcore presente nel plugin.

L’abilitazione ed installazione del plugin potrà dunque essere lanciata direttamente da interfaccia web, accedendo alla sezione di gestione delle estensioni.

Possibilità di estensione e supporto

Il plugin Sintra, può essere facilmente esteso e personalizzato secondo le proprie necessità.

Le implementazioni già esistenti per la sincronizzazione verso le piattaforme Magento 2 e Shopify possono essere facilmente customizzate, ed è possibile crearne di nuove nel caso sia necessario inviare i propri prodotti verso altri tipi di piattaforme.

In quest’ultimo scenario, sarà sufficiente implementare il servizio che si interfacci con le API esposte dalla piattaforma desiderata.

Riferimenti

Link al plugin:
https://github.com/Sintraconsulting/pimcore-product-sync-plugin

Wiki del plugin:
https://github.com/Sintraconsulting/pimcore-product-sync-plugin/wiki

 

Ti sei perso l’articolo precedente su Pimcore?

PIM, Product Information Management: Cos’è e quali sono i vantaggi?

Tempo di lettura: 4 minuti, Autore: Marco Guiducci

 

Il concetto di PIM, Product Information Management, racchiude l’insieme di tecnologie e procedimenti che consentono una gestione centralizzata delle anagrafiche dei prodotti di un’azienda.

In diverse realtà aziendali, può talvolta capitare che le informazioni relative ai prodotti provengano da più sorgenti, potenzialmente con strutture dati diverse fra loro, sia a causa di diverse necessità dettate dai propri canali di distribuzione che dalla dotazione di differenti tecnologie in aree distinte della stessa azienda.

L’utilizzo di un PIM consente di integrare le informazioni provenienti da diverse sorgenti in un’unica piattaforma organizzandole in maniera coerente ed offre la possibilità di redistribuirle in diverse modalità verso piattaforme E-Commerce, siti internet, cataloghi cartacei e via dicendo.

Quali sono i vantaggi nell’adottare un PIM per la gestione dei prodotti?

L’utilizzo di un PIM consente una gestione completa e dinamica delle anagrafiche dei prodotti, permettendo di customizzare e filtrare le informazioni relative a diversi tipi di prodotto, di gestire prezzi e valute, differenti unità di misura, traduzioni multilingua, contenuti multimediali e molto altro.

La possibilità di accentrare tutte queste informazioni in un’unica piattaforma permette di gestire i prodotti in maniera del tutto indipendente da qualsiasi canale di distribuzione; sarà compito del PIM inviare, a ciascun canale, solo le informazioni ad esso necessarie.

Questa gestione centralizzata porta benefici in termini di costo di gestione di eventuali cataloghi, listini e piattaforme online, dando consistenza alle informazioni relative ai prodotti e riducendo gli errori di progettazione.

È davvero importante adottare un PIM?

L’utilizzo di un PIM è fondamentale per le aziende che hanno la necessità di vendere o presentare i propri prodotti in piattaforme e media differenti, ma anche per scenari aziendali nei quali si ha la necessità di condividere le informazioni relative ai prodotti in differenti reparti o aree di sviluppo, mantenendo sempre centralizzata la produzione di tali informazioni.

La necessità di dotarsi di un PIM aumenta ancor di più al crescere del numero di prodotti da gestire, in quanto si riduce drasticamente il costo di gestione e manutenzione dei dati, limitandolo ad un un’unica piattaforma.

Le tecnologie PIM permettono inoltre di integrare le informazioni relative ai prodotti affiancando loro la gestione dei contenuti multimediali ad essi associati, e consente di inviare tali contenuti ai vari canali di distribuzione.

Cosa è Pimcore?

Pimcore è un software Open Source che implementa il concetto di PIM offrendo una sistema affidabile, pratico e scalabile in termini di complessità e numero di prodotti.

Le funzionalità di Pimcore astraggono dal concetto di prodotto, basandosi sul più generico concetto di “classi” di oggetti; la definizione di queste classi si adatta ad ogni necessità, e la loro creazione e manutenzione è resa facile e veloce da un’interfaccia intuitiva e dinamica.

Pimcore offre la possibilità di creare attributi semplici o complessi, di definire gruppi di attributi, e di gestire le relazioni fra una o più entità anche di classi diverse; ciò permette, oltre a definire ragionevolmente una classe che rappresenti i propri prodotti, di rappresentare in forma di oggetti altri concetti (quali ad esempio la lista delle categorie merceologiche, un campionario di materiali, e così via) e di collegarli direttamente ai prodotti stessi.

La versatilità nella definizione delle suddette classi non pone limiti al design della propria struttura dati, che può essere aggiornata ed integrata in qualsiasi momento semplicemente agendo da interfaccia utente.

Funzionalità integrate di Pimcore:

Oltre alle funzionalità tipiche di un PIM, Pimcore integra nativamente il concetto di DAMDigital Asset Management, ovvero tutto ciò che concerne la creazione, modifica e gestione di contenuti multimediali all’interno della propria piattaforma.

I concetti di PIM e DAM sono in linea generale indipendenti fra loro; Pimcore li integra in un’unica piattaforma, mantenendo indipendente la gestione dei prodotti da quella dei contenuti multimediali, ma al tempo stesso permette facilmente di correlare fra loro questi due aspetti.

Pimcore può inoltre svolgere il ruolo di CMSContent Management System, ovvero permette di realizzare contenuti web che consentono di pubblicizzare i propri prodotti; questa funzionalità può essere utilizzata, ad esempio, per realizzare cataloghi online, mantenendo gli aspetti di gestione delle informazioni dei prodotti e della produzione di documenti in un’unica piattaforma condivisa, semplificando dunque i processi di sviluppo e migliorando le prestazioni in termini di navigazione.

Nel caso in cui non ci si voglia affidare a software esterni, nella sua versione Enterprise, Pimcore affianca inoltre a questa funzionalità la possibilità di strutturare il proprio E-Commerce all’interno della piattaforma stessa, fornendo dunque una completa gestione del prodotto, dalla creazione fino alla vendita.

Data Ingestion e Data Syndication di Pimcore

Nello svolgere la sua funzione di PIM, Pimcore consente facilmente di ricevere ed inviare dati in diverse modalità.

I dati relativi ai prodotti possono essere importati ed esportati da e verso Pimcore in vari formati direttamente dall’interfaccia utente.

È possibile ad esempio importare i prodotti all’interno di Pimcore tramite con semplici file CSV e produrre esportazioni personalizzate sulla base delle proprie necessità.

L’invio e la fruizione dei dati è possibili inoltre utilizzando un set di API fornite da Pimcore, nel caso si abbia la necessità di predisporre flussi di aggiornamento automatici che non richiedano l’attività di un’operatore.

Data la sua natura Open Source, Pimcore è facilmente estendibile, e dà la possibilità di creare plugin e sviluppare flussi personalizzati per la sincronizzazione dei dati da e verso qualsiasi piattaforma.

Questo rende ancor di più Pimcore uno strumento efficace e versatile che permette di realizzare soluzioni personali in grado di soddisfare le più diverse diverse necessità.

Pimcore

Conclusioni

Pimcore implementa il concetto di PIM, Product Information Management, permettendo una gestione centralizzata delle informazioni relative ai prodotti in modo semplice e versatile.

Il suo concetto di classi di oggetti consente lo sviluppo di una struttura dati dinamica che si adatta ad ogni esigenza, e che è scalabile in termini di complessità e numero di prodotti.

Il flusso di sincronizzazione delle informazioni da e verso Pimcore può avvenire in diverse modalità e soluzioni personalizzate possono essere sviluppate per estendere le funzionalità native, grazie alla natura Open Source della piattaforma.

Integrando al suo interno strumenti che consentono la gestione di contenuti multimediali e la produzione di documento online, Pimcore risulta essere uno dei software più completi e pratici nel suo campo, offrendo una gestione totale del prodotto, dalla creazione fino alla pubblicazione e alla vendita.

I vantaggi di Umbraco CMS Enterprise

Tempo di lettura: 4 minuti, Autore: Leonardo Marcucci

Umbraco è una piattaforma CMS molto evoluta, che permette di gestire portali e siti web in ambito enterprise.

Rispetto ad altri competitor del settore, offre maggiori stabilità e performance, oltre a presentare delle avanzate capacità di personalizzazione ed adattamento alle esigenze specifiche del progetto da realizzare.

A differenza delle più note piattaforme CMS che sfruttano PHP (basti pensare a Drupal o WordPress), Umbraco è basato su .Net di Microsoft; è quindi possibile utilizzare un framework ben testato e conosciuto tra gli sviluppatori, ricco di funzionalità, corredato da tool ed IDE avanzati (vedi Visual Studio), che facilitano e rendono più veloce la stesura del codice, diminuendo drasticamente il time-to-market.

La possibilità di sviluppare rapidamente plugin o moduli per aumentare le funzioni del CMS e la presenza di un marketplace ufficiale nel quale condividerli (direttamente accessibile nell’interfaccia web di gestione) sono sicuramente alcuni tra i principali fattori di successo della piattaforma.

Inoltre Umbraco è un progetto open source, supportato da una comunità molto attiva e disponibile nei forum, ricco di tutorial e documentazione, che permette di effettuare sia installazioni “tradizionali” su server privati ma che è anche disponibile come SaaS attraverso Umbraco Cloud.

Tutte queste caratteristiche rendono Umbraco un prodotto di punta nel panorama Web CMS mondiale.

Best practices di sviluppo ed Umbraco

Gestione del ciclo di sviluppo

In molte piattaforme CMS è difficile riuscire a lavorare seguendo un approccio rigoroso nel ciclo di sviluppo (si pensi alla classica pipeline di rilascio sviluppo → test → produzione), dal momento che tutte le operazioni fatte dal backend del CMS (l’interfaccia web) vengono salvate direttamente sul database, senza possibilità di essere “versionate” ed applicate durante la promozione ad un altro ambiente

Da questo punto di vista, Umbraco è ottimo.

La piattaforma mette a disposizione il tool a pagamento Umbraco Courier per migrare i contenuti necessari da un ambiente all’altro, installando anche le eventuali dipendenze, direttamente da interfaccia web con un semplice click.

Qualora si stesse cercando una soluzione gratuita, nel marketplace della comunità è possibile trovare degli opportuni plugin (come Conveyor, uMirror o uSync) per tenere traccia su file system delle modifiche effettuate da backend, permettendo il loro versionamento sul repository assieme al codice sorgente.

Questo permette di lavorare con database isolati nei singoli ambienti e poi (in fase di merge delle modifiche o integrazioni) allineare la struttura dati con pochi click, direttamente da interfaccia web.

Alcuni tra questi plugin, ad es. uSync, sono così evoluti che oltre all’import manuale supportano l’installazione automatica in fase di avvio dell’applicazione, semplificando ulteriormente il processo lavorativo.

interfaccia import export umbraco

Esempio di interfaccia di import/export per cambiamenti da backend (uSync).

Si pensi ad esempio alla realizzazione di una sezione news. Lo sviluppatore in ambiente locale lavora con Umbraco, definendo document type e viste. Al momento del commit, il pacchetto di modifiche sarà auto-consistente ed andrà ad installarsi sui vari ambienti (test, produzione) senza bisogno di interventi manuali.

In pratica, ciò che si deve andare ad inserire ambiente per ambiente è solo il contenuto vero e proprio e non le parti di presentazione/modello.

Localizzazione dei contenuti

Un CMS ha tra le sue funzionalità più interessanti ed utilizzate, la possibilità di gestire siti multilingua ed Umbraco non fa eccezione.

L’approccio che la piattaforma propone è molto semplice: creare la struttura del sito per una lingua, replicarla tante volte quante sono le lingue da supportare (o adattare la struttura lingua per lingua qualora sia necessario), definire una rotta base diversa per ogni lingua (ad es. utilizzando il relativo codice a due lettere: ‘it’, ‘en’ e così via) ed infine utilizzare gli oggetti Dictionary per fornire le traduzioni di tutti gli elementi testuali che lo richiedono.

Una volta che l’architettura è stata creata, Umbraco rende estremamente intuitivo fornire/modificare i valori delle traduzioni, infatti è disponibile una sezione apposita nel backend facilmente utilizzabile anche dai non “addetti al settore” (vedi immagine sotto).

dictionary umbraco

Esempio di localizzazione dei contenuti con i Dictionary di Umbraco.

Se si ritiene eccessiva e/o non necessaria la duplicazione dell’albero dei contenuti per progetti di piccole dimensioni o in cui la struttura del sito si mantiene costante tra le diverse lingue, il marketplace offre estensioni molto interessanti, tra le quali spicca sicuramente Vorto, che permette di effettuare traduzioni/offrire contenuti localizzati 1:1 direttamente dal property editor del backend di Umbraco: in pratica, nel momento in cui vengono definite le proprietà di un documento, si possono contestualmente scegliere anche i diversi valori da attribuire in base alle lingue scelte.

Ovviamente è anche possibile utilizzare un approccio ibrido alla localizzazione, preferendo la semplicità di Vorto nella maggior parte delle pagine ma utilizzando la flessibilità del metodo standard dove necessario: fortunatamente Umbraco è così flessibile da permetterlo!

traduzione-vorto

Esempio di traduzione 1:1 per alcune proprietà del modello attraverso Vorto.

Frontend evoluto con AngularJS

AngularJs è un framework client-side molto popolare e potente per la creazione di SPA ed interfacce web evolute, sviluppato da un team interno a Google.

Umbraco si avvale di AngularJs per la parte UI del backend, ma purtroppo non permette di utilizzarlo direttamente nella parte frontend del sito, preferendo un approccio più classico client-server, o comunque demandando allo sviluppatore l’onere di integrarlo.

Per realizzare siti complessi è importante riuscire a sfruttare questa tecnologia anche sulla parte applicativa destinata agli utenti finali.

Dal momento che non esisteva un modulo per questo scopo, abbiamo progettato ed implementato un plugin, disponibile su Umbraco o GitHub, che permette di:

  • gestire le pagine utilizzando il consueto backend CMS, permettendo all’editor (inteso come utente editore) di essere autonomo nell’inserimento di contenuti;
  • definire, a livello di sviluppo, widget o viste parziali autocontenute che svolgono una determinata funzione (es. lista news). Tali elementi sono basati ovviamente su AngularJs;
  • inserire nelle pagine questi widget, facendo in modo che l’engine di AngularJs venga caricato automaticamente all’avvio della pagina, riconoscendo i componenti necessari e permettendo loro di lavorare in maniera sinergica.

Integrare il plugin è semplicissimo: basta accedere al backend di un’installazione Umbraco, navigare nella sezione Developer → Packages, ricercare “Umbraco Angularjs frontend” e premere il pulsante di installazione.

ricerca-plugin

Ricerca del plugin…

installazione-plugin

…ed installazione.

Il pacchetto in fase di installazione modifica la configurazione di Umbraco per permettere l’integrazione con AngularJs.

In particolare:
Crea il document type “Sintra – AngularJs Master”, dal quale dovranno ereditare tutti i document type che utilizzeranno AngularJs; è buona norma tenere questo come il document type root di tutti gli altri, anche considerando il fatto che esiste una proprietà per abilitare/disabilitare selettivamente l’inclusione di AngularJs qualora non servisse in determinate pagine.

Crea il template “AngularJsMaster”, che inietta nella pagina il file Javascript di AngularJs (incluso nel pacchetto del plugin) ed inizializza tutte le view AngularJs utilizzate nella pagina stessa, comprensive di componenti/direttive/servizi (per maggiori informazioni su questi termini vedere il paragrafo successivo e la documentazione di AngularJs).

Per quanto riguarda l’ereditarietà dei template, valgono le stesse considerazioni fatte per il document type nel punto 1.

Crea la macro “Sintra – NgViewMacro”, che permette all’utente finale di inserire attraverso l’editor standard di Umbraco una view AngularJs come contenuto di una pagina. La macro si occupa anche di registrare tutti i componenti/direttive/servizi utilizzate all’interno della view, così che tutto possa essere inizializzato con le API di AngularJs dal template del punto 2.

Dopo aver installato il plugin, sarà cura dello sviluppatore inserire il proprio codice relativo ad AngularJs nella cartella “~/Ng”, suddividendo i diversi file per tipologia nelle relative sottocartelle:

  • Views”: contiene le view principali, considerabili come entry point di una parte del frontend basata su AngularJs. Saranno proprio questi gli elementi a poter essere inseriti in pagina attraverso la macro “Sintra – NgViewMacro”.
  • Services”: contiene i servizi AngularJs, dove è mantenuta la business logic del frontend, riutilizzabili all’interno di molteplici view/componenti/direttive.
  • Components”: contiene componenti AngualrJs, con la relativa parte di logica e di markup, riutilizzabili all’interno delle view o di altri componenti.
  • Directives”: contiene direttive AngualrJs riutilizzabili all’interno delle view o di componenti.
  • Filters”: contiene filtri AngualrJs riutilizzabili all’interno delle view o di componenti.

Una volta che il codice AngularJs è pronto, l’utente potrà inserire autonomamente la macro “Sintra – NgViewMacro” opportunamente configurata dove ritiene più conveniente, fermo restando che il document type target erediti da “Sintra – AngularJs Master”.

A titolo di esempio, immaginando di avere una view “MyView” che al suo interno utilizza il servizio “MyService” ed il componente “MyComponent”, si potrà inserire una macro con i seguenti settaggi:

angularjs-pagina

Esempio di inserimento di un contenuto AngularJs in una pagina Umbraco (1/2).

inserimento-contenuti

Esempio di inserimento di un contenuto AngularJs in una pagina Umbraco (2/2).

La macro registrerà la view ed i relativi sotto-elementi specificati nel contesto della pagina, in fondo alla quale verrà generato del codice Javascript per l’inizializzazione di AngularJs e la registrazione dei suddetti elementi, sfruttando il template “AngularJs”.

Per maggiori dettagli sul plugin, le convenzioni utilizzate, le possibilità di configurazione ed esempi pratici dettagliati, potete fare riferimento al repo GitHub e relativo README.

Happy Umbracoing!

Riferimenti

Progetto su GitHub:
https://github.com/Sintraconsulting/umbraco-angularjs-frontend-plugin
Pagina del plugin nel marketplace:
https://our.umbraco.com/packages/developer-tools/umbraco-angularjs-frontend-plugin/

 

Sei uno sviluppatore e vuoi approfondire ancora di più questo argomento? Sicuramente può interessarti anche l’articolo di Alfonso Falcone

Umbraco vs WordPress: due CMS a confronto

Tempo di lettura: 3 minuti, Autore: Alfonso Falcone

Cos’è un CMS?

Negli ultimi anni un numero sempre crescente di aziende e liberi professionisti decide di utilizzare gli spazi offerti dal web per auto-promuovere la propria attività.

Sotto questo aspetto, sicuramente il fenomeno dei social network ha saputo dare delle risposte rapide e, in alcuni casi, anche molto efficaci.

Tuttavia avere un sito web resta la soluzione migliore per far conoscere la propria attività ed offrire, ad un potenziale pubblico o clientela, uno spazio con informazioni o funzioni esclusive, come ad esempio un e-commerce o un’area riservata con contenuti unici.

Fino a qualche anno fa, gestire in autonomia un sito web e l’inserimento dei contenuti al suo interno sarebbe stata impossibile per chiunque non avesse avuto una confidenza minima con i linguaggi di programmazione.

Dall’inizio degli anni 2000 assistiamo alla comparsa dei CMS (Content Management System), ovvero software che permettono di gestire, inserire e modificare i contenuti di testo, le immagini, i video e i documenti, oppure di modificare i temi grafici all’interno del proprio sito web attraverso schermate front-end intuitive e facili da usare.

Non tutti i CMS sono uguali

La varietà dei CMS che possiamo trovare online è piuttosto ampia e questo potrebbe generare confusione, portandoci a credere che la scelta di questo o quell’altro software non possa avere alcun peso per lo sviluppo futuro della piattaforma.

Deve essere quindi chiaro fin da subito che ogni CMS è un mondo a sé stante e che la loro tipologia può variare in base allo scopo per cui sono sono stati creati.

E’ quindi fondamentale che il cliente conosca le proprie esigenze in maniera accurata, per garantire al futuro team di sviluppo i criteri sui quali ponderare la scelta.

Per avere un’idea di quanto un CMS possa essere diverso da un altro software concorrente, ne metteremo a confronto due fra loro: WordPress e Umbraco.

Il primo, nato nel 2003 come piattaforma di blogging e noto anche agli sviluppatori alle prime armi, si è presentato come uno degli strumenti di lavoro più versatili ed efficaci, guadagnando così in breve tempo la fiducia degli addetti ai lavori, che hanno potuto offrire risultati ottimali alla più svariate tipologie di clienti in tempi brevi.

Il secondo, nato qualche anno prima, non ha goduto della stessa notorietà del suo concorrente, ma ha saputo guadagnarsi il favore di una grandissima fetta di sviluppatori e ad essere scelto per la realizzazione di siti e applicazioni web di aziende importanti come Microsoft, Sony, Wired, Warner Bros e Vogue.

WordPress e Umbraco: due tecnologie a confronto

Umbraco wordpress quale scegliere

Possiamo già da subito intuire come i due strumenti si presentano all’utenza per caratteristiche e scopi completamente differenti.

Dobbiamo creare un blog, un eCommerce, oppure un sito che li contenga entrambi?

Il nostro cliente ha bisogno di un’area riservata?

È fondamentale per uno studio di web design o un qualsiasi sviluppatore, capire quali sono le esigenze del cliente, comprendere quali sono gli strumenti che sappiano valorizzare il contenuto proposto e che gli possono quindi garantire dei risultati ottimali.

La domanda da farci quindi è: come orientarci nella scelta tra i vari CMS?

In questo articolo metteremo a confronto WordPress e Umbraco, due piattaforme molto diverse (PHP vs .net), orientate a consumer diversi.

Perché?

La scelta di queste due piattaforme, molto diverse a livello architetturale, permettono di sviluppare soluzioni comparative e dominandole entrambe riusciamo a coprire in maniere esaustiva le richieste del mercato.

Vediamo quindi come funzionano e in quali casi adottare l’uno o l’altro CMS.

Cos’è Umbraco?

Umbraco è una piattaforma CMS open source, pensata per la pubblicazione di contenuti su siti internet e intranet, principalmente scritto in C#.

La versione standard di Umbraco memorizza i dati su sistemi database relazionali e funziona esclusivamente su server Microsoft IIS con supporto Full Trust; la parte front-end è realizzata in ambiente .NET Framework con tecnologia ASP.NET, della quale sfrutta diverse funzionalità standard (ad esempio le master pages) e supporta Razor e XSLT.

Il punto focale di Umbraco CMS è proprio sui contenuti e grazie alla sua struttura si adatta molto bene nella realizzazione di siti web con contenuti strutturati.

I punti di forza sono la stabilità, la velocità nello sviluppo di funzionalità custom e la sicurezza.

Pro e Contro

Vantaggi

Umbraco è la scelta migliore per chi ha un server di hosting IIS o Azure e vuole creare un sito di grandi dimensioni, con funzionalità complesse, capace di avere un occhio di riguardo per la sicurezza online, come piattaforme di e-commerce collegate direttamente con il gestionale del cliente, siti con elementi interattivi in grafica 3d (ad esempio rendering di location e arredamenti) o con aree riservate per clienti e fornitori.

I vantaggi principali offerti da Umbraco troviamo:

  • ampi margini di customizzazione, che permettono agli sviluppatori e ai web designer di lavorare sul codice HTML del sito direttamente dal CMS;
  • una comunità di sviluppatori che, sostenendo il progetto nel corso degli anni, ha contribuito alla creazione di servizi di terze parti (packages) per garantire agli utenti l’integrazione di servizi web esterni e arricchire il proprio sito con maggiori funzionalità;
  • semplicità di gestione dei contenuti, attraverso un interfaccia semplice ed intuitivo, capace di offrire una visione chiara della struttura del sito anche all’utente finale che vorrà gestire in piena autonomia la creazione di nuove pagine e l’inserimento di testi e immagini.
  • Un sistema di caching che permette agli utenti una navigazione rapida all’interno del sito, anche su pagine non ancora visitate (fattore molto utile in un ottica SEO);
  • I costanti aggiornamenti consentono di avere in proprio possesso un sistema sempre aggiornato in termini di sicurezza e riservatezza dei dati.

Svantaggi

Purtroppo gli svantaggi che propone questo sistema sono diversi, e vanno tenuti fortemente in considerazione nella nostra scelta:

  • La gestione di funzioni complesse richiede l’ausilio di sviluppatori esperti per permettere al sistema di lavorare correttamente. Maggiore sarà la customizzazione, maggiori saranno gli sforzi in termini di manutenzione, comportando dunque una spesa su lungo termine.
  • Umbraco può essere installato solo su server Windows.
  • Alcuni packages non vengono aggiornati dalla community e potrebbero essere inadatti alla versione in uso oppure presentare dei bug.

Cos’è WordPress?

WordPress è una piattaforma CMS nata per il blogging che fa della semplicità d’uso il suo cavallo di battaglia.

Proprio per la facilità con cui si installa e si configura, oltre alla disponibilità di una versione free online, è largamente utilizzato e si è affermato come la soluzione CMS d’eccellenza per siti web di piccole e medie dimensioni.

Attraverso un marketplace molto ben fornito è possibile scaricare plugin che estendono le funzionalità di base e permettono, anche senza conoscenze di programmazione, di realizzare siti web con pochi sforzi.

Pro e Contro

Vantaggi

Dall’altra parte, WordPress si presenta come la soluzione più adatta per le aziende o i professionisti che vogliono concentrare la loro attività sulla condivisione dei contenuti, senza però rinunciare alla possibilità di creare una attività di e-commerce e ad una totale autonomia nella gestione del sito.

Tra i principali punti di forza che hanno permesso il successo di questa piattaforma possiamo trovare:

  • Facile da installare su tutti i server PhP e MySQL;
  • come per Umbraco, esiste una community in grado di fornire a tutti gli utenti un’ampia scelta tra temi grafici e plugin, completamente gratuiti;
  • tra i plugin installabili ne esistono moltissimi dedicati alla SEO. Questo fa sì che WordPress si confermi uno tra i sistemi più SEO-friendly in circolazione;
  • oltre ad essere facile da installare, è anche facile da usare: con WordPress potremo decidere l’aspetto della nostra pagina direttamente dal nostro gestionale, selezionando gli elementi di layout e la loro disposizione;
  • in termini di manutenzione lato codice, non richiede quasi mai competenze avanzate.

Svantaggi

Anche questo CMS, pur essendo il più diffuso a livello mondiale, non è esente da difetti, fra cui:

  • le numerose vulnerabilità sotto l’aspetto della sicurezza, spesso legate all’uso di determinati plugin;
  • limitazioni grafiche sui temi predefiniti che, essendo utilizzabili da tutti gli utenti WordPress, rischiano di risultare “riciclati”, rendendo così anonima l’identità del proprio brand.
  • l’eccesivo uso di plugin, che può comportare rallentamenti nel caricamento delle pagine e, di conseguenza, influire negativamente sull’indicizzazione del sito sui motori di ricerca.
  • le difficoltà nel gestire molte query tra diverse pagine, con conseguente rallentamento dell’intera struttura.

Quindi quale tecnologia scegliere tra Umbraco e WordPress?

Presa coscienza dei punti forti e deboli dei due CMS, abbiamo più chiaro quanto va tenuto in considerazione nella nostra scelta.

  • WordPress si conferma la scelta ideale per tutte le aziende di piccole o medie dimensioni che, presa coscienza della crescita dello shopping online, vogliono aumentare le loro entrate aprendo uno spazio di e-commerce in tempi brevi, oppure per tutte quelle figure professionali e/o attività che vogliono gestire in prima persona altri aspetti del sito web (ad esempio la SEO) attraverso l’uso di specifici plugin ed hanno necessità di proporre il loro contenuto online, principalmente scritto, come un blog o una testata giornalistica.
  • Diversamente, Umbraco offre maggiori possibilità per gli sviluppatori, e soprattutto per i web designer, di creare siti con stili unici, studiati per soddisfare specifiche esigenze di un cliente che, come caratteristiche principali, abbia la volontà di rendere il suo brand unico e riconoscibile, riservare all’utenza funzioni uniche all’interno del proprio sito e che ha la possibilità di sostenere una spesa a lungo termine su un team di sviluppo web che sappia mantenere il sito sempre aggiornato e che garantisca un alto margine di personalizzazione.

API Gateway per Aziende: Every company is a software company

Le aziende leader di oggi si stanno trasformando digitalmente, spostandosi gradualmente verso sistemi e soluzioni tecnologiche basate sui servizi.

La trasformazione è fortemente stimolata dai dispositivi connessi e dalla volontà dei consumatori di vivere esperienze del brand convincenti.

Tutto questo genera un’enorme e sempre crescente quantità di dati.

I servizi, le cosiddette API – Application Programming Interface, fungono da connettore digitale tra applicazioni e sistemi.

Questo consente alle aziende di ottenere il massimo dai dati creando esperienze convincenti per i propri interlocutori (clienti, fornitori, collaboratori).

API e “Pervasive UX”: Come si integrano le API con l’esperienza utente

La consapevolezza del digitale è ormai parte integrante delle scelte strategiche aziendali, ed è necessario disegnare la strategia digitale non sulla tecnologia ma attorno ai comportamenti umani.

Non è più sufficiente, per le agenzie digitali, immaginare e disegnare l’esperienza utente “dentro” allo schermo , ma è bensì opportuno seguire il cliente anche “fuori” dal mondo digitale.

Si parla quindi di esperienza utente “pervasiva” (Pervasive UX) tesa ad abbracciare tutto il ciclo di vita dell’utente, dentro e fuori dallo schermo; e non più solo di “customer eXperience”, ma anche di “employee eXperience”.

>> Ti consiglio, a tal proposito, di guardare il video The Future of Work and Employee Experience di Jacob Morgan Keynote. 

Il perimetro del vecchio “ufficio design” si allarga ed aumenta il proprio impatto come motore di crescita aziendale; il nuovo “web designer” deve essere anche psicologo, sociologo ed avere capacità di analisi dei processi.

Le tecnologie legate all’API economy si inseriscono in questo contesto senza forzare il processo umano, bensì consentendone la massima espressione ed apertura.

API economy: un Nuovo Modello di Business

api gateway

L’esposizione di API da parte delle aziende, verso i fornitori, i partner e la comunità degli sviluppatori, va a creare un modello di business nuovo denominato talvolta “Open API economy”.

I big player, come Facebook, Google, Amazon, etc.. hanno già impostato il loro modello di business, o almeno parte di esso, sulle API e lo standard OpenAPI, può andare ad accelerare questo processo.

Di seguito una semplice ipotesi di modello di business:

  • Accesso a dati e logiche di business fornito attraverso API pubbliche;
  • Gli sviluppatori esterni integrano le funzionalità API nelle loro applicazioni;
  • L’utilizzo delle API viene monetizzato con un modello “pay for use” (es. 0,1€ per ogni invocazione di un servizio)

In questo senso, le Open API diventano un prodotto e vanno a generare nuovi modelli di business intorno ad un ecosistema aziendale formato da fornitori, partner, comunità degli sviluppatori. Ad ognuno di questi interlocutori, possono essere esposti e forniti diversi livelli di accesso e/o funzionalità.
Si va in questo modo a valorizzare, ad esempio nel caso del pay per use, gli asset e le informazioni aziendali.

 

Come creare valore con le API: Alcuni Casi Studio

1. Amazon

Amazon ha iniziato la sua attività alla fine degli anni 90 come store online di libri estendendo poi progressivamente la sua attività a tutti, o quasi, i settori merceologici. Negli ultimi anni ha integrato il proprio modello di business andando a rivendere la propria infrastruttura sotto forma di risorse e servizi (API). E’ nato così il nuovo modello di business AWS – Amazon Web Services.

 

2. TIM Digital Store

Piattaforma Marketplace messa a punto da TIM, per la vendita di prodotti / servizi digitali, ma soprattutto per l’erogazione di servizi (API) sviluppati da terzi e rivenduti attraverso TIM Digital Store. Un esempio di azienda che rivende i propri servizi anche su Tim DS è Atoka.

 

3. Trenitalia

Proprio così! Anche Trenitalia mette a disposizione un set di API Rest attraverso le quali la comunità di sviluppatori può sviluppare delle soluzioni custom integrando i servizi esposti, come ad esempio l’APP “OrarioTreni ed altra APP simili. Da segnalare, l’iniziativa presente a questo link di documentazione delle API.

 

4. Nike+

api-nike+

Con Nike+, una piattaforma digitale “API-powered”, le API hanno cambiato il modello di business di Nike, supportando fitness, app corporate ed integrazione con i partner. Nike+ proietta l’azienda oltre lo spogliatoio, sui polsi, nel portafoglio e dentro una miriade di device portando il brand ed i prodotti dentro alle vite dei clienti.

 

5.TOMTOM SportsCloud

Quando un cliente TOMTOM si registra alla piattaforma, SportsCloud registra tutte le attività di corsa, nuoto, fitness, i dati sono memorizzati ed utilizzati per fornire servizi, incoraggiamenti, pianificazioni di attività ottimali, consigli di alimentazione, etc.. verso i clienti.
La piattaforma incoraggia lo sviluppo di applicazioni di terze parti che integrino e riutilizzino i dati raccolti all’interno delle proprie applicazioni.

 

6. Affirm

affirm-api
Consente di pagare, nel momento in cui si finalizza l’acquisto on-line, attraverso un prestito a 3, 6, o 12 mesi, esattamente come se si stesse pagando con PayPal.
L’applicazione riesce a calcolare i tassi d’interesse istantaneamente basandosi sulla social reputation e lo storico delle transazioni degli utenti, accorciando i tempi burocratici relativi al credit score statunitense (punteggio basato sulla responsabilità finanziaria), che spesso esclude ai Millennials la possibilità di ottenere un prestito o una carta di credito da un istituto finanziario tradizionale.
Affirm è gia “focalizzata” sull’integrazione eCommerce, ha realizzato un apposito plugin per la piattaforma Magento ed ha sviluppato un set di API documentate per permettere l’integrazione da parte di qualsiasi interlocutore.

 

Tutti questi esempi ci aiutano a capire che un set di API ed un relativo “Developer Portal” rappresentano l’elemento abilitante per qualsiasi iniziativa voglia essere portata avanti dal Business.

Costruire un progetto “Open” API: Gli asset informativi aziendali

Le fondamenta di un progetto aziendale “API” sono costituite dagli asset aziendali.

Nella prima fase dell’informatizzazione aziendale, l’unico asset software era il sistema ERP; ad esso, si sono aggiunti nel tempo una lunga serie di altri strumenti che collaborano tramite meccanismi di integrazione tra i quali: CRM, CMS, PIM, DAM, Piattaforme web, Storage di rete, Sistemi documentali, API Gateway.

Concentriamo l’attenzione sulle piattaforme di nuova concezione con particolare attenzione a PIM – Product Information Management, DAM – Digital Asset Management ed API Gateway – piattaforma di gestione ed esposizione delle API.
Attorno ad esse, è necessario introdurre, se non esistente, un sistema di autenticazione e profilazione centrale attraverso il quale fornire accesso ed autorizzazioni ai servizi esposti.

Gli asset aziendali PIM e DAM

PIM – Product Information Management, è un termine che indica i processi e le tecnologie per gestire centralmente le informazioni che descrivono i prodotti dal punto di vista del cliente.

Le soluzioni PIM permettono al marketing ed alle vendite di raggruppare ed organizzare in maniera coerente tutte le informazioni utili e declinarle con rapidità e precisione attraverso differenti canali distributivi: cataloghi stampati, siti internet, e-commerce, ERP.

In questo modo è possibile personalizzare e filtrare in automatico le informazioni relative a gamma di prodotti, prezzi e valute, descrizioni e traduzioni. Per Gestione Informazioni di Prodotto si intende la gestione “media-neutral” di tutte quelle informazioni sui prodotti e sull’azienda indirizzate verso diversi canali di pubblicazione.

Un PIM è sostanzialmente un gestore di dati non strutturati che permette l’aggiunta di attributi in maniera dinamica sull’entità prodotto.

La capacità di gestione di più entità rendono il PIM un DAM – Digital Asset Management.

Di conseguenza tale piattaforma diventa cruciale per la gestione di tutti le rappresentazioni digitali di entità aziendali che possono essere distribuiti tra i vari applicativi come eCommerce, B2B, ERP, Store Locator.

Un ottimo esempio di PIM e DAM è la piattaforma Open Source PIMCORE.

Gli Asset Aziendali API Gateway

L’ esposizione di API, richiede un middleware, denominato API Gateway, di governo delle API esposte con funzioni di:

  • Gateway (esposizione servizi): Autenticazione, Rate limiting, Validazione API, HTTP request logging
  • Analytics: Statistiche di utilizzo, Billing
  • Manager: Dev Portal, API management, Documentation, Partner Mgmt

Esistono moltissime piattaforme open source e/o commerciali, ecco alcuni esempi:

Di seguito uno schema architetturale ripreso dal tutorial di WSO2 :
api-manager-components

 

Considerazioni per un’Iniziativa “Open API” in Azienda

Ci chiediamo a questo punto quali siano i passi per guidare la trasformazione digitale ed introdurre le API in azienda; di seguito alcune considerazioni preliminari:

  • Quali dati o funzionalità applicative è possibile / opportuno esporre ai partner di business e di canale per rendere più facili le integrazioni di business?
  • Come si possono usare le open API per creare un vantaggio competitivo e produrre valore aggiunto per clienti, fornitori, partner?
  • Si dovrebbero modificare gli attuali accordi sottoscritti per l’utilizzo di dati e/o informazioni al fine di convertirli in “micro sottoscrizioni” verso API pubbliche pagate in modalità “pay per use”?
  • Come possono le open API aiutare gli sviluppatori esterni a portare innovazione di prodotto / servizio ed iniziative “fuori dagli schemi” all’interno dell’azienda?

Errori comuni da evitare

Una volta data una risposta alle domande sopra riportate, è importante tenere presente quali sono gli errori comuni da evitare in un progetto che prevede l’esposizione di API:

  • Scarsa identificazione delle API e confusione tra APIs e WebServices
  • Nessun progetto definito
  • Strategia aziendale non chiara
  • Scarso coinvolgimento del business e dei ruoli chiave
  • Scarsa comunicazione aziendale e/o nessuna KPI
  • Trattare il progetto API come un “progetto IT”

La lista precedente evidenzia, a mio parere in tutti i punti, quanto sia importante il coinvolgimento del management in ogni iniziativa di questo genere.

L’errore più comune è quello di pensare che l’IT da solo, possa portare avanti un progetto API e/o più in generale di trasformazione digitale senza il supporto del business e senza che questo non sia coerente con la strategia aziendale.

Dalla nostra esperienza, la difficoltà più grande è rappresentata dal cambio di approccio del management aziendale.

Concludendo ritengo che i top manager sono coloro che, una volta comprese le potenzialità legate all’esposizione delle API, possono facilmente immaginare e progettare nuovi modelli di business attorno ai dati e servizi esposti dalla propria azienda.

 

Fonti:

https://www.roguewave.com/products-services/akana/api-gateway

https://www.affirm.com/platforms/magento/

https://docs.affirm.com/Integrate_Affirm/Direct_API

 

Vuoi approfondire gli aspetti tecnici delle API gateway?

Leggi subito l’articolo di Daniele Fontani, CTO di Sintra Digital Business

 

API gateway: definizione, caratteristiche essenziali e un esempio pratico

Strumento indispensabile per moltissimi sviluppatori, le Application Programming Interface  sono la chiave d’accesso per realizzare architetture scalabili e manutenibili.  È il modo con cui ci  integriamo abitualmente  a applicazioni e piattaforme di vario tipo e con cui permettiamo a  terze parti di espandere le funzionalità dei nostri software.

Per molte aziende le api sono diventate un asset aziendale, con un valore tale da poter essere vendute.

Ad esempio, pensa a Google mappe. Integrare all’interno di un sito web la mappa di Google, e geolocalizzare la tua attività, è semplicissimo proprio grazie alle API, attraverso le quali lo sviluppatore può interagire con il programma.

In questo articolo, cercheremo di capire come valorizzare le nostre API e gestirle in maniera efficiente, utilizzando uno strumento aziendale: l’API Gateway.

La bella notizia è che questi concetti non servono solo ai grandi colossi, ma possono essere impiegati da tutte le realtà con ottimi risultati,  e portare valore nell’information tecnology.

Cos’è l’API gateway?

L’API gateway è lo strumento che ci permette d’intermediare i servizi ( o microservizi) ed esporli in maniera strutturata verso l’esterno.

Non c’è nulla di fantascientifico in un API-gateway: si tratta di applicazioni web molto sofisticate che agiscono da proxy rispetto alle interrogazioni dei client, monitorando e gestendo il traffico di chiamate.

I migliori prodotti sul mercato sono disponibili in versione Saas (software come servizio) o “on premise”, generalmente opensource.

Attraverso l’API-gateway è possibile esporre a terze parti le proprie API sviluppate internamente (magari solo una parte, o un accorpamento di più set diversi) gestendo in maniera efficiente l’autenticazione e monitorandone l’utilizzo.

Lo sviluppatore che desidera utilizzare le API può accedere ad un’area riservata per consultare la documentazione, oltre che a scaricare i contratti in formato Open API swagger o API blueprint.

Ciascuna chiamata è collegata ad un account e quindi possiamo misurare il numero di chiamate fatte, inserire dei limiti per evitare abusi oppure fatturare in base all’utilizzo.

L’API gateway all’interno dell’ IT

L’API gateway è importante anche nel caso in cui le API servono internamente all’IT. Infatti nella maggior parte delle situazioni, anche all’interno dell’IT abbiamo una moltitudine di servizi chiamati “punto-punto”.

Ogni servizio implementa il proprio sistema di logging e l’interazione è generalmente un sistema punto-punto. Ciascun applicativo interagisce con tutti gli altri, rendendo difficile il monitoraggio e la condivisione di documentazione.

Anche in questo contesto l’API gateway è una soluzione utile perché permette:

  • di centralizzare il punto di ingresso per le chiamate
  • di monitorare le risorse utilizzate
  • di gestire in maniera efficiente i log
  • di applicare politiche di throttling efficienti

Inoltre, in alcuni scenari fuori standard è un utile paracadute.

Ad esempio possiamo:

  • proteggere un servizio che è aperto a tutti
  • includere un sistema di tracing su un servizio che ne è sprovvisto
  • aggiungere campi fissi su alcune chiamate, astraendo l’utilizzo al chiamante

Quali sono le caratteristiche di un API-gateway?

Sistema di monitoring e analisi

L’API gateway deve essere in grado di registrare ogni singola chiamata, evidenziare ciò che è andato in errore.

Inoltre, le attività monitorate devono essere segmentate per applicativo o per insieme di applicativi. Infine, non necessaria, ma utile, la possibilità di evidenziare tramite grafici l’utilizzo delle risorse.

API Developer Portal

Uno degli obiettivi dell’API gateway è permettere ad ogni utilizzatore di essere indipendente ed autonomo nell’utilizzo delle API.

Questo non significa soltanto riuscire ad effettuare le chiamate ma soprattutto mettere a disposizione la documentazione e gli strumenti per capire come funzionano i servizi.

Deve essere possibile caricare i contratti swagger (Open API) o in altro formato ma soprattutto pubblicare la documentazione e le informazioni utili per gli sviluppatori.

DevOps Oriented

A prescindere dai vincoli tecnologici, il sistema scelto deve essere facile da rilasciare (deployment) e da gestire.

Ormai tutti gli applicativi installabili on-premise supportano Docker, il che li rende molto facili da gestire.

Tuttavia, in base alla propria esperienza e all’infrastruttura che si ha in azienda è importante sincerarsi che il prodotto scelto sia compatibile.

Quota e limiti sulle chiamate

Il sistema API gateway deve essere in grado di impostare limiti sulle chiamate (es. max 1000 richieste per ora per API key).

L’ideale sarebbe avere la possibilità di applicare tali limitazioni per user/ API key o per singolo endpoint.

Inoltre, nel caso in cui si voglia monetizzare o si pensi di volerlo fare in futuro, la possibilità di fatturare le chiamate.

Autenticazione

Questo è il punto più delicato di tutto il processo. La criticità nasce dal requisito che tutti i microservizi hanno necessità di conoscere l’identità del chiamante, così come l’API gateway. I micro servizi, infatti, devono sapere chi chiama in modo da profilare i dati di conseguenza (ad esempio per dare a Mario Rossi l’elenco dei suoi clienti).

Anche l’API gateway ha bisogno di sapere che una determinata API key è collegata ad uno specifico utente per conteggiarli le chiamate e far comparire all’interno del suo profilo utente le statistiche di utilizzo. Per questo occorre appoggiarsi ad un protocollo di autenticazione standard (es. jwt o oauh2) ed un identity server dedicato.

Il passo successivo è far svolgere all’identity server il ruolo di identity broker, che consente di propagare i token di accesso verso gli applicativi, tracciando le chiamate in maniera ottimale.

Questa configurazione non è fuori dagli schemi nella maggior parte dei casi, ma è importante che la soluzione scelta sia compatibile con questa configurazione, anche con un effort lato configurazione.

Mock API

In fase di sviluppo è importante avere una piattaforma che permetta di caricare file swagger (interfacce OpenAPI) o API blueprints per costruire servizi mock (un sistema per simulare le API).

Questo non è un requisito per l’utilizzo a regime, ma aiuta ogni qual volta dobbiamo creare applicativi nuovi. Possiamo, ad esempio, creare un utente “dev” su cui carichiamo i servizi fake. Così sblocchiamo il fornitore che può procedere con lo sviluppo dell’applicativo intanto che i nostri sviluppatori interni realizzano i servizi.

Notifiche ed eventi

Avere un sistema perfettamente funzionante ma isolato non è il massimo. Ci piacerebbe avere la possibilità di ricevere notifiche al verificarsi di determinati eventi.

Il modo in cui ci aspettiamo di avere questa feature è tramite webhook. Questo meccanismo, letteralmente uncino del web, ci permette di sviluppare un nostro applicativo e integrarci con i sistemi pre-esistenti.

Ad esempio possiamo inserire una riga di log sul nostro sistema ELK al verificarsi dell’errore o inserire un ticket su CRM quando un utilizzatore sfora la quota per operazioni commerciali.

Trasformazioni

Non è il motivo per cui va adottato un API-gateway, ma poter alterare richieste e risposte dei servizi per adattarle tra i vari formati è un vantaggio da tenere in considerazioni.

In ogni caso non aspettatevi di poter fare cose troppo elaborate, il caso d’uso tipico è inserire parametri costanti, aggiungere header, convertire i payload da json (JavaScript Object Notation) a xml.

Un esempio pratico

Dopo questa veloce panoramica sull’API gateway proviamo a mettere insieme un esempio pratico per valutare un caso d’uso reale.

Gli ingredienti della nostra ricetta:

  • API gateway: tyk
  • Identity server: redhat keycloak
  • App backend: Utilizziamo un cms headless, cockpit! Si tratta di un cms molto semplice che ci permette di mettere in luce diversi casi d’uso.
  • docker: utilizzato per far girare in locale tutti gli applicativi
Architettura Api gateway per l'esposizione di microservizi integrati tramite Oaut2

Architettura Api gateway per l’esposizione di microservizi integrati tramite Oaut2

Installazione e configurazione di tyck

Come API-gateway è stato scelto tyk che, oltre a soddisfare tutti i requisiti di cui abbiamo discusso, è facile da configurare oltre ad essere economico. E’ disponibile nella versione saas e onpremise, coprendo quindi la maggior parte dei casi d’uso che ci interessano.

Per l’installazione ho fatto riferimento al progetto di esempio opensource di tyk integrato dentro il nostro file yaml per Docker compose la dichiarazione delle immagini che compongono il gateway (dashboard, gateway, pump).

Per il setup ho utilizzato uno script bash che crea l’utente amministratore e apporta le configurazioni di base per riuscire ad accedere alla dashboard.

Docker-compose up

Accedendo alla url della dashboard http://localhost:5000 viene richiesta la licenza, che possiamo ottenere gratuitamente per fini non commerciali.

inserimento licenza su api gateway Tyck (gratuito per usi non commerciali)

inserimento licenza su api gateway Tyck (gratuito per usi non commerciali)

Dopo aver installato la chiave è necessario procedere alla configurazione, per evitare di salire a bordo macchina e lanciare gli script ho utilizzato uno script che utilizza le API e semplifica molto questa fase.

Sh setup.sh

Successivamente è possibile accedere con le credenziali scelte tramite script

Login su api-gateway Tyk

Login su api-gateway Tyk

Dashboard dell’api gateway tyk

Installazione e configurazione di keycloak

Per l’installazione di keycloak ho semplicemente utilizzato l’immagine doker rilasciata da redhat.

La configurazione di un client oatuh è banale e può essere effettuata replicando i seguenti passaggi, oppure importando la configurazione presente all’interno del codice sorgente del progetto github.

Keycloak, aggiunta di un nuovo client Oauth2

Keycloak, aggiunta di un nuovo client Oauth2

 

Keycloak, configurazione dei dati di autenticazione

Keycloak, configurazione dei dati di autenticazione

Keycloak, export configurazione del client Oauth2

Keycloak, export configurazione del client Oauth2

Installazione e configurazione di cockpit

Anche per cockpit abbiamo usato un’immagine docker già pronta. L’installazione è molto semplice e con pochi click riusciamo ad aggiungere l’entità “people”.

Cokpit,cms headless: Configurazione entità

Cokpit,cms headless: Configurazione entità

API gateway in azione

Il primo passo da fare è mappare gli endpoint che vogliamo esporre.

In questo esempio gli utenti finali utilizzano le API per effettuare le operazioni CRUD sulle entità presenti sul CMS. Per questo creiamo un API set, dichiarando esplicitamente quali metodi sono esposti.

E’ buona prassi segmentare gli endpoint esposti sulla base dell’applicativo, per riuscire ad individuare dove vanno a finire le richieste.

Mappiamo quindi /cockpit/ sul path complesso che viene utilizzato per le attività CRUD

http://cms:8080/api/collections/listCollections

In questo caso vogliamo semplificare il payload di cockpit che è strutturato in maniera troppo complessa per i nostri fini (il vero payload sta dentro un oggetto “data” che è completamente inutile”).

Configuriamo quindi la trasformazione del body della richiesta utilizzando le funzionalità di tyk:

Tyk, api gateway in azione: mappatura campi

Tyk, api gateway in azione: mappatura campi

Riferimenti

  • Il codice sorgente è disponibile su github.
  • Tyk.io : Api gateway disponibile in saas o premise.
  • Cockpit CMS: Cms Headless in PHP molto facile da installare e configurare.
  • Demo Tyk: demo rilasciata da Tyck per illustrare il funzionamento su docker, utilizzata come punto di partenza per questo progetto.

Hai bisogno di sviluppare un’API gateway per il tuo progetto digitale? Ti serve un supporto?

Event Planner and Scheduling di Sintra è ora App Ufficiale SharePoint!

E’ finalmente disponibile la Nuova App Sharepoint Event Planner and Scheduling interamente creata e sviluppata dal nostro Team Sharepoint. Scopri tute le sue funzionalità!

 

Event Planner and Scheduling Sharepoint AppIl nostro Team di Sviluppatori Specializzati SharePoint ha creato una nuova applicazione, Event Planner and Scheduling, per la programmazione e schedulazione degli eventi, approvata da Microsoft SharePoint ed attualmente presente sull’AppSource Ufficiale di SharePoint. Read more

User experience e mockup: un nuovo e importante progetto segna l’inizio della collaborazione con GE

Da oltre dieci anni contribuiamo al successo dei nostri clienti, realizzando siti internet, piattaforme web based e siti e-commerce di successo: la passione per il nostro lavoro, la professionalità che da sempre ci contraddistingue, così come la formazione continua delle nostre risorse, ci consentono ogni giorno di rispondere al meglio alle esigenze dei nostri clienti e alle nuove sfide poste dal mercato digitale.

Read more

Shinteck e Sintra Consulting presentano iOrderManager, la nuova app che fa muovere il business!

Da telefoni e dispositivi mobili particolarmente diffusi in ambito consumer, smartphone e tablet stanno conquistando anche il segmento business, rappresentando sempre più irrinunciabili strumenti di lavoro.
Più pratici dei moderni PC portatili, ma spesso altrettanto funzionali, estremamente efficaci per la fruizione di contenuti multimediali e per la navigazione in rete, i tablet dispongono di molte applicazioni che consentono alle persone di svolgere numerose attività lavorative anche in mobilità: dall’accesso a dati aziendali alla compilazione di documenti, dalla consultazione di cataloghi prodotti alla raccolta ed alla gestione degli ordini. Read more