Modifiche alle API

Changelog di API interne: cosa cambia per l'altro team

6 min di lettura

Ogni altro articolo di questo hub presuppone che chi chiama un’API sia fuori dall’azienda: la sviluppatrice di una cliente, una partner, qualcuno che ha trovato la documentazione da solo. Molte API hanno un tipo di chiamante completamente diverso, un team nella stanza accanto o a due piani di distanza, e questo cambia il calcolo di cosa un changelog gli deve, perché un messaggio Slack lo raggiunge e di solito non viene mai aperto un ticket di supporto. La maggior parte dei team ne conclude che le API interne non hanno bisogno di un changelog. Quello di cui hanno davvero bisogno è uno diverso.

Cosa rende diverso il changelog di un’API interna da quello di una pubblica?

Il pubblico è raggiungibile direttamente, il che elimina il motivo principale per cui esistono la maggior parte dei changelog di API pubbliche: trasmettere a chiamanti che non si possono contattare individualmente. Il team proprietario di un’API interna di solito sa esattamente quali altri team la chiamano, a volte fino al servizio specifico. Questo rende un messaggio mirato, non un feed pubblico, la scelta predefinita naturale, ed è per questo che le API interne finiscono così spesso senza alcun changelog: il team proprietario avvisa i due o tre team che ricorda, assumendo che questo copra tutti.

Changelog di API pubblicaChangelog di API interna
Chi lo leggeQualsiasi chiamante esterno, per lo più irraggiungibile direttamenteUn insieme piccolo e di solito noto di team interni
Canale predefinitoUna pagina e un feedUn messaggio ai team chiamanti, idealmente anche una pagina
Rischio maggioreUn chiamante si perde completamente la voceIl team proprietario dimentica un chiamante di cui non ricorda l’esistenza
Cosa sostituisce “non sappiamo chi ci chiama”Niente; pubblicare ampiamenteUn registro reale dei chiamanti, tenuto aggiornato

Perché “avviseremo semplicemente i team che ci chiamano” fallisce?

Perché l’insieme dei chiamanti non è mai così piccolo o statico come lo ricorda il team proprietario. Un servizio costruito per un consumatore guadagna un secondo chiamante sei mesi dopo, tramite un’integrazione che nessuno ha annunciato, e la lista mentale “chi ci chiama” del team proprietario ora è sbagliata senza che nessuno se ne accorga. Il fallimento è ordinario e comune, il risultato predefinito dell’affidarsi alla memoria invece che a un registro, non il segno che qualcuno è stato disattento. Cos’è un breaking change copre come decidere se un cambiamento di API conta come rompente in primo luogo; il caso interno aggiunge una seconda domanda più difficile sopra quella, ovvero sapere chi avvisare.

Un’API interna ha bisogno comunque di una pagina di changelog in stile pubblico?

Di solito sì, anche se il canale primario è diretto. Una pagina dà al messaggio diretto qualcosa a cui collegarsi, così la notifica può essere breve (“breaking change su /v2/accounts, dettagli qui”) invece di provare a portare l’intera spiegazione in un messaggio di chat che scorrerà via. Diventa anche ciò che un nuovo team, o uno che si è perso il messaggio diretto, può controllare quando la sua integrazione si rompe e cerca di capire perché. La pagina non deve essere rifinita o pubblica; deve essere collegabile e deve sopravvivere al thread Slack che l’ha annunciata.

Chi mantiene davvero l’elenco dei chiamanti?

Il team proprietario, e va trattato come un artefatto reale, non come conoscenza tribale. La versione più economica è un file nel repository stesso dell’API, un breve elenco di servizi consumatori con una responsabile per voce, aggiornato ogni volta che viene costruita una nuova integrazione, la stessa disciplina di qualsiasi dichiarazione di dipendenza. L’alternativa, chiedere in giro prima di ogni breaking change, funziona finché una volta qualcuno non si dimentica di chiedere alla persona giusta, e un’API interna che si rompe silenziosamente per un team è un incidente più piccolo di uno pubblico, ma resta un incidente, di solito scoperto dal reperibile di quel team stesso piuttosto che dalla proprietaria dell’API.

# consumers.yml
- service: billing-service
  owner: "#team-billing"
  since: 2026-03-01
- service: reporting-pipeline
  owner: "#team-analytics"
  since: 2026-06-14

Un file così trasforma “chi dobbiamo avvisare” da una domanda in una ricerca. Strumenti costruiti esattamente per questo problema, come il catalogo servizi di Backstage, modellano le API come entità di prima classe con consumatori dichiarati per lo stesso motivo: una volta che un’organizzazione ha abbastanza servizi interni, la memoria di nessuno su chi chiama cosa resta accurata da sola, e qualcosa deve tenere il registro al suo posto. La documentazione dello strumento che già usate internamente è di solito il posto giusto da controllare prima di costruirne uno su misura.

Cosa appartiene a una voce di changelog interna che una pubblica non avrebbe bisogno?

Più specificità operativa, perché chi legge è un’altra ingegnera che agirà su questo all’interno della stessa infrastruttura, non lo leggerà come un riassunto. In quali ambienti è live il cambiamento e quando, perché i servizi interni spesso vengono promossi attraverso stadi che un chiamante pubblico non vede mai. Se il cambiamento richiede un aggiornamento di configurazione o di libreria client lato consumatore, formulato come un comando se ne esiste uno. E, poiché i chiamanti interni spesso possono coordinare la correzione direttamente con il team proprietario, un contatto nominato invece di un canale di supporto: “avvisa @maria se questo rompe qualcosa” è una riga perfettamente ragionevole in una voce interna e una strana in un changelog di API pubblica.

Questo vale allo stesso modo per un changelog dentro un monorepo?

Acuisce lo stesso problema invece di sostituirlo. Changelog monorepo copre quando un pacchetto ha bisogno del proprio changelog; un’API interna che è uno dei tanti pacchetti in un monorepo ha comunque bisogno che i suoi consumatori siano tracciati esplicitamente, perché condividere il repository con chi la chiama non significa che questi noteranno un cambiamento a meno che qualcosa non glielo indichi. La vicinanza nel repo non è la stessa cosa della vicinanza nell’attenzione.

FAQ

Un’API solo interna ha bisogno di un changelog se ha un unico chiamante? A malapena, e un messaggio diretto a quell’unico team di solito basta. Il changelog si giustifica appena c’è più di un chiamante, o appena l’elenco dei chiamanti ha sorpreso una volta il team proprietario, perché quello è il segnale che la memoria da sola non è più affidabile.

I cambiamenti di API interni dovrebbero passare per la stessa revisione di quelli pubblici? La formulazione può essere più leggera, perché chi legge è una collega e non una chiamante esterna, ma la decisione se un cambiamento è rompente merita la stessa cura in entrambi i casi. Una chiamante interna ha comunque codice in produzione che dipende dal comportamento precedente.

Come si scopre chi chiama un’API interna se non è mai stato tracciato? I log del server o i dati di traffico di una service mesh sono la risposta onesta se non è mai stato mantenuto un registro dei consumatori; tratta quella scoperta come il momento di iniziarne uno, non come una pulizia una tantum.

Un messaggio Slack basta, o un cambiamento interno ha comunque bisogno di una voce di changelog formale? Entrambi, per qualsiasi cosa non sia puramente additiva. Il messaggio è ciò che viene letto in tempo; la voce è ciò che un team che indaga un problema settimane dopo, e non ha mai visto il messaggio, può comunque trovare.


Le affermazioni tecniche di questo articolo non sono state verificate in modo indipendente. Se qualcosa non è corretto, faccelo sapere e lo correggeremo.

Correlati su changeloop: Documentazione per sviluppatori, Strumenti di changelog a confronto

changeloop
Il team che costruisce un changelog che chiude il cerchio. I tuoi utenti chiedono, il tuo team rilascia, chi ha chiesto lo viene a sapere.