Deprecare un'API Web: best practice?


18

Alla fine è necessario deprezzare parti dell'API Web pubblica. Tuttavia sono confuso su quale sarebbe il modo migliore per farlo. Se hai una grande base di app di terze parti, il semplice strappo delle vecchie versioni dell'API sembra il modo sbagliato di farlo poiché quasi tutte le app fallirebbero durante la notte. Tuttavia, non puoi mantenere le API di web antiche disponibili per sempre in quanto potrebbero essere obsolete o ci sono cambiamenti significativi che rendono impossibile lavorarci.

Quali sono alcune delle migliori pratiche per deprecare le vecchie API web?

Risposte:


17

Sembra che il poster originale sia già stato efficacemente, ma ha deprecato in modo informale la loro API (tutto ciò che viene chiamato "vecchia API"). Tuttavia, fino a quando non viene annunciato e agli utenti viene comunicato che un'API è obsoleta, non è formalmente obsoleta.

L'API obsoleta è una fase temporanea e inattiva del codice. Sono gli ultimi riti. Questo è il periodo che consente agli utenti / consumatori di riconfigurare le proprie app per una nuova API e di salutare con affetto, facendo pace con l'API. Alcune API potrebbero rimanere più a lungo di altre, ma a questo punto sappiamo che il loro tempo non è lungo.

L'API eliminata è un funerale di codice. Non c'è altro che possa fare, ma adeguatamente disposto e opportunamente memorizzato.

Molti sviluppatori di API e servizi optano per i funerali di codice piuttosto che eseguire gli ultimi riti; tuttavia, penso che sia alquanto rischioso. Se è stato fatto qualche tipo di servizio o promessa di supporto quando l'API / servizio è stato inizialmente adottato o tramite rinnovo, potresti voler onorare tale impegno per un periodo di tempo ragionevole prima di eseguire il funerale.

Per le librerie non di servizio, penso che una versione di rilascio principale, indipendentemente dal periodo di tempo, sia probabilmente un periodo più che accettabile ed equo di compatibilità con le versioni precedenti garantite. Oltre a ciò dipende dall'influenza e dalle pressioni esercitate dagli utenti per estendere la sua vita oltre quel periodo. E non essere sorpreso se di tanto in tanto ci sono obiezioni a causa di insostituibili dipendenze di terze parti bloccate nel limbo e legate a determinate versioni di determinate piattaforme.

Per quanto riguarda i servizi, sospetto che potresti voler esaminare un periodo di sei mesi o di un anno, semplicemente a causa della varianza tra chi e come un servizio può essere consumato e la corrispondente varianza del ciclo di sviluppo da consumare progetto a consumare progetto - molti progetti che potrebbero consumare il tuo servizio potrebbero comunque essere progettati in maniera anticipata e potrebbero pianificare un ciclo di rilascio superiore a un anno. La maggior parte delle opinioni degli sviluppatori dall'esterno suggeriscono che coloro che hanno pianificazioni lunghe sono responsabili del rispetto dei tempi del ciclo e che i progetti che richiedono un ciclo lungo dovrebbero adottare un ciclo di rilascio più rapido, e potrebbe essere vero. Ma alla fine la data di cancellazione è qualcosa che devi negoziare con gli utenti.

Una strategia valida ma non a prova di proiettile potrebbe essere quando si annuncia la deprecazione, evidenziare il periodo di tempo per l'intenzione di eliminare, insieme a una richiesta di commento o obiezione in un formato di sondaggio delle sezioni API in questione. Se non disponi di un elenco di contatti degli utenti perché il tuo servizio opera con accesso [semi] anonimo, potresti prendere in considerazione la ricerca di registri per utenti frequenti e attivi e inviare la notifica all'host o all'amministratore del dominio per inoltrarli come meglio ritiene opportuno.


Wow, risposta molto istruttiva
TheLQ

7

La maggior parte delle API Web che utilizzo (da aziende come Google, Yahoo! e Microsoft) hanno un periodo di "tramonto". Gli sviluppatori vengono informati entro un termine ragionevole (diciamo 3-6 mesi) delle funzionalità che verranno ammortizzate per consentire loro di dedicare molto tempo all'aggiornamento in anticipo.

Puoi aggiungere i dettagli dei periodi al tramonto nei Termini di servizio o in altra documentazione in modo che le persone siano consapevoli di come funziona. Ciò significherebbe che quando qualcuno decide di utilizzare la tua API saprà con quali programmi deve lavorare. Ad esempio, potresti informare le persone che dovranno aggiornare il loro sistema una volta all'anno e avere 4 mesi di preavviso per farlo.

È anche una buona idea usare la numerazione delle versioni in modo da poter dire che, ad esempio, "la versione 3 sarà presto deprezzata, quindi assicurati che il tuo codice funzioni con la versione 4" ecc. In questo modo le persone sanno che se la loro applicazione funziona con la versione 4 quindi sono pronti per il tramonto.


1

Ulteriori informazioni dal punto di vista del processo:

  • Comunicare con tutte le parti interessate : fornire ad altri team e consumatori API una comunicazione chiara e concisa sul motivo per deprecare l'API, la strategia, i dettagli del piano e della pianificazione, il significato della versione e le alternative, impostare l'HTTP di conseguenza.

  • Pianificazione e pianificazione : sul piano è necessario disporre delle pietre miliari chiave e della data obiettivo per la fine dell'ammortamento. Dovresti chiedere ai consumatori lo stesso e fornire le date in cui deprecheranno la chiamata. Organizzare una riunione regolare per monitorare il processo e supportare i consumatori.

  • Il controllo delle versioni e fornire alternative : il controllo delle versioni può aiutare a mostrare le modifiche alle interruzioni nelle versioni principali e rendere la strategia di deprecazione delle API.

  • Imposta l'intestazione della risposta HTTP Sunset : le intestazioni HTTP svolgono la parte tecnica dell'avviso, i consumatori API devono monitorare questo tipo di codice per capire quando un'API viene deprecata.

  • Monitora prima e dopo : monitora i tuoi consumatori e avvisa tutti i consumatori che ancora utilizzano l'API dopo un certo periodo sono informazioni utili per assicurarti di non perdere alcun programma di abbandono.


0

Oltre alle risposte esistenti, è necessario fornire una sostituzione drop-in o un piano di migrazione durante la rimozione di qualcosa, in modo che gli utenti possano aggiornare il proprio codice.

Cerca di evitare di rimuovere la funzionalità senza fornire un'alternativa: questo renderebbe alcuni dei tuoi utenti insoddisfatti.


Se è possibile nell'API Web, mantenere attive le funzioni obsolete, ma farle restituire un errore informativo, anziché interrompere.
Chiedi a Monica il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.