Desaprobar una API web: ¿mejores prácticas?

18

Eventualmente, necesita depreciar partes de su API web pública. Sin embargo, estoy confundido sobre cuál sería la mejor manera de hacerlo. Si tiene una gran base de aplicaciones de terceros, simplemente quitar las versiones antiguas de la API parece ser la forma incorrecta de hacerlo, ya que casi todas las aplicaciones fallarían de la noche a la mañana. Sin embargo, no puede mantener la API web antigua disponible para siempre, ya que puede estar desactualizada o hay cambios significativos que hacen que trabajar con ella sea imposible.

¿Cuáles son algunas de las mejores prácticas para desaprobar las API web antiguas?

TheLQ
fuente

Respuestas:

17

Parece que el póster original ya ha sido efectivo, pero desaprobó informalmente su API (todo lo que se conoce como 'API antigua'). Sin embargo, hasta que se anuncie y se notifique a los usuarios que una API está en desuso, no está en desuso formal.

La API en desuso es una etapa de código provisional e inactiva. Son los últimos ritos. Este es el período que permite a los adoptantes / consumidores reconfigurar sus aplicaciones para una API más nueva y despedirse con cariño, haciendo las paces con la API. Algunas API pueden demorar más tiempo que otras, pero en este punto sabemos que su tiempo no es largo.

API eliminada es un código de funeral. No hay nada más que pueda hacer, sino que esté debidamente dispuesto y debidamente memorizado.

Muchos desarrolladores de API y servicios optan por funerales de código en lugar de realizar los últimos ritos; Sin embargo, creo que es algo arriesgado. Si se hizo algún tipo de servicio o promesa de soporte cuando el API / servicio se adoptó inicialmente o mediante la renovación, es posible que desee cumplir ese compromiso por un período de tiempo razonable antes de realizar el funeral.

Para las bibliotecas que no son de servicio, creo que una versión de lanzamiento principal, independientemente del período de tiempo, es probablemente un período más que aceptable y justo de compatibilidad retroactiva garantizada. Más allá de eso, depende de la influencia y el cabildeo de los usuarios para extender su vida más allá de ese período. Y no se sorprenda si de vez en cuando hay objeciones debido a dependencias irremplazables de terceros que están atrapadas en el limbo y vinculadas a ciertas versiones de ciertas plataformas.

Para los servicios, sospecho que es posible que desee ver un período de seis meses o un año, simplemente debido a la variación de quién y cómo se puede consumir un servicio, y la variación correspondiente del ciclo de desarrollo de proyecto consumidor a proyecto consumidor: muchos proyectos que podrían estar consumiendo su servicio aún podrían tener un gran diseño inicial y pueden programar un ciclo de lanzamiento de más de un año. La mayoría de las opiniones de los desarrolladores desde el exterior sugerirían que aquellos con cronogramas largos son responsables de cumplir con los tiempos de su ciclo, y esos proyectos que consumen un ciclo largo deberían adoptar un ciclo de lanzamiento más rápido, y puede ser cierto. Pero, en última instancia, la fecha de eliminación es algo que debe negociar con los usuarios.

Una buena estrategia de desaprobación, pero no a prueba de balas, podría ser al anunciar la desaprobación, resaltar el plazo para la intención de eliminar, junto con una solicitud de comentarios u objeciones en un formato de encuesta de las secciones de la API en cuestión. Si no tiene una lista de contactos de usuarios porque su servicio funciona con acceso [semi] anónimo, puede considerar buscar registros para usuarios frecuentes y activos y enviar la notificación al host o administrador de dominio para que la reenvíe como mejor le parezca.

JustinC
fuente
Wow, respuesta muy informativa
TheLQ
7

La mayoría de las API web que uso (de compañías como Google, Yahoo! y Microsoft) tienen un período de "suspensión". Se informa a los desarrolladores en un plazo razonable (por ejemplo, de 3 a 6 meses) sobre las características que se van a depreciar para darles suficiente tiempo para actualizar de antemano.

Puede agregar los detalles de los períodos de suspensión en sus Términos de servicio u otra documentación para que las personas sepan cómo funciona. Esto significaría que cuando alguien decida usar su API sabrán con qué horarios deben trabajar. Por ejemplo, podría informar a las personas que necesitarán actualizar su sistema una vez al año y tener 4 meses de aviso para hacerlo.

También es una buena idea usar la numeración de versiones para que pueda decir que, por ejemplo, "la versión 3 se va a depreciar pronto, así que asegúrese de que su código funcione con la versión 4", etc. De esa manera, las personas saben que si su aplicación funciona con la versión 4 entonces están listos para la puesta del sol.

Ewan Heming
fuente
1

Información adicional desde el ángulo del proceso:

  • Comuníquese con todas las partes interesadas : proporcione a otros equipos y consumidores de API una comunicación clara y concisa sobre la razón para desaprobar la API, la estrategia, los detalles del plan y el cronograma, el significado de las versiones y las alternativas, establezca el HTTP en consecuencia.

  • Plan y cronograma : en el plan, debe tener los hitos clave y la fecha objetivo para el final del desuso. Debe pedirles a los consumidores que hagan lo mismo y proporcionar las fechas en que desaprobarán la llamada. Organice una reunión regular para monitorear el proceso y apoyar a los consumidores.

  • Control de versiones y proporcionar alternativas : el control de versiones puede ayudar a mostrar cambios importantes en las versiones principales y hacer que la estrategia de desaprobación de API.

  • Configure el Encabezado de respuesta HTTP Sunset : los encabezados HTTP juegan la parte técnica de la advertencia, los consumidores de API deben monitorear este tipo de código para comprender cuándo una API se está desaprobando.

  • Monitoree antes y después : Monitoree a sus consumidores y avise a cualquier consumidor que todavía usa la API después de un cierto período es información útil para asegurarse de que no se pierda ningún software de abandono.

Rafael Gorski
fuente
0

Además de las respuestas existentes, debe proporcionar un reemplazo directo o un plan de migración al eliminar algo, para que sus usuarios puedan actualizar su código.

Intente evitar eliminar la funcionalidad sin proporcionar una alternativa; esto haría que algunos de sus usuarios estén descontentos.

Calmarius
fuente
Si es posible en su API web, mantenga activas las funciones en desuso, pero haga que devuelvan un error informativo, en lugar de simplemente romperlas.
Pregunte por Monica