bbva-open4u-api-first

Il potere delle API

Negli ultimi anni lo sviluppo di servizi web disponibili tramite API ha generato una vera e propria economia di prodotti derivati costruiti usando i servizi altrui come mattoncini base. Il paradigma di strutturare un’applicazione introducendo un livello di funzioni consistente da semplice soluzione tecnica è diventato un vero e proprio canale di vendita alternativo per i propri servizi.

Pensandoci bene molte applicazioni web, anche di nicchia, possono trarre enormi benefici dall’esposizione dei propri servizi a terzi. Questo permette infatti ad altri programmatori di creare i cosiddetti “mashup”, siti e app derivate che nel tempo possono portare una fetta considerevole di ricavi ai fornitori di servizi primari.

Per favorire la diffusione della propria API è necessario considerare gli sviluppatori come un segmento di mercato importante. Ha senso quindi parlare di progettazione API-first come un’insieme di tecniche ed azioni volte a rendere i propri servizi disponibili ai programmatori di applicazioni, tenendo in conto dei loro bisogni in termini di usabilità, stabilità e documentazione.

Questo approccio svincola l’API dal suo contesto tecnico (es. soluzione architetturale per risolvere un problema specifico) facendola diventare uno strumento importante per diffondere l’uso del proprio servizio ed accrescere la propria presenza sul mercato.

API-first, i primi passi

Si parla spesso di Esperienza Utente (UX – User eXperience) in riferimento alle caratteristiche che ha un prodotto di essere acceduto dagli utenti, nel caso di un’API ha senso quindi parlare di Esperienza Sviluppatore (DE – Developer eXperience). Ottenere una buona developer experience è fondamentale per garantire il successo della propria API presso il segmento di riferimento, ovvero gli sviluppatori.

Una api a questo punto può essere vista come un prodotto software qualsiasi, deve essere ben progettata, possibilmente andando incontro a standard (anche “de facto”) già consolidati nel particolare settore operativo, deve possedere una documentazione chiara e supportata da esempi, deve essere sviluppata tenendo presente obiettivi di qualità e quindi includere nel processo di sviluppo meccanismi di testing adeguati.

Per ottenere successo nell’arena delle API è bene tenere presente alcuni obiettivi di natura generale:

  • Time-to-market rapido
    Meglio essere presenti rapidamente sul mercato con un prodotto semplice ma efficace che arrivare tardi con un prodotto completo ma complesso
  • Allettare gli sviluppatori
    Sempre più spesso sono gli sviluppatori interni ad una azienda che hanno il potere decisionale su quale tecnologia andare ad usare come fondamenta per i prodotti aziendali. E’ quindi necessario non sottovalutare la Developer Experience
  • Tecnologia e metodologie di sviluppo agili
    Le soluzioni complesse spesso sono potenti e sono in passato state usate da grossi “early adopters”. In particolare le tecnologie SOAP e WSDL conoscono tutt’oggi larga applicazione in settori enterprise, anche se molte nuove grandi realtà si sono spostate su paradigmi molto più semplicemente comprensibili ed implementabili, mantenendo un approccio “agile” allo sviluppo prevedendo quindi rilasci rapidi e frequenti con una forte componente di “design for change”

 

Metodologia di sviluppo

La metodologia di sviluppo orientata alle API è ovviamente una reinterpretazione specializzata di tecniche di ingegneria del software consolidate. Per semplicità possiamo prevedere le fasi seguenti

  • Pianificazione
    Avere le idee chiare sul servizio e le sue caratteristiche nodali è sempre un’ ottimo punto di partenza
  • Progettazione
    Cominciare a elencare i dettagli dell’oggetto per capirne la fattibilità, simularne l’utilizzo e evidenziare i principali flussi di lavoro
  • Congelamento dei requisiti
    Una volta identificate le funzionalità principali, si procede alla formalizzazione della API anche mediante l’impiego di strumenti semi-automatici (RAML, Swagger) capaci di fornire una rappresentazione formale delle funzionalità a supporto delle successive fasi di produzione del codice e di documentazione
  • Controllo di consistenza
    A questo punto è necessario controllare la consistenza della API rispetto ai casi d’uso evidenziati fino ad ora, appianando eventuali discrepanze tra le funzionalità (es. segnature ed arietà delle funzioni) contribuendo a migliorare l’esperienza d’uso dello sviluppatore. In questa fase è inoltre possibile realizzare i test automatizzati delle varie funzionalità esposte dalla API
  • Implementazione
    Grazie alle precedenti fasi si hanno adesso tutti gli elementi necessari per permettere una implementazione agevole delle componenti del nostro sistema. Il lato server può essere realizzato anche inizialmente mediante l’uso di funzioni abbozzate che siano compatibili a livello di invocazione ed output con le specifiche, ma la cui logica interna sia ancora in divenire (stub). Il lato client può essere sviluppato in parallelo sulle varie architetture target poichè l’unico punto di interazione tra il sistema ed il cliente è la API stessa, di cui disponiamo tutti i dettagli

 

Questi passi possono essere ripetuti in più iterazioni volte a raffinare il prodotto dopo aver tratto gli insegnamenti di ritorno dalla comunità di utenti.

Lascia un commento