Trải nghiệm sử dụng Internet ở Nam Cực
- Đã truy cập Internet trong 14 tháng qua một liên kết vệ tinh bị hạn chế
- Tại trạm McMurdo, khoảng một nghìn người cùng chia sẻ tốc độ chỉ vài chục megabit
- Tính đến tháng 10 năm 2023, tại Nam Cực điểm chỉ có thể kết nối Internet trong vài giờ mỗi ngày
- Kết nối vệ tinh gây ra độ trễ cao (khoảng 750 mili giây)
Các vấn đề kỹ thuật web và ứng dụng trong môi trường Internet chậm
- Nhiều ứng dụng web không tính đến môi trường Internet chậm.
- Ví dụ, có ứng dụng chỉ hoạt động sau khi phải tải 20MB JavaScript.
- Nếu ứng dụng không hoạt động đúng trong môi trường Internet chậm, người dùng sẽ gặp bất tiện rất lớn.
Các vấn đề chính và hướng giải quyết
Timeout và kích thước chunk được hardcode
- Timeout và kích thước chunk được hardcode gây ra vấn đề lớn trong môi trường Internet chậm.
- Hướng giải quyết:
- Nếu dữ liệu vẫn đang truyền thì cứ để tiếp tục và hiển thị tiến trình qua UI.
- Khi lệnh gọi HTTPS thất bại thì thử lại với timeout dài hơn.
- Không gửi dữ liệu lớn trong một lần mà chia thành các chunk nhỏ để truyền.
- Khi có sự cố, chẩn đoán vấn đề qua DNS, ICMP, HTTP, v.v.
Ví dụ 1 - Tải metadata của ứng dụng
- Một ứng dụng desktop nhất định thất bại khi tải metadata do timeout được hardcode.
- Hướng giải quyết:
- Thử lại với timeout dài hơn theo từng bước.
- Dùng dữ liệu được cache hoặc dùng giá trị mặc định.
- Cung cấp cách để người dùng có thể tải dữ liệu thủ công.
Ví dụ 2 - Ứng dụng chat
- Một ứng dụng chat nhất định thất bại vì dùng timeout 10 giây cho quá trình khởi tạo WebSocket.
- Trong khi đó, một ứng dụng chat khác thích ứng tốt với nhiều điều kiện mạng khác nhau.
- Hướng giải quyết:
- Điều chỉnh timeout động và thử lại một cách thông minh khi thất bại.
- Hiển thị rõ ràng trạng thái mạng hiện tại.
Ví dụ 3 - Truyền theo từng bước
- Công cụ đăng bài blog truyền dữ liệu bằng các chunk nhỏ và tiếp tục lại khi thất bại.
- Một nền tảng thương mại khác cố truyền tệp lớn trong một lần nên bị thất bại.
Cung cấp tính năng để người dùng tự tải xuống
- Khi tính năng tải xuống trong ứng dụng thất bại, hãy cung cấp liên kết để người dùng có thể tự tải xuống.
- Người dùng có thể tải tệp một lần rồi chia sẻ cho nhiều thiết bị.
- Mang lại sự linh hoạt để người dùng tự quản lý việc tải xuống.
Ví dụ 1 - Cập nhật macOS
- Cập nhật macOS gây ra vấn đề do kích thước tệp lớn và khả năng cache không hoàn chỉnh.
- Hướng giải quyết:
- Cung cấp liên kết tải xuống để người dùng có thể tự tải trực tiếp.
- Thêm chức năng tạm dừng/tiếp tục vào công cụ tải xuống.
- Cung cấp bộ cài đầy đủ bao gồm mọi tệp cần thiết.
Ví dụ 2 - Cập nhật OS trên điện thoại Android Samsung
- Cập nhật OS trên điện thoại Android Samsung thất bại vì không có chức năng tạm dừng/tiếp tục.
- Hướng giải quyết:
- Thêm chức năng tạm dừng/tiếp tục vào công cụ tải xuống.
- Cung cấp liên kết để người dùng có thể tự tải tệp trực tiếp.
Ví dụ 3 - Tự động cập nhật cho ứng dụng nhỏ
- Tự động cập nhật của một ứng dụng desktop nhỏ gây ra vấn đề vì không có nút tạm dừng/hủy.
- Hướng giải quyết:
- Thêm nút tạm dừng/hủy vào công cụ tải xuống.
Ý kiến của GN⁺
- Cân nhắc môi trường Internet chậm: Nhiều ứng dụng không tính đến môi trường Internet chậm nên người dùng gặp bất tiện lớn. Đây là vấn đề đặc biệt quan trọng ở khu vực xa xôi hoặc môi trường hàng hải.
- Cải thiện trải nghiệm người dùng: Nhà phát triển ứng dụng cần cải thiện trải nghiệm người dùng bằng cách xem xét các điều kiện mạng đa dạng. Điều này giúp tăng mức độ hài lòng của người dùng và nâng cao độ tin cậy của ứng dụng.
- Giải pháp kỹ thuật: Có thể giải quyết vấn đề thông qua các biện pháp kỹ thuật như điều chỉnh timeout, truyền theo chunk, tiếp tục tải xuống.
- Đề xuất sản phẩm khác: Nếu muốn tìm ứng dụng hoạt động tốt trong môi trường Internet chậm, so sánh sản phẩm của đối thủ cũng là một cách hay. Ví dụ, có những ứng dụng chat hoạt động tốt hơn trong môi trường chậm.
- Điều cần cân nhắc khi áp dụng công nghệ: Khi áp dụng công nghệ mới, cần xem xét đầy đủ điều kiện mạng. Đây là yếu tố đặc biệt quan trọng ở khu vực xa xôi hoặc môi trường bị hạn chế.
1 bình luận
Ý kiến Hacker News
Môi trường Internet ở Trung Quốc: Môi trường Internet tại Trung Quốc không ổn định và VPN cũng bị hạn chế. Các nhà phát triển cần quay lại tư duy của năm 2005 để xây dựng các web app hiệu quả hơn.
Vấn đề mạng ở Úc và London: Ở Úc và trên tàu điện ngầm London, kết nối mạng thường xuyên bị ngắt, nhưng phần lớn ứng dụng không xử lý tốt tình huống này. WhatsApp là một ngoại lệ hiếm hoi hoạt động rất tốt.
Đề xuất dùng remote desktop: Có người thắc mắc liệu dùng remote desktop có thể mang lại trải nghiệm tốt hơn hay không. Hiệu năng của VNC/Windows Remote Desktop trong điều kiện mạng kém vẫn chưa rõ ràng.
Vấn đề của Internet chậm: Trên kết nối Internet chậm, nhiều website không hoạt động đúng cách. Ngay cả các trang chỉ có văn bản cũng tải chậm. Việc chuyển sang static site generator đã giúp tăng năng suất rất nhiều.
Phần mềm local-first: Cần có phần mềm local-first. Điều này phù hợp với mục đích ban đầu của Internet và giúp duy trì quyền sở hữu dữ liệu.
Blog và vấn đề băng thông: Tác giả blog chiếm dụng khá nhiều băng thông nên khiến người khác phàn nàn. Tuy vậy, họ vẫn được ưu tiên nhờ giá trị PR.
Kinh nghiệm tinh chỉnh mạng: Có người đề xuất dùng NNCP trong nhiều môi trường mạng khác nhau để chia dữ liệu thành các chunk rồi truyền đi. NNCP giúp đảm bảo việc truyền dữ liệu đáng tin cậy.
Cần cân nhắc môi trường mạng chậm: Nhiều người không thể tiếp cận Internet tốc độ cao. Cần phát triển các ứng dụng hoạt động tốt cả trong môi trường mạng chậm.
Trải nghiệm ở Nam Thái Bình Dương: Do Starlink tiêu thụ điện năng cao, người ta đã dùng SIM nội địa, nhưng mạng EDGE (2G) rất chậm. Kiểm thử phần mềm nên bao gồm cả các kết nối tốc độ thấp, độ trễ cao.
Giải quyết vấn đề Internet trên tàu biển: Để sử dụng Internet hiệu quả trên tàu biển, người ta áp dụng các cách như chặn truy vấn DNS, giới hạn session người dùng và phân bổ băng thông công bằng.