Cosa sono, a cosa servono e differenza tra API, Cloud API e RESTful API

Cosa sono, a cosa servono e differenza tra API, Cloud API e RESTful API

API

Le API (Application Programming Interface) sono dei set di comandi, funzioni, protocolli e oggetti che i programmatori possono utilizzare per creare software o interagire con sistemi esterni. Forniscono agli sviluppatori comandi standard per l’esecuzione di operazioni comuni in modo che non debbano scrivere il codice da zero, favorendone quindi il riuso. Sono degli strumenti di programmazione che le maggiori software house e industrie del mondo informatico (come Microsoft, Google e Facebook) mettono a disposizione degli sviluppatori per facilitare il loro compito nella realizzazione di applicazioni di vario genere. Le API sono quindi interfacce software che ottimizzano lo sviluppo di un’applicazione o di un servizio per l’elaborazione dei dati. Spesso gli sviluppatori possono importare o integrare le API in una libreria di codice esistente tramite i file di intestazione. Con l’avvento dei servizi Web, le API vengono largamente utilizzate per accoppiare questi ultimi con software di terze parti e di conseguenza, con questa evoluzione della tecnologia, le aziende e le organizzazioni tecnologiche hanno spostato, o almeno hanno cercato di spostarsi, verso un modello di architettura orientata ai servizi (SOA, Service Oriented Architecture).

Cosa sono, a cosa servono e differenza tra API, Cloud API e RESTful API

Questo modello consente lo sviluppo di servizi Web, utilizzando linguaggi di programmazione orientati agli oggetti che gli sviluppatori possono chiamare e riutilizzare a seconda dei casi. L’API di Google Maps è un esempio di API “Web-based”: essa consente agli sviluppatori di chiamare e utilizzare questo servizio all’interno della loro applicazione o sito web.
Per sviluppare, pubblicare e utilizzare correttamente le API, gli sviluppatori devono seguire degli standard; questi ultimi sono costituiti da una struttura di base dettata dal linguaggio di programmazione per cui è stata creata l’API, tenendo conto, d’altra parte, della natura del servizio stesso. Ad esempio, sussistono sostanziali differenze a seconda dell’entità che usufruirà dell’interfaccia: se l’API è costruita per il consumo lato server, il servizio deve essere costruito per prestazioni elevate e per un’elaborazione sicura, invece, gli sviluppatori di API lato client si concentrano naturalmente sull’interfaccia utente, l’estetica e l’aspetto dell’applicazione.
Oggi tra le varie tendenze di utilizzo delle API, una delle più seguite, per quanto riguarda il suo impiego nel web e nel cloud computing, è quella che prevede l’utilizzo dei principi REST, particolarmente vantaggiosi per la loro flessibilità e versatilità.

Un punto molto importante è la documentazione delle API, invero, senza di questa sarebbero praticamente inutilizzabili, dal momento che risulterebbe difficile comprenderne l’utilizzo e le funzionalità. I vantaggi principali delle API, infatti, derivano dalla facilità nel loro utilizzo e gestione rispetto ai tradizionali metodi di integrazione diretta. Questo aspetto non sempre è soddisfatto appieno: esse possono risultare non sufficientemente veloci ed economiche rispetto ad i metodi (ormai obsoleti) di integrazione a basso livello, come ad esempio accadde nelle prime generazioni sviluppate. Ciò è dovuto al fatto che gli sviluppatori spesso hanno ancora bisogno di comprendere appieno la manipolazione e la gestione delle API, necessitando quindi di documentazioni molto lunghe e dettagliate che allungano la durata di sviluppo del software. Tuttavia le aziende più innovative hanno sviluppato e continuano a migliorare una nuova generazione di API intelligenti e agili, cercando di massimizzarne i vantaggi. Attraverso l’utilizzo dell’architettura REST o SOAP, ad esempio, si è riusciti a creare dei sistemi più facilmente ‘lavorabili’ e quindi flessibili. Questi sono assimilabili ad una sorta di livelli middleware, che rendono molto semplice l’integrazione di diverse parti di software semplicemente disaccoppiandole, permettendone quindi l’integrazione senza rendere necessario conoscerne i dettagli.

Tuttavia le API sono tanto importanti per la programmazione, quanto per il business di una azienda. Tale importanza è nota alle più grandi aziende fornitrici di API, che le distribuiscono in base a ricercati piani di marketing, al fine di raggiungere i propri obiettivi di business. Ad esempio, in base alle politiche di rilascio, un’azienda può decidere di incentivare pochi ma conosciuti sviluppatori nel caso in cui essa risulti essere interessata a sviluppare un numero esiguo di applicazioni attorno alla propria, oppure tanti ma sconosciuti, se ne vuole ampliare la portata, i ricavi e la fidelizzazione degli utenti. Per questo motivo solitamente la distribuzione delle API avviene attraverso canali ufficiali e, in alcuni casi, in forma ristretta. Infatti ogni azienda o software house può decidere e sfruttare un proprio piano di distribuzione in accordo con i propri interessi. Alcune custodiscono ‘gelosamente’ le proprie API, in modo da poter controllare il numero di persone e case sviluppatrici che ne hanno accesso, altre al contrario, come ad esempio Windows, ne favoriscono una maggiore diffusione. Il caso di Windows è esemplare, infatti l’azienda è cosciente del fatto che maggiore è il numero di software esistenti per il suo sistema operativo, maggiori sono le possibilità di riuscire a vendere il sistema operativo stesso.

In conclusione è importante notare il modo in cui il cloud, insieme alle più recenti tecnologie ‘mobile’, ha modificato le nostre abitudini e le nostre aspettative: si cercano sempre più informazioni e risposte quando ci servono e dove ci servono. Questo cambia non solo le modalità di interazione, ma anche di relazione, portando cambiamenti significativi rispetto agli ecosistemi aziendali e sociali: in questo contesto le API in informatica stanno diventando un elemento chiave del progresso, perché portano una componente di integrazione e di scambio delle informazioni che rende più veloci gli accessi, assicurando nel contempo scalabilità, sicurezza e flessibilità delle piattaforme applicative realizzate.

Il confronto: REST e SOAP

Nello scenario odierno del web, la concorrenza nell’utilizzo delle API è tra il protocollo SOAP (Simple Object Access Protocol) e REST. Anche se l’obiettivo dei due approcci è pressoché identico, cioè l’adozione del Web come piattaforma di elaborazione, la loro visione e la soluzione suggerita sono totalmente differenti. La differenza tra i due deriva dalle loro radici: SOAP si è evoluto dalle tecnologie di chiamata a procedura remota utilizzate per estendere la programmazione modulare sulle connessioni di rete e REST dai componenti di internet visti come “risorse”. Quindi, mentre REST propone una visione del Web incentrata sul concetto di risorsa, i SOAP Web Service mettono in risalto il concetto di servizio. Infatti:

  • Un Web Service RESTful è custode di un insieme di risorse sulle quali un client
    può chiedere le operazioni canoniche del protocollo http.
  • Un Web Service basato su SOAP espone un insieme di metodi richiamabili da remoto da parte di un client.

Vi sono molte differenze tra questi due approcci che comportano vantaggi e svantaggi dell’uno rispetto all’altro, tuttavia questi non saranno trattati in questo paragrafo. Un confronto più dettagliato sarà infatti riportato in seguito, dopo aver fornito al lettore una conoscenza più approfondita dei principi proposti dallo stile architetturale REST.

Cloud API

Una Cloud API è un tipo di API che consente lo sviluppo di applicazioni e servizi utilizzati per il provisioning di hardware, software e piattaforme cloud. Funge da gateway o interfaccia che fornisce agli utenti, direttamente o non, l’infrastruttura del cloud e i servizi software.
Questa tipologia di API è il componente principale di qualsiasi soluzione di cloud pubblico e generalmente si basa principalmente sui framework REST e SOAP.
Ci sono differenti modi e aree in cui si necessita dell’introduzione di API nel processo del cloud computing e questo dipende, come già accennato in precedenza, dalla soluzione adottata. Infatti possiamo identificare diverse tipologie di API :

  • API SaaS (a livello di applicazione): il loro obiettivo è quello di aiutare a collegare
    il livello dell’applicazione con il cloud e l’infrastruttura IT sottostante.
  • API PaaS (a livello di servizio): queste API di servizio sono progettate per fornire accesso e funzionalità per un ambiente cloud. Ciò significa integrazione con database, sistemi di messaggistica, portali e persino componenti di archiviazione.
  • API IaaS (a livello di infrastruttura): queste API aiutano a controllare specifiche risorse cloud e la loro distribuzione.

RESTful API e Cloud

Oggigiorno si crede che presto l’utilizzo dei principi RESTful, in particolare il loro impiego nel cloud computing, potrebbe diventare una ‘regola’. Inatti, uno degli aspetti più importanti che portano a pensare ciò è il principio di una connessione stateless, che permette di poter reindirizzare ad un qualunque componente della rete la richiesta, senza doversi preoccupare di un eventuale stato della connessione/trasmissione dovuto a precedenti transazioni, favorendo quindi la possibilità di una divisione del carico sulla rete, in modo da adattarla più facilmente a possibili cambiamenti.
Un’ulteriore aspetto è la comprensibilità e la semplicità delle API RESTful, infatti, esiste una vasta gamma di cloud API che potrebbero però risultare difficili da capire e da utilizzare per gli sviluppatori, soprattutto all’interno di un contesto così tecnico e complesso come il cloud computing. Per questo motivo le ben progettate e note API REST possono attirare gli sviluppatori ad usarle maggiormente, in particolare nell’attuale mercato aperto, dove i servizi Web sono in competizione gli uni contro gli altri. In effetti, gli sviluppatori devono innanzitutto comprendere l’utilizzo delle API in fase progettazione per poter sviluppare sistemi che le adoperino. Perciò, nella progettazione e sviluppo di API REST, la loro comprensibilità e riusabilità sono due importanti caratteristiche di qualità.

Tuttavia, le API RESTful sono una tecnologia relativamente nuova e richiedono agli sviluppatori una conoscenza approfondita delle attuali tecnologie Web 2.0 (quella fase del web, successiva al Web 1.0, caratterizzata dalla possibilità degli utenti di interagire e modificare i contenuti delle pagine web online). Per questo motivo alcune organizzazioni, tra cui quelle che non necessitano l’utilizzo di cloud, potrebbero ritenere non necessario utilizzare Web Service di tipo REST. D’altre parte la maggior parte delle aziende che oggi fanno uso dei servizi di cloud computing utilizzano REST: l’utilizzo di API RESTful basate sul Web risulta essere, infatti, la soluzione più logica e immediata per il consumo remoto di servizi, che sono per natura distribuiti.

Negli ultimi tempi questa tipologia di API associate al cloud si è largamente diffusa, infatti, in un mondo che ha cambiato negli anni i suoi paradigmi, cercando forza lavoro sempre più remota e mobile e con una connettività Internet onnipresente, esse sono diventate essenziali.
La maggior parte di queste API RESTful si rivolgono a soluzioni del tipo SaaS e PaaS, che si concentrano sulla fornitura di soluzioni software per i consumatori a differenza di IaaS, la quale riguarda, invece, servizi di infrastruttura, tuttavia alcuni dei maggiori fornitori di cloud offrono API di questo tipo per gestire e amministrare questa tipologia di ambiente.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *