2 puntos por GN⁺ 2024-06-01 | 1 comentarios | Compartir por WhatsApp

La experiencia de usar internet en la Antártida

  • Durante 14 meses, se accedió a internet mediante un enlace satelital limitado.
  • En la base McMurdo, alrededor de mil personas comparten unas decenas de megabits de velocidad.
  • A octubre de 2023, en el Polo Sur solo había conexión a internet durante algunas horas al día.
  • La conexión satelital genera una latencia alta, de aproximadamente 750 milisegundos.

Problemas de ingeniería web y de apps en entornos con internet lento

  • Muchas webapps no consideran los entornos con internet lento.
  • Por ejemplo, cierta app necesitaba cargar 20 MB de JavaScript solo para poder funcionar.
  • Si una app no funciona correctamente en un entorno de internet lento, los usuarios sufren grandes molestias.

Problemas principales y formas de resolverlos

Timeouts y tamaños de chunk hardcodeados

  • Los timeouts y tamaños de chunk hardcodeados causan grandes problemas en entornos con internet lento.
  • Soluciones:
    • Si los datos siguen fluyendo, dejarlos continuar y mostrar el progreso en la UI.
    • Si falla una llamada HTTPS, reintentar con un timeout más largo.
    • En vez de enviar grandes volúmenes de datos de una sola vez, dividirlos en chunks pequeños.
    • Cuando surjan problemas, diagnosticarlos mediante DNS, ICMP, HTTP, etc.

Ejemplo 1: descarga de metadatos de una app

  • Cierta app de escritorio fallaba al descargar metadatos debido a un timeout hardcodeado.
  • Soluciones:
    • Reintentar con timeouts progresivamente más largos.
    • Usar datos en caché o valores predeterminados.
    • Ofrecer una forma para que el usuario descargue los datos manualmente.

Ejemplo 2: app de chat

  • Cierta app de chat fallaba porque usaba un timeout de 10 segundos para inicializar WebSocket.
  • En cambio, otra app de chat respondía bien a distintas condiciones de red.
  • Soluciones:
    • Ajustar los timeouts dinámicamente y reintentar de forma inteligente cuando haya fallas.
    • Mostrar claramente el estado actual de la red.

Ejemplo 3: transferencia progresiva

  • Una herramienta de publicación de blogs envía los datos en chunks pequeños y reanuda si hay fallas.
  • Otra plataforma comercial intenta enviar archivos grandes de una sola vez y falla.

Ofrecer funciones de descarga al usuario

  • Si falla la función de descarga dentro de la app, ofrecer enlaces para que el usuario pueda descargar directamente.
  • El usuario puede descargar un archivo una sola vez y compartirlo entre varios dispositivos.
  • Esto le da al usuario flexibilidad para gestionar sus descargas.

Ejemplo 1: actualización de macOS

  • Las actualizaciones de macOS causan problemas por el gran tamaño de los archivos y una función de caché incompleta.
  • Soluciones:
    • Proporcionar enlaces de descarga para que el usuario pueda descargar directamente.
    • Agregar pausa/reanudación a la herramienta de descarga.
    • Ofrecer un instalador completo que incluya todos los archivos necesarios.

Ejemplo 2: actualización del OS en teléfonos Android de Samsung

  • Las actualizaciones del OS en teléfonos Android de Samsung fallan porque no tienen función de pausa/reanudación.
  • Soluciones:
    • Agregar pausa/reanudación a la herramienta de descarga.
    • Proporcionar enlaces para que el usuario pueda descargar los archivos directamente.

Ejemplo 3: actualizaciones automáticas de apps pequeñas

  • Las actualizaciones automáticas de una app de escritorio pequeña generan problemas porque no tienen botones de pausa/cancelación.
  • Soluciones:
    • Agregar botones de pausa/cancelación a la herramienta de descarga.

Opinión de GN⁺

  • Considerar los entornos con internet lento: muchas apps no toman en cuenta los entornos con internet lento, lo que causa grandes molestias a los usuarios. Esto es especialmente importante en zonas remotas o entornos marítimos.
  • Mejorar la experiencia de usuario: los desarrolladores de apps deben considerar distintas condiciones de red para mejorar la experiencia del usuario. Esto aumenta la satisfacción y mejora la confiabilidad de la app.
  • Soluciones técnicas: el problema puede resolverse con medidas técnicas como ajustar timeouts, transferir en chunks y reanudar descargas.
  • Recomendar otros productos: si buscas apps que funcionen bien en entornos con internet lento, también es buena idea comparar productos de la competencia. Por ejemplo, puede haber una app de chat que funcione mejor en condiciones lentas.
  • Aspectos a considerar al adoptar tecnología: al incorporar nueva tecnología, hay que considerar suficientemente las condiciones de red. Esto es especialmente importante en zonas remotas o entornos restringidos.

1 comentarios

 
GN⁺ 2024-06-01
Comentarios de Hacker News
  • Entorno de internet en China: El entorno de internet en China es inestable y las VPN también están limitadas. Los desarrolladores necesitan volver a 2005 y crear aplicaciones web más eficientes.

  • Problemas de red en Australia y Londres: En Australia y en el metro de Londres la red se corta con frecuencia, pero la mayoría de las apps no manejan bien eso. WhatsApp es una excepción y funciona sorprendentemente bien.

  • Sugerencia de usar escritorio remoto: Se preguntan si usar escritorio remoto podría ofrecer una mejor experiencia. En condiciones de red deficientes, el rendimiento de VNC/Windows Remote Desktop es incierto.

  • Problemas del internet lento: Muchos sitios web no funcionan correctamente con internet lento. Incluso las páginas de solo texto cargan despacio. Cambiar a un generador de sitios estáticos ayudó mucho a mejorar la productividad.

  • Software local-first: Se necesita software local-first. Va acorde con el propósito original de internet y permite mantener la propiedad de los datos.

  • Blogs y problemas de ancho de banda: El autor del blog consume mucho ancho de banda, lo que hace que otras personas se quejen. Pero recibe prioridad por su valor de relaciones públicas.

  • Experiencia hackeando redes: Se propone usar NNCP en distintos entornos de red para dividir los datos en chunks y transmitirlos. NNCP garantiza una transferencia de datos confiable.

  • Necesidad de considerar entornos de red lentos: Muchas personas no tienen acceso a internet rápido. Hay que desarrollar apps que también funcionen bien en redes lentas.

  • Experiencia en el Pacífico Sur: Debido al alto consumo eléctrico de Starlink, se usó una SIM local, pero la red EDGE (2G) era extremadamente lenta. Las pruebas de software deberían incluir conexiones de baja velocidad y alta latencia.

  • Resolución de problemas de internet en barcos: Para usar internet de forma eficiente en barcos, se emplean métodos como bloquear consultas DNS, limitar las sesiones de usuario y distribuir el ancho de banda de manera justa.