Một ứng dụng nhỏ cho một câu hỏi lớn: Chúng ta còn kết nối nếu mất Internet?

Một ứng dụng nhắn tin không cần Wi-Fi, không cần 4G, không SIM, và thậm chí chẳng có máy chủ trung tâm. Nó không hỏi bạn là ai, không yêu cầu bạn đăng nhập, cũng không lưu giữ bất kỳ thông tin nào về bạn. Chỉ cần bật Bluetooth vậy là đủ.

c8c9cfc6-437a-4bdb-897d-6f78c36c1047

Khi nghiên cứu về ứng dụng này, nó làm tôi gợi nhớ đến thời StackOverflow cực kỳ thịnh hành bao nhiêu năm cùng anh em lập trình nhưng khi AI ra mắt thì đã bị giảm hơn 50% lượng truy cập.

Liệu rất nhiều ứng dụng cần máy chủ, cần internet,… ngoài kia và được quản lý bởi “Một ai đấy/Một tổ chức nào đấy” sẽ bị thay thế trong tương lai bởi tính ứng dụng mạnh mẽ của nó. Tuy nhiên, nó vẫn đang trong thời kỳ khá sơ khai nên không thể biết được nó sẽ có thể phát triển đến mức độ nào. Nhưng mà tôi thật sự trông mong vào nó.

Ứng dụng đó chính là Bitchat một ứng dụng đến từ nhà sáng lập Twitter – Jack Dorsey.

2e684c78-ff73-4abb-896a-b42ab8c31556

Bitchat hoạt động như thế nào khi không có Internet?

Bitchat kết nối các thiết bị lại với nhau bằng Bluetooth Low Energy, hình thành nên một mạng lưới chia sẻ ngắn hạn giữa những người ở gần. Mỗi điện thoại là một điểm trung chuyển. Tin nhắn không cần phải đi thẳng – chúng có thể “trèo đèo lội suối” qua các thiết bị trung gian, cho đến khi gặp được người cần nhận.

Không có bên thứ ba. Không có máy chủ. Không có lưu vết. Không ai đứng ở giữa để xem bạn nói gì. Ứng dụng này không có giao diện hào nhoáng. Không hướng tới số đông. Không quảng bá rầm rộ. Nhưng nó làm được điều quan trọng nhất: nó hoạt động.

Chúng ta đang sống trong một thế giới mà việc “luôn có mạng” là điều mặc định. Mọi thứ đều qua Internet, từ cuộc gọi, tin nhắn, đến những cuộc họp quan trọng. Nhưng nếu một ngày, mạng biến mất – vì thiên tai, vì xung đột, vì kiểm duyệt – liệu chúng ta còn cách nào để kết nối với nhau?

Mỗi tin nhắn là một mẩu dữ liệu nhỏ, được gói gọn trong packet, truyền đi như một tín hiệu đèn nhấp nháy. Nếu có người đứng gần bạn, họ “thấy” được tín hiệu đó. Nếu họ thấy, họ có thể lưu lại, và tự tiếp tục phát ra – giống như bạn đưa cho người bên cạnh một cái hộp khóa và nói với họ chuyển tiếp giúp tôi tới người kia, và họ chuyển tiếp với người bên cạnh họ, cứ như vậy. Đó là cách tin nhắn lan xa: từng người làm trạm chuyển tiếp, không ai giữ vai trò trung tâm.

Jack Dorsey không đưa ra câu trả lời. Nhưng ông ấy đưa ra một lựa chọn: một công cụ nhỏ gọn, mở, không ràng buộc, để phòng khi mọi thứ quen thuộc không còn nữa.

Đây là mã nguồn của Bitchat trên GitHub https://github.com/jackjackbits/bitchat. Nó không có roadmap, không có lộ trình mở rộng. Nó đơn giản chỉ ở đó, như một lời thì thầm rất nhẹ giữa những người hiểu:

“Nếu một ngày mất hết kết nối, ta vẫn còn có thể trò chuyện.”

Nó làm tôi hơi giật mình vì tính thầm lặng nhưng cực kỳ tiềm năng. Nhưng như đã nói ở trên và thật sự đến hiện tại thì nó cũng không phải mới, chưa quá thần thánh cũng như khá nhiều nhược điểm, và có thể thậm trí rất nhiều tổ chức đã nhìn ra nhưng tính chưa khả thi/chưa phù hợp của nó nên chưa thể phát triển mạnh mẽ. Vậy chúng ta đi nghiên cứu một chút.

Làm sao để tin nhắn đến đúng người?

Bitchat dùng public key làm định danh. Bạn không có tài khoản, không cần số điện thoại, nhưng bạn có một cái keypair. Mỗi lần gửi tin nhắn riêng tư, nội dung sẽ được mã hóa bằng public key của người nhận. Người khác có thể thấy tin nhắn đó tồn tại, nhưng không đọc được.

Còn nếu bạn gửi vào phòng công khai – ví dụ một kênh có gắn hashtag – thì tin nhắn được broadcast công khai. Đây giống như phòng IRC, nhưng sống trong sóng BLE, không có server quản lý. Ai “nghe thấy” được sóng, người đó đọc được nội dung.

Đến đây, bạn có thể nghĩ đến các vấn đề như:

  • Làm sao tránh spam? (Chưa tránh được, chỉ giới hạn dung lượng và TTL.)
  • Làm sao xác thực người gửi? (Chưa có xác thực ngoài public key.)
  • Làm sao kiểm soát việc chia sẻ nhạy cảm? (Chưa kiểm soát, vì không có server.)
  • Những điều đó không phải vì họ không nghĩ đến, mà vì họ chủ đích không giải quyết theo cách truyền thống.

Thật sự không hạ tầng?

Nói đúng ra, chính thiết bị của bạn là hạ tầng. Không có cluster để deploy, không có CI/CD, không có Prometheus để theo dõi. Cái duy nhất bạn có thể nói là “có bao nhiêu người đang xung quanh tôi dùng Bitchat”.

Mọi tính toán – mã hóa, chuyển tiếp, quản lý kênh – đều diễn ra trên thiết bị đầu cuối. Đây là kiểu kiến trúc computation on the edge, triệt để theo đúng nghĩa. Và vì không có backend, mọi logic phải cực nhẹ, cực gọn, và chấp nhận rủi ro. Không có ACK, không có retry logic kiểu HTTP. Tin nhắn có thể mất. Mạng có thể tắc. Đó là bản chất của thứ này.

Nhưng đổi lại: nó tồn tại bất chấp sập mạng, bất chấp kiểm duyệt, bất chấp cả không gian mạng. Bạn chỉ cần điện thoại, và một người đứng gần.

Thứ này thực tế được không?

Chắc là: Tuỳ bối cảnh.

Điều kiện thông thường, khó. Mật độ người dùng quá thấp, mạng lưới khó duy trì ổn định. Nhưng trong đám đông – như lễ hội, biểu tình, sự kiện cúp mạng – Bitchat là thứ có thể tồn tại khi tất cả mọi thứ khác sụp đổ.

Còn trong giới công nghệ, nó là một ví dụ tuyệt vời về việc xây một ứng dụng không phụ thuộc vào Internet, theo đúng nghĩa. Và khi bạn đã quen với việc mọi thứ phải có DNS, load balancer, autoscaling group, thì thứ như Bitchat là một cú tát tỉnh táo: bạn có thể xây một mạng mà không cần mạng.

Điều đáng nể ở đây là gì?

Cái khiến tôi tôn trọng Bitchat không phải là kỹ thuật – kỹ thuật của nó không quá mới. Nhưng cách nó tối giản hóa mọi thứ, giữ đúng bản chất của decentralized, không cố làm hài lòng mọi người, không cố fit vào mô hình cloud – đó là điều hiếm thấy. Bạn không cần login. Không cần xác minh email. Nhưng nó hoạt động, và nó tồn tại đúng như những gì nó nói: “Encrypted, public domain messaging, without the Internet.

Đây là trải nghiệm sau khi dành thời gian nghiên cứu về Bitchat, thật sự mong chờ vào thứ gì đó trong tương lai nơi điều kiện tồi thệ nhất – mất mạng, tận thế chúng ta vẫn biết được “chúng ta” đang ở đâu.

Article Thumbnail
Datadog Webinar: Modernize AWS Logs at Scale
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận