video: https://www.youtube.com/watch?v=hf-8mlY5o-o
Che tu sia uno sviluppatore, un architetto software, un manager IT, uno studente di informatica o un professionista interessato all'evoluzione del software, questo talk è per te!
Faremo un viaggio nel tempo in cui attraverseremo i paradigmi API che hanno dominato il panorama negli anni, da CORBA a SOAP, fino a REST e OpenAPI. Analizzeremo i vantaggi e gli svantaggi di ogni paradigma e le loro implicazioni per l'architettura software. Esploreremo inoltre l'hype cycle di Gartner e la teoria dei corsi e ricorsi di Vico per comprendere meglio i cicli di adozione e sviluppo delle varie tecnologie.
Infine, ci concentreremo sull'API-first design, una metodologia emergente che pone l'API al centro del processo di sviluppo software. Discuteremo i benefici dell'API-first design e come può aiutare le aziende a creare software più flessibile, scalabile e riutilizzabile.
2. “Non è la più forte delle specie che
sopravvive, né la più intelligente, ma
quella più reattiva ai cambiamenti.”
CHARLES ROBERT DARWIN
3. Tre età distinte:
Età degli dei: dominata dalla religione e
dalla fantasia
Età degli eroi: dominata
dall'aristocrazia e dalla forza
Età degli uomini: dominata dalla
ragione e dalla legge
Le età si susseguono in un ciclo continuo: corsi
e ricorsi
La Provvidenza divina guida il corso della storia
L'uomo è l'artefice del proprio destino
La teoria dei corsi e ricorsi di Vico
4. Innovazione scatenante: Nasce una
nuova tecnologia
Picco di aspettative eccessive:
Entusiasmo e clamore eccessivi
Gola della disillusione: Le aspettative
irrealistiche si scontrano con la
realtà
Risalita della produttività: Adozione
graduale della tecnologia
Plateau di produttività: La tecnologia
diventa stabile e diffusa
Hype Cycle di Gartner
6. "LA TORRE DI BABELE" DI PIETER BRUEGEL IL VECCHIO (1563)
"LA TORRE DI BABELE" DI PIETER BRUEGEL IL VECCHIO (1563)
7.
8.
9.
10.
11.
12. Common Object Request Broker Architecture
ORB = Object Request Broker
IDL = Interface Description Language
Skeleton = generato da IDL Compiler fa
marshalling
Stub = generato da IDL Compiler fa unmarshalling
# HelloApp.idl
module HelloApp
{
interface Hello
{
string sayHello();
oneway void shutdown();
};
};
13.
14.
15.
16.
17.
18.
19.
20. SIMPLE OBJECT ACCESS PROTOCOL
SIMPLE OBJECT ACCESS PROTOCOL
WEB SERVICES DESCRIPTION LANGUAGE
WEB SERVICES DESCRIPTION LANGUAGE
21.
22.
23.
24. 2002 THE JEFF BEZOS API MANDATE
D'ora in poi, tutti i team esporranno i propri dati e
funzionalità attraverso interfacce di servizio.
I team devono comunicare tra loro utilizzando queste
interfacce.
Non sarà consentita alcuna altra forma di comunicazione tra
processi: nessun collegamento diretto, nessuna lettura
diretta del datastore di un altro team, nessun modello di
memoria condivisa, nessun backdoor di alcun tipo. L'unica
comunicazione consentita è tramite chiamate all'interfaccia
di servizio tramite la rete.
25. 2002 THE JEFF BEZOS API MANDATE
Non importa quale tecnologia usano. HTTP, Corba, Pubsub,
protocolli personalizzati: non importa.
Tutte le interfacce di servizio, senza eccezioni, devono
essere progettate da zero per essere esternalizzabili. Ciò
significa che il team deve pianificare e progettare per poter
esporre l'interfaccia agli sviluppatori nel mondo esterno.
Nessuna eccezione.
Chiunque non lo farà sarà licenziato.
Grazie; buona giornata!
26. API-First Company
Un'API-first company è un'azienda che adotta un
modello di sviluppo software in cui le API sono
considerate un elemento fondamentale e strategico.
In questo modello, le API vengono progettate e
sviluppate prima di qualsiasi altra componente
dell'applicazione, come l'interfaccia utente o il
backend.
27. API-First Company - Principi
Priorità alle API: Le API sono considerate prodotti in sé,
non solo come strumenti di integrazione. Vengono
progettate con cura per essere facili da usare, affidabili e
sicure.
Design API-first: Le API vengono progettate prima di
qualsiasi altra componente dell'applicazione. Questo
approccio garantisce che le API siano ben strutturate e
facili da usare.
Cultura API-first: L'intera azienda, dagli sviluppatori ai
dirigenti, comprende l'importanza delle API e si impegna a
creare un ecosistema API di alta qualità.
37. API-FIRST DESIGN - Steps
Definizione del tipo di API (WEBSOCKET REST ecc...)
1.
Definizione della semantica del dominio dell'API (bounded
context)
2.
definizione dell'API con le sue risorse principali(OPENAPI,
SPOTLIGHT)
3.
GENERAZIONE FAKER FACTORY E MockSERVER dell'API
(WIREMOCK)
4.
test continuo degli endpoint rispetto al Blueprint (PACT.IO)
5.
Caricamento NELL'API CATALOG/DEVELOPER PORTAL
6.
GENERAZIONE STUB E CLIENT (OPENAPI GENERATOR)
7.
Implementazione funzionalità
8.
38. API-FIRST DESIGN - Vantaggi
velocità e agilità: Le modifiche alle API possono essere implementate e
distribuite in modo rapido e indipendente dal resto dell'applicazione,
favorendo un ciclo di sviluppo più rapido.
innovazione: Le API aprono la porta a sperimentare nuove idee e modelli
di business, favorendo l'innovazione. L'esposizione di funzionalità
attraverso API permette di esplorare nuovi mercati e canali di
distribuzione.
scalabilità: La natura disaccoppiata delle API permette di distribuire i
carichi su più server e di aggiungere nuove funzionalità in modo
modulare.
collaborazione: Le API facilitano la collaborazione tra team interni ed
esterni, permettendo di integrare facilmente l'applicazione con altri
sistemi.
qualità: L'approccio API-first favorisce un design più modulare e ben
strutturato del software.
39. API-FIRST DESIGN - Svantaggi
curva di apprendimento: L'approccio API-first richiede che gli
sviluppatori acquisiscano nuove competenze relative alla progettazione e
allo sviluppo di API. Questo può richiedere tempo e risorse.
complessità aggiuntiva: La progettazione e la gestione di un ecosistema
di API può essere complessa, richiedendo una pianificazione attenta e una
governance efficace.
costi iniziali: L'investimento iniziale in progettazione, documentazione e
sviluppo di API può essere significativo.
manutenzione continua: Le API necessitano di manutenzione continua per
garantirne la sicurezza, l'affidabilità e l'aggiornamento con nuove
funzionalità.
dipendenza da tecnologie esterne: L'utilizzo di API esterne può rendere
l'applicazione vulnerabile a problemi di disponibilità, sicurezza e
conformità.
40. Ognuno di noi ha, da qualche parte nel suo cuore, il sogno
di realizzare un mondo vivo, un universo. Quelli di noi che
sono stati formati come architetti hanno questo desiderio
forse al centro stesso della nostra vita: che un giorno, da
qualche parte, in qualche modo, costruiremo un edificio
che sia meraviglioso, bello, mozzafiato, un luogo dove le
persone possano camminare e sognare per secoli.
Christopher Alexander. The Timeless Way of Building
Grazie