2P by neo 2달전 | favorite | 댓글 1개

남극에서의 인터넷 사용 경험

  • 남극에서 14개월 동안 제한된 위성 링크를 통해 인터넷에 접속했음
  • 맥머도 기지에서는 약 천 명이 몇 십 메가비트의 속도를 공유
  • 2023년 10월 기준, 남극점에서는 하루에 몇 시간만 인터넷 연결이 가능했음
  • 위성 연결로 인해 높은 지연 시간(약 750밀리초)이 발생

느린 인터넷 환경에서의 웹 및 앱 엔지니어링 문제

  • 많은 웹앱이 느린 인터넷 환경을 고려하지 않음.
  • 예를 들어, 특정 앱은 20MB의 자바스크립트를 로드해야만 작동했음.
  • 느린 인터넷 환경에서 앱이 제대로 작동하지 않으면 사용자가 큰 불편을 겪음.

주요 문제와 해결 방안

하드코딩된 타임아웃과 청크 크기

  • 하드코딩된 타임아웃과 청크 크기는 느린 인터넷 환경에서 큰 문제를 일으킴.
  • 해결 방안:
    • 데이터가 흐르고 있다면 그대로 두고, UI를 통해 진행 상황을 표시함.
    • HTTPS 호출 실패 시 더 긴 타임아웃으로 재시도함.
    • 큰 데이터를 한 번에 전송하지 말고 작은 청크로 나누어 전송함.
    • 문제 발생 시 DNS, ICMP, HTTP 등을 통해 문제를 진단함.

예시 1 - 앱 메타데이터 다운로드

  • 특정 데스크탑 앱은 하드코딩된 타임아웃으로 인해 메타데이터 다운로드에 실패함.
  • 해결 방안:
    • 점진적으로 긴 타임아웃으로 재시도함.
    • 캐시된 데이터를 사용하거나 기본값을 사용함.
    • 사용자가 수동으로 데이터를 다운로드할 수 있는 방법을 제공함.

예시 2 - 채팅 앱

  • 특정 채팅 앱은 웹소켓 초기화에 10초 타임아웃을 사용해 실패함.
  • 반면, 다른 채팅 앱은 다양한 네트워크 조건에 잘 대응함.
  • 해결 방안:
    • 타임아웃을 동적으로 조정하고, 실패 시 지능적으로 재시도함.
    • 현재 네트워크 상태를 명확히 표시함.

예시 3 - 점진적 전송

  • 블로그 게시 도구는 작은 청크로 데이터를 전송하고 실패 시 재개함.
  • 다른 상업적 플랫폼은 큰 파일을 한 번에 전송하려고 해 실패함.

사용자 다운로드 기능 제공

  • 앱 내 다운로드 기능이 실패할 경우 사용자가 직접 다운로드할 수 있는 링크를 제공함.
  • 사용자가 파일을 한 번 다운로드해 여러 기기에 공유할 수 있음.
  • 사용자가 다운로드를 관리할 수 있는 유연성을 제공함.

예시 1 - macOS 업데이트

  • macOS 업데이트는 큰 파일 크기와 불완전한 캐시 기능으로 인해 문제를 일으킴.
  • 해결 방안:
    • 다운로드 링크를 제공해 사용자가 직접 다운로드할 수 있게 함.
    • 다운로드 도구에 일시 중지/재개 기능을 추가함.
    • 모든 필요한 파일을 포함한 전체 설치 프로그램을 제공함.

예시 2 - 삼성 안드로이드 폰 OS 업데이트

  • 삼성 안드로이드 폰의 OS 업데이트는 일시 중지/재개 기능이 없어 실패함.
  • 해결 방안:
    • 다운로드 도구에 일시 중지/재개 기능을 추가함.
    • 사용자가 직접 파일을 다운로드할 수 있는 링크를 제공함.

예시 3 - 소형 앱 자동 업데이트

  • 소형 데스크탑 앱의 자동 업데이트는 일시 중지/취소 버튼이 없어 문제를 일으킴.
  • 해결 방안:
    • 다운로드 도구에 일시 중지/취소 버튼을 추가함.

GN⁺의 의견

  • 느린 인터넷 환경 고려: 많은 앱이 느린 인터넷 환경을 고려하지 않아 사용자가 큰 불편을 겪음. 이는 특히 원격지나 해양 환경에서 중요한 문제임.
  • 사용자 경험 개선: 앱 개발자는 다양한 네트워크 조건을 고려해 사용자 경험을 개선해야 함. 이는 사용자 만족도를 높이고, 앱의 신뢰성을 향상시킴.
  • 기술적 해결 방안: 타임아웃 조정, 청크 전송, 다운로드 재개 등 기술적 해결 방안을 통해 문제를 해결할 수 있음.
  • 다른 제품 추천: 느린 인터넷 환경에서 잘 작동하는 앱을 찾는다면, 경쟁사 제품을 비교해보는 것도 좋은 방법임. 예를 들어, 특정 채팅 앱이 느린 환경에서 더 잘 작동하는 경우가 있음.
  • 기술 도입 시 고려사항: 새로운 기술을 도입할 때는 네트워크 조건을 충분히 고려해야 함. 이는 특히 원격지나 제한된 환경에서 중요한 요소임.
Hacker News 의견
  • 중국의 인터넷 환경: 중국의 인터넷 환경은 불안정하고 VPN도 제한적임. 개발자들이 2005년으로 돌아가서 더 효율적인 웹앱을 만들 필요가 있음.

  • 호주와 런던의 네트워크 문제: 호주와 런던 지하철에서 네트워크가 자주 끊기는데, 대부분의 앱이 이를 잘 처리하지 못함. WhatsApp은 예외적으로 잘 작동함.

  • 원격 데스크톱 사용 제안: 원격 데스크톱을 사용하면 더 나은 경험을 할 수 있을지 궁금함. 네트워크 조건이 나쁜 상황에서 VNC/Windows Remote Desktop의 성능은 불확실함.

  • 느린 인터넷의 문제: 느린 인터넷에서 많은 웹사이트가 제대로 작동하지 않음. 텍스트만 있는 페이지도 로딩이 느림. 정적 사이트 생성기로 전환한 것이 생산성 향상에 큰 도움이 됨.

  • 로컬 우선 소프트웨어: 로컬 우선 소프트웨어가 필요함. 인터넷의 원래 목적에 부합하며, 데이터 소유권을 유지할 수 있음.

  • 블로그와 대역폭 문제: 블로그 작성자가 대역폭을 많이 차지해 다른 사람들이 불만을 가짐. 하지만 PR 가치 때문에 우선권을 받음.

  • 네트워크 해킹 경험: 다양한 네트워크 환경에서 NNCP를 사용하여 데이터를 청크로 나누어 전송하는 방법을 제안함. NNCP는 신뢰할 수 있는 데이터 전송을 보장함.

  • 느린 네트워크 환경 고려 필요: 많은 사람들이 빠른 인터넷에 접근하지 못함. 느린 네트워크 환경에서도 잘 작동하는 앱을 개발해야 함.

  • 남태평양에서의 경험: Starlink의 높은 전력 소모로 인해 현지 SIM 카드를 사용했으나, EDGE(2G) 네트워크는 매우 느림. 소프트웨어 테스트에 저속, 고지연 연결을 포함해야 함.

  • 선박에서의 인터넷 문제 해결: 선박에서 인터넷을 효율적으로 사용하기 위해 DNS 쿼리를 차단하고, 사용자 세션을 제한하며, 대역폭을 공평하게 분배하는 등의 방법을 사용함.