teacher asking a question to the class
Photo by Max Fischer on Pexels.com

[Informe de clase] Desarrollo de Sistemas (3.º año) — Semana 45

~Integración de múltiples API y diseño asíncrono: controlar el “tiempo de espera” y el “fallo” mediante el diseño~

En la Semana 45, continuamos con las integraciones de API introducidas en lecciones anteriores y aprendimos a diseñar sistemas que manejan varias API a la vez, así como a implementar enfoques que asumen comportamiento asíncrono (tiempo de espera y fallos parciales).
El tema fue lograr las tres cosas a la vez: velocidad, estabilidad y claridad.


■ Introducción del profesor: “Cuantas más API añadas, más ‘esperas’ y ‘fallos’ tendrás”

Sr. Tanaka: “Cuando combinas dos o tres API, se vuelve normal que
‘una sea lenta’ o ‘una falle’.
Hoy, aprendamos cómo absorber eso mediante el diseño.”

El profesor mostró cómo llamar a las API de forma secuencial con procesamiento síncrono hace que todo sea más lento, y explicó por qué se vuelve necesario pensar en asíncrono y en paralelo.


■ Objetivos de hoy

  1. Ser capaz de diseñar un caso de uso que integre múltiples API
  2. Entender la diferencia entre procesamiento síncrono y asíncrono
  3. Comprender cómo la ejecución en paralelo reduce el tiempo de espera
  4. Implementar un diseño que no detenga todo el sistema aunque algunas API fallen

■ Ejercicio ①: Diseñar un caso de uso multi-API

Comenzamos aclarando qué API combinar.

Ejemplos comentados en clase

  • Sistema de biblioteca
    • API del clima: mostrar un aviso de “recordatorio de devolución”
    • API de festivos: decidir si se extiende la fecha límite
  • App de apoyo al aprendizaje
    • API de traducción: ayuda con inglés
    • API de diccionario: mostrar significados de palabras

Estudiante A: “Si una API es de ‘apoyo’ y la otra es de ‘entrada para decisión’, es más fácil organizarlo.”


■ Ejercicio ②: Vivir los problemas del procesamiento síncrono

Primero, probamos código que llama a las API de forma síncrona (en orden).

weather = weather_api.fetch(city)
holiday = holiday_api.fetch(date)

Problemas que experimentamos:

  • El tiempo total se vuelve largo
  • Si falla cualquiera de las dos, todo el proceso se detiene
  • Los usuarios sienten claramente que los están “haciendo esperar”

Estudiante B: “Aunque solo una API sea lenta, todo se siente lento…”


■ Ejercicio ③: Aprender la idea de ejecución asíncrona + paralela

Después, introdujimos el concepto de llamar a las API al mismo tiempo.
(En clase, nos enfocamos en conceptos y usamos un ejemplo async simplificado.)

Imagen conceptual

weather_task = async_fetch_weather(city)
holiday_task = async_fetch_holiday(date)

weather, holiday = await gather(weather_task, holiday_task)

Puntos clave:

  • Al esperar simultáneamente, el tiempo total de espera pasa a ser aproximadamente “el tiempo de la API más lenta”
  • La velocidad percibida mejora de forma notable

Estudiante C: “Se siente como si las cosas corrieran en paralelo en segundo plano; de repente es muy ‘mundo real’.”


■ Ejercicio ④: Diseñar para tolerar fallos parciales

Con múltiples API, es importante no asumir que “todo tiene éxito”.

Política de diseño

  • Las API de menor prioridad no deben bloquear todo el flujo si fallan
  • Tratar los resultados como un Result (éxito/fallo)
  • Tomar la decisión final en la capa Service
weather = safe_fetch_weather(city)   # devuelve None si falla
holiday = safe_fetch_holiday(date)

message = build_message(weather, holiday)

Ejemplos de UI:

  • “Hoy es festivo. La fecha límite de devolución se extenderá.”
  • No se pudo obtener la información meteorológica.

Estudiante D: “Da tranquilidad diseñar de forma que no haga falta que todo esté disponible.”


■ Ejercicio ⑤: Diseñar prioridad y momento de presentación

Por último, discutimos qué mostrar primero.

  • Mostrar la función principal inmediatamente
  • Mostrar/actualizar después la información de API complementarias
  • Usar indicadores de carga para que la espera sea visible

Estudiante E: “Si vas a hacer esperar a los usuarios, es mejor que puedan darse cuenta de que están esperando.”

El profesor añadió una nota práctica:
“UX no es solo ser ‘rápido’; también es ser ‘convincente y comprensible’.”


■ Aprendizajes del conjunto de la clase

  • Cuantas más API integras, más importa la calidad del diseño
  • Async no es solo una forma de “hacerlo más rápido”, sino también de “hacerlo más resiliente”
  • La capa Service se vuelve aún más importante
  • En algunos casos, es un UX más amable no esperar a que todo esté listo

■ Mensaje final del profesor

“La integración multi-API trae a tu sistema tanto
‘conveniencia’ como ‘inestabilidad’.

Por eso es esencial incorporar al diseño
paralelismo, manejo de fallos parciales y priorización.
Las ideas de hoy también se aplican directamente a la IA generativa y a la integración de servicios a gran escala.”


■ Tarea (para la próxima semana)

  1. Crear un diagrama simple de diseño de caso de uso (diagrama de secuencia básico) usando múltiples API
  2. Clasificar las API en “críticas” vs. “de apoyo”, y explicar por qué
  3. Proponer un plan de visualización de UI para cuando falle la mitad de las API

■ Avance de la próxima semana: introducción al diseño de integración de IA generativa

La próxima semana, por fin entraremos en
diseñar cómo integrar IA generativa en sistemas.
El foco no será “cómo llamarla”, sino
“cómo controlarla y usarla de forma segura”.


La Semana 45 fue un hito importante para aprender a diseñar integraciones de API que no se rompen cuando escalan.
Los estudiantes están empezando a desarrollar un nivel más alto de habilidad en diseño de sistemas: pensar en velocidad, estabilidad y UX al mismo tiempo.

por greeden

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)