Chạy Doom trên DNS: Trò đùa công nghệ cho thấy sức mạnh thật sự của cơ sở dữ liệu
Một kỹ sư đã biến hệ thống DNS thành cỗ máy tính toán để chạy tựa game Doom huyền thoại, dù chỉ ở chế độ theo lượt. Thành tựu kỳ quặc này chứng minh DNS thực chất chỉ là một cơ sở dữ liệu mạnh mẽ, có khả năng lưu trữ và truy xuất mọi loại dữ liệu.

Chạy Doom trên DNS: Trò đùa công nghệ cho thấy sức mạnh thật sự của cơ sở dữ liệu
Tóm tắt nhanh: Một kỹ sư đã biến hệ thống DNS thành cỗ máy tính toán để chạy tựa game Doom huyền thoại, dù chỉ ở chế độ theo lượt. Thành tựu kỳ quặc này chứng minh DNS thực chất chỉ là một cơ sở dữ liệu mạnh mẽ, có khả năng lưu trữ và truy xuất mọi loại dữ liệu.
DNS không chỉ là "danh bạ Internet"
Chúng ta thường nghĩ DNS (Domain Name System) chỉ đơn thuần là hệ thống phân giải tên miền, giúp chuyển đổi tên miền dễ nhớ thành địa chỉ IP. Nhưng Corey Quinn, một chuyên gia về AWS, lại có góc nhìn khác: DNS thực chất là một cơ sở dữ liệu.
Và nếu đã là cơ sở dữ liệu, nó có thể lưu trữ đủ loại dữ liệu — chuỗi, số nguyên, đối tượng JSON, thậm chí cả tọa độ. Từ đó, câu hỏi đặt ra: liệu ta có thể lưu trữ phép toán và các quyết định logic trong DNS? Câu trả lời là có.
Nếu bạn có thể lưu một phép tính như "3 + 2 = 5", và lưu cả các phép so sánh như "3 lớn hơn 2", thì về mặt lý thuyết, bạn đang xây dựng nên một cỗ máy tính. Cần bộ nhớ để lưu số, lưu chỉ thị và chỉ thị tiếp theo sẽ thực thi lệnh nào? DNS đáp ứng được hết.
Từ cơ sở dữ liệu đến cỗ máy chơi game
Corey Quinn đã đi xa hơn khi biên dịch Doom — tựa game huyền thoại vốn được chạy trên mọi thiết bị có màn hình — cho một cỗ máy 32-bit mà phép toán và bộ nhớ của nó nằm hoàn toàn trong DNS.
Để chơi được, anh phải tận dụng giao thức DNS động (RFC 2136 DNS UPDATE) để cập nhật trạng thái. Mỗi lệnh ghi vào DNS tương đương một thao tác "compare-and-swap" — một kỹ thuật mà giới lập trình viên cơ sở dữ liệu gọi là đồng thời lạc quan, hay optimistic concurrency.
"Hóa ra DNS đã hỗ trợ kỹ thuật này từ năm 1997 rồi. Còn cơ sở dữ liệu của bạn thì sao?" — Corey Quinn hóm hỉnh.
Cơ sở dữ liệu anh xây dựng gồm 6,4 triệu dòng bảng chân trị, lưu trữ sẵn mọi kết quả tính toán cần thiết. DNS chỉ đóng vai trò như một thủ thư, tra cứu câu trả lời có sẵn.
Chậm nhưng không tưởng
Tất nhiên, tốc độ là vấn đề lớn. Lần thử đầu tiên, sau khi nhấn nút "Sang phải", Corey phải chờ 577 giây mới thấy kết quả. Sau nhiều tối ưu — chuyển sang UDP, giảm số lần tra cứu, bỏ tính năng padding của BIND — anh đưa thời gian xuống còn 54,4 giây, tức cải thiện gấp 10,6 lần.
Dù vậy, để chơi Doom mượt mà cần tốc độ 28,6 mili giây mỗi nhịp. Thành tích hiện tại vẫn còn cách đích ba bậc độ lớn. Không thể chơi game hành động theo thời gian thực, nhưng chơi theo lượt thì hoàn toàn khả thi.
Điều đáng kinh ngạc thật sự
Corey Quinn nhấn mạnh: đây không phải DNS giả làm CPU. Quá trình giải mã lệnh được thực hiện trước bởi trình biên dịch. BIND chỉ làm ba việc: đọc key-value, ghi có điều kiện, và trả về kết quả có sẵn.
Nói cách khác, đây không phải máy tính — đây đơn giản là một cơ sở dữ liệu rất tốt.
Toàn bộ hệ thống chạy trên BIND 9.20 mặc định của Debian, trong một container không có mạng. Không có phần cứng đặc biệt, không có phần mềm tùy chỉnh phức tạp. Chỉ là DNS thuần túy.
Ý nghĩa đối với giới công nghệ
Với người dùng Việt Nam, câu chuyện này mang lại vài bài học thú vị:
- Hiểu rõ bản chất công cụ mình dùng: DNS không chỉ để phân giải tên miền mà còn là cơ sở dữ liệu phi tập trung, dù chậm.
- Sức mạnh của trừu tượng hóa: Khi hiểu một hệ thống đủ sâu, bạn có thể biến nó thành thứ nó không được thiết kế để làm.
- Tinh thần khám phá: Đôi khi những dự án "vô nghĩa" lại giúp cộng đồng hiểu rõ hơn về công cụ mình sử dụng mỗi ngày.
Dù không ai khuyến khích chạy game trên DNS, nhưng dự án này là lời nhắc nhở rằng: một cơ sở dữ liệu được xây dựng đủ tốt thì có thể làm được nhiều thứ hơn ta tưởng.