Es viernes por la mañana y estás emocionado. Hoy, su nuevo sistema de IA generativa que se ejecuta en un gran proveedor de nube pública comenzará a funcionar con los sistemas de comercio electrónico existentes que generan el 80% de los ingresos de la empresa.
La empresa espera que la nueva capacidad genere más ventas y al mismo tiempo proporcione una mejor comprensión de los clientes que utilizan el sitio. El sistema también podrá crear paquetes de ofertas personalizados sobre la marcha. Marketing estima que esto aumentará la venta individual promedio en un 30%. Cambiador de juego.
Ha habido tal presión para implementar esto que los equipos de desarrollo de sitios web y de nube se saltaron la mayoría de las pruebas de estrés, confiando en cambio en la promesa de que estos sistemas basados en la nube “deberían poder escalar”.
Los sistemas de comercio electrónico se comunican con el sistema de IA generativa mediante varias API. Estos permiten que las aplicaciones en el sitio de comercio electrónico activen el sistema de inteligencia artificial generativa, incluido el envío de datos. Luego, el productivo sistema de IA devuelve las respuestas deseadas.
Pero no todo está bien. A medida que el número de usuarios en el sistema de comercio electrónico supera los 5000, lo que aumenta la carga de las API que funcionan con el sistema de comercio electrónico, el rendimiento cae por un precipicio. El número de usuarios que abandonan el sitio aumenta significativamente, hasta el punto de que el equipo de comercio electrónico vuelve a la última versión del sitio y elimina la conexión con el nuevo sistema API generativo.
Veo este tipo de escenario con bastante frecuencia. Los sistemas están bien diseñados, pero las API están infravaloradas, lo que genera problemas de rendimiento, escalamiento y latencia. Muchos ocultan estos problemas arrojándoles recursos, como más instancias de servidor, lo cual es fácil de hacer en una nube pública. Pero los recursos no son gratuitos y, eventualmente, esas API deberán repararse.
Los conceptos básicos del diseño de API
El núcleo de todos estos tipos de fallas en las que la API no funciona según lo planeado es la necesidad de un diseño que considere múltiples aspectos de un buen plan de API. Volvamos a lo básico. Conocemos estas cosas desde hace décadas, pero no ha sido la prioridad. A menudo, cuando le digo a un cliente lo que voy a decirle, parece información nueva. Eso da miedo cuando hablas con el equipo de desarrollo de API.
¿Cuáles son los conceptos básicos de un buen diseño de API? Repasemos los grandes:
Escalabilidad es enorme, lo que significa que necesitamos diseñar las API para manejar solicitudes crecientes sin degradar el rendimiento. A continuación se ofrecen algunos trucos: implemente estrategias de almacenamiento en caché y equilibradores de carga, y asegúrese de que la arquitectura subyacente pueda asignar recursos dinámicamente a medida que aumenta la demanda.
Modularidad significa construir API como un conjunto de servicios modulares. La separación permite desarrollar, implementar y escalar componentes individuales de forma independiente. Esto reduce la complejidad, mejora la mantenibilidad y aumenta las posibilidades de que el código pueda reutilizarse.
Apatridia está en línea con los principios RESTful. Las API no deben retener datos entre solicitudes. Este es el diseño de sonido. Ser sin estado mejora la escalabilidad y la confiabilidad porque los servidores dentro del clúster pueden manejar cualquier solicitud de forma independiente.
Manejo eficiente de datos Significa optimizar el tamaño de los paquetes de datos que se transmiten al solicitante. Las respuestas de la API deben excluir datos innecesarios. Esto minimiza la latencia y el uso de ancho de banda.
Monitoreo y pruebas
La mayoría de quienes crean e implementan API no pueden decirme el punto en el que la API se saturará, lo que significa que dejará de responder de manera oportuna. Tienen poca o ninguna idea de cómo se comporta la API en diferentes niveles de estrés. La única forma de averiguarlo es mediante el monitoreo, las pruebas y el uso de métricas para ver si la API realmente está optimizada, según los principios que cubrí anteriormente.
Recomiendo las siguientes métricas de rendimiento:
- Supervise constantemente la latencia de la APIel tiempo que tarda una solicitud en viajar desde el cliente al servidor y que la respuesta regresa al cliente.
- Medir el rendimiento, la cantidad de mensajes exitosos entregados durante un período determinado. Esto le permite comprender la capacidad de la API.
- Ver error de API tarifas para mitigar proactivamente cualquier problema de confiabilidad. Demasiados errores significan que algo anda mal y es necesario localizarlo y corregirlo.
A juzgar por los muchos sistemas de nube con los que me he topado, es evidente que hemos perdido el rumbo en cuanto al diseño, desarrollo y operación de API. Sospecho que el diseño de API a menudo no se enseña en muchas capacitaciones de desarrollo en la nube o solo se trata de pasada.
A medida que construimos sistemas basados en la nube que están mejor optimizados, lo que significa que utilizan menos recursos pero brindan un rendimiento superior, necesitamos mejorar en todos los componentes de una aplicación o conjunto de aplicaciones. La API es clave hoy en día y debería priorizarse más durante el diseño. ¿Demasiado para preguntar?
Copyright © 2024 IDG Communications, Inc.