2 pontos por GN⁺ 2024-06-01 | 1 comentários | Compartilhar no WhatsApp

Experiência de uso da internet na Antártica

  • Durante 14 meses, houve acesso à internet por meio de um link de satélite limitado
  • Na base McMurdo, cerca de mil pessoas compartilhavam algumas dezenas de megabits de velocidade
  • Em outubro de 2023, no Polo Sul, a conexão com a internet só estava disponível por algumas horas por dia
  • A conexão via satélite causava alta latência (cerca de 750 milissegundos)

Problemas de engenharia de web e apps em ambientes com internet lenta

  • Muitos webapps não levam em conta ambientes com internet lenta.
  • Por exemplo, certo app só funcionava depois de carregar 20 MB de JavaScript.
  • Quando um app não funciona direito em um ambiente de internet lenta, o usuário sofre um grande incômodo.

Principais problemas e soluções

Timeouts e tamanhos de chunk codificados de forma fixa

  • Timeouts e tamanhos de chunk definidos de forma fixa causam grandes problemas em ambientes com internet lenta.
  • Soluções:
    • Se os dados estiverem fluindo, deixe como está e mostre o progresso pela UI.
    • Se uma chamada HTTPS falhar, tente novamente com um timeout mais longo.
    • Em vez de enviar grandes volumes de dados de uma vez, divida em pequenos chunks.
    • Quando houver problema, diagnostique usando DNS, ICMP, HTTP etc.

Exemplo 1 - Download de metadados de app

  • Um certo app desktop falhava ao baixar metadados por causa de um timeout codificado de forma fixa.
  • Soluções:
    • Tentar novamente com timeouts progressivamente maiores.
    • Usar dados em cache ou valores padrão.
    • Oferecer um meio para que o usuário baixe os dados manualmente.

Exemplo 2 - App de chat

  • Um certo app de chat falhava porque usava um timeout de 10 segundos na inicialização do WebSocket.
  • Em contrapartida, outro app de chat lidava bem com várias condições de rede.
  • Soluções:
    • Ajustar o timeout dinamicamente e, em caso de falha, tentar novamente de forma inteligente.
    • Exibir com clareza o estado atual da rede.

Exemplo 3 - Transferência progressiva

  • Uma ferramenta de publicação de blog enviava dados em pequenos chunks e retomava em caso de falha.
  • Outra plataforma comercial tentava enviar arquivos grandes de uma vez e falhava.

Oferecer função de download ao usuário

  • Quando a função de download dentro do app falhar, ofereça links para que o usuário possa baixar diretamente.
  • O usuário pode baixar o arquivo uma vez e compartilhá-lo entre vários dispositivos.
  • Isso dá ao usuário flexibilidade para gerenciar seus downloads.

Exemplo 1 - Atualização do macOS

  • As atualizações do macOS causavam problemas por causa do tamanho grande dos arquivos e de um recurso de cache incompleto.
  • Soluções:
    • Fornecer links de download para que o usuário possa baixar diretamente.
    • Adicionar pausa/retomada à ferramenta de download.
    • Oferecer o instalador completo com todos os arquivos necessários.

Exemplo 2 - Atualização de OS em celulares Android da Samsung

  • A atualização de OS em celulares Android da Samsung falhava por não ter função de pausa/retomada.
  • Soluções:
    • Adicionar pausa/retomada à ferramenta de download.
    • Fornecer links para que o usuário possa baixar os arquivos diretamente.

Exemplo 3 - Atualização automática de app pequeno

  • A atualização automática de um pequeno app desktop causava problemas por não ter botões de pausar/cancelar.
  • Soluções:
    • Adicionar botões de pausar/cancelar à ferramenta de download.

Opinião do GN⁺

  • Considerar ambientes com internet lenta: muitos apps não levam em conta ambientes com internet lenta, o que causa grande incômodo aos usuários. Isso é um problema especialmente importante em regiões remotas ou ambientes marítimos.
  • Melhoria da experiência do usuário: desenvolvedores de apps devem considerar várias condições de rede para melhorar a experiência do usuário. Isso aumenta a satisfação do usuário e melhora a confiabilidade do app.
  • Soluções técnicas: é possível resolver esses problemas com soluções técnicas como ajuste de timeout, transferência em chunks e retomada de download.
  • Recomendação de outros produtos: se você estiver procurando apps que funcionem bem em ambientes com internet lenta, comparar produtos concorrentes também pode ser uma boa opção. Por exemplo, pode haver um app de chat específico que funcione melhor em ambientes lentos.
  • Pontos a considerar ao adotar tecnologia: ao adotar novas tecnologias, é preciso considerar suficientemente as condições de rede. Isso é um fator especialmente importante em regiões remotas ou ambientes limitados.

1 comentários

 
GN⁺ 2024-06-01
Comentários do Hacker News
  • Ambiente de internet na China: o ambiente de internet na China é instável e o uso de VPN também é limitado. Os desenvolvedores precisam voltar a 2005 e criar webapps mais eficientes.

  • Problemas de rede na Austrália e no metrô de Londres: na Austrália e no metrô de Londres, a conexão de rede cai com frequência, mas a maioria dos apps não lida bem com isso. O WhatsApp é uma exceção e funciona muito bem.

  • Sugestão de uso de desktop remoto: há curiosidade sobre se usar desktop remoto poderia proporcionar uma experiência melhor. Em condições ruins de rede, o desempenho de VNC/Windows Remote Desktop é incerto.

  • Problemas da internet lenta: em conexões lentas, muitos sites não funcionam direito. Até páginas só de texto demoram para carregar. Migrar para um gerador de sites estáticos ajudou muito a aumentar a produtividade.

  • Software local-first: é necessário ter software local-first. Isso está alinhado com o propósito original da internet e permite manter a posse dos dados.

  • Blogs e problema de largura de banda: o autor de um blog consome muita largura de banda e isso faz outras pessoas reclamarem. Ainda assim, recebe prioridade por causa do valor de PR.

  • Experiência com hacks de rede: é sugerido usar o NNCP em vários ambientes de rede para dividir os dados em chunks e transmiti-los. O NNCP garante transferência de dados confiável.

  • Necessidade de considerar ambientes de rede lenta: muita gente não tem acesso a internet rápida. É preciso desenvolver apps que funcionem bem também em redes lentas.

  • Experiência no Pacífico Sul: por causa do alto consumo de energia da Starlink, foi usado um SIM local, mas a rede EDGE (2G) era extremamente lenta. Testes de software devem incluir conexões de baixa velocidade e alta latência.

  • Resolução de problemas de internet em embarcações: para usar a internet de forma eficiente em navios, são usados métodos como bloquear consultas DNS, limitar sessões de usuários e distribuir a largura de banda de forma justa.