---
title: "Một cái network thay được AWS không?"
description: "Nửa sau của cái ý tưởng trên xe máy: một platform dựng trên hạ tầng phi tập trung, và liệu một mạng toàn người lạ có gánh nổi cái tải đủ làm chảy một data center không."
date: 2024-10-19
---

Ý tưởng database chết trên đường về nhà, nhưng có ý thứ hai đi kèm và không chịu buông. Nếu storage sống được trên một cái network, và compute cũng sống được trên một cái network, thì tại sao cái gì cũng cần AWS? Dựng một platform trên hạ tầng phi tập trung thay vì server đi thuê. Không ai tắt được nó. Không ai tăng giá được. Với lại khi traffic lên tới mức vô lý, cái network nuốt hết, vì có hàng nghìn node, không node nào là nút thắt.

Đó là bài pitch. Tôi tin nó khoảng hai mươi phút trên đường về, lâu hơn cái ý database. Rồi tôi bỏ mấy tuần đọc xem có ai thật sự làm được chưa, và câu trả lời hóa ra thú vị hơn cả có hay không.

## Phần thật

Tôi tưởng cả cái này chỉ là hơi nước, mà không phải. Giờ nó thành một hạng mục hẳn hoi, hạ tầng vật lý phi tập trung, và cái tên nói thật đúng nó là gì: phần cứng thật, của người thật, nối vào một network và được trả token cho việc nó làm. Không phải ẩn dụ. Máy móc thật.

Chỗ thú vị là kinh tế. Một cloud provider mua phần cứng, dựng data center, thuê người, rồi tính giá đủ để bù cả ba thứ đó cộng thêm lời. Một network phi tập trung thuê lại phần cứng đã có sẵn, phần lớn đang nằm không, từ những người muốn kiếm chút gì từ nó. Mấy khoản chi phí mà cloud phải gánh thì ở đây không có, nên giá thấp hơn. Không phải thấp hơn chút. Mấy compute market báo giá thấp hơn cloud lớn rất nhiều cho cùng loại việc, vì một con GPU mà bình thường nằm không chỉ có một cái giá thật, và nó gần như bằng không.

Còn lập luận về độ bền thì đứng vững. Data center của một công ty sập là kéo hết mọi người trên đó sập theo. Chuyện đó đã xảy ra, ở quy mô lớn, không chỉ một lần, và công ty nào phụ thuộc vào nó cũng thấy cùng một cảm giác. Một network với hàng nghìn node độc lập không có kiểu hỏng đó. Một node biến mất là một sự kiện, không phải một đợt outage. Phần đó của bài pitch không phải marketing. Nó là khác biệt thật về cấu trúc, và nó có thật.

## Phần không thật

Đây là chỗ hai mươi phút tin tưởng hết.

Mấy network phi tập trung chạy được thì gần như đều làm việc theo batch. Một job render chạy cả tiếng. Một lần train chạy cả ngày. Một bản backup ghi một lần rồi ít khi đọc lại. Nhìn mấy dự án thành công thật sự bán gì thì thấy đúng một hình dạng lặp hoài: công việc không quan tâm lúc nào xong, chỉ cần xong. Node nào đó rớt giữa chừng thì node khác nhặt lên. Job nằm chờ trong queue hai phút thì không ai để ý, vì có ai đang nhìn đâu.

Đó không phải phần lớn traffic trên internet. Phần lớn traffic là một người đang chờ. Một trang họ vừa click. Một query họ vừa chạy. Một nút họ vừa bấm. Đặc điểm của loại traffic đó là có một con người đang nhìn cái spinner, và cái spinner có ý kiến riêng về việc nó nên quay bao lâu. Hạ tầng phi tập trung rất giỏi kiểu "cuối cùng rồi cũng xong" và rất dở kiểu "ngay bây giờ", mà loại traffic quan trọng nhất với một platform thì phần lớn là ngay bây giờ.

Nghiên cứu nói thẳng chuyện này, đọc thấy nhẹ cả người. Mấy bài paper trong ngành thừa nhận protocol hiện tại không phục vụ nổi việc read-heavy khắt khe, và vấn đề không chỉ ở kỹ thuật. Bandwidth đắt và khó tính tiền qua cả một network toàn người lạ. Chưa ai tìm ra cách tính tiền gọn cho một lần read xong trong năm mươi mili giây trên một node ở tận bên kia trái đất, nên mấy network tự nhiên trôi về phía lưu dữ liệu thay vì phục vụ. Phục vụ mới là phần cần một công ty, mà công ty lại là phần ai cũng muốn xóa.

## Bài load test làm tôi đổi ý

Đây là chỗ tôi sai nhiều nhất, và phải đọc một bài paper mới thấy.

Tình huống tôi hình dung là kiểu traffic khủng. Hình dung request nhiều kinh khủng, kiểu đủ làm một data center toát mồ hôi, kiểu một công ty phải mua hàng trăm cái máy và thuê người ngồi canh chúng ban đêm. Tôi tưởng network phi tập trung thắng ở đây theo mặc định. Hàng nghìn node, không có nút thắt nào, tải trải ra, và thứ giết mấy platform tập trung thì đơn giản là không xảy ra.

Đúng được một nửa, và nửa sai lại đúng là nửa tôi quan tâm.

Resilience và throughput là hai bài toán khác nhau, mà tôi gộp thành một. Resilience là chuyện xảy ra khi có thứ gì hỏng. Throughput là mình phục vụ được bao nhiêu khi mọi thứ lành. Một nghìn node bền hơn một node. Không nhanh hơn một node khi trả lời bất kỳ request nào. Với những request quan trọng, những cái một người đang chờ, thì giờ mình bắt cái network route một request cụ thể tới một node cụ thể đang giữ một mẩu dữ liệu cụ thể rồi mang câu trả lời về. Bản tập trung không bao giờ phải trả cái giá đó, vì bản tập trung biết chính xác mọi thứ nằm đâu. Mình đem bài toán routing đi đổi lấy một lợi thế về độ bền, cho một cái tải mà dù sao cũng chẳng làm mình sập.

Nên kết luận thật thà ngược lại hẳn cái tôi nghĩ trên xe máy. Tải khủng, tăng vọt, chịu được, kiểu chờ và retry được: network thật sự có thể tốt hơn, và tốt hơn ngay bây giờ. Tải khủng, đều đặn, bị latency trói, kiểu có người đang nhìn: data center tốt hơn, còn network đem lợi thế duy nhất của mình ra giải một bài toán mình đâu có.

## Cái tôi nghĩ sẽ xảy ra

Đoán của tôi là không bên nào thắng, và mấy workload tự phân chia.

Mấy thứ batch chuyển trước. Training, render, archive, mấy job dài không ai ngồi nhìn. Chúng lên mấy network thuê phần cứng và ở lại đó, vì network rẻ hơn, bền hơn, còn workload thì chưa bao giờ cần nhanh. Mấy thứ bị latency trói thì ở lại. Query, page, session của người dùng, bất cứ thứ gì một con người đang chờ, vì chúng cần câu trả lời ngay từ một cái máy đang sống ngay, và network có khôn cỡ nào cũng không đổi được chuyện đó.

Nên cái tôi tưởng là một sự thay thế chắc là một sự phân chia. Mình không đổi data center lấy một network. Mình nhìn xem mình đang chạy gì, tìm mấy phần chịu được chờ, rồi đưa chúng cho network. Mấy phần nhanh nhàm chán thì cứ ở chỗ cũ, trên một cái máy mình sở hữu và trả tiền, vì chúng buộc phải nhanh, mà đó là thứ duy nhất network không cho mình được.

Đó là một ý nhỏ hơn cái tôi có trên xe máy. Nó cũng là bản đứng vững khi tôi thử phá nó, và đó là lý do tôi viết nó ra thay vì viết bản kêu hơn.

Vài thứ đã đọng lại sau mấy tối nhai lại chuyện này.

Mọi ví dụ tôi tìm được về một workload thật chạy trên hạ tầng phi tập trung đều là batch job. Tôi không tìm được cái nào chuyển database, chuyển một page render, hay bất cứ thứ gì có người đang chờ ở đầu bên kia. Có thể tôi tìm sai chỗ, nhưng cái kiểu này lặp lại đủ đều nên tôi viết nó ra như một cái kiểu.

Chỗ tôi vẫn không trả lời được là sự phân chia này vĩnh viễn hay chỉ là chỗ công nghệ đang đứng lúc này. Mấy bài paper đang giải bài toán read. Vài năm nữa có thể có cách đo lường mấy lần read nhanh qua một network toàn người lạ. Hoặc cũng có thể hóa ra read nhanh cần một công ty giống như ngân hàng cần một tòa nhà, và giấc mơ xóa data center thì xưa giờ nhắm sai tầng. Tôi không biết, và tôi đã thôi mặc định rằng câu trả lời là có.

Cái tôi biết chắc là phản xạ đầu tiên của tôi, rằng một network hàng nghìn node thắng một data center ở mọi thứ, là một suy nghĩ về cấu trúc mà bỏ qua một sự thật về vật lý. Khoảng cách tốn thời gian. Routing tốn thời gian. Một node mình không chọn tốn thời gian. Mấy cái giá đó không biến mất chỉ vì network to hơn, và với một người đang nhìn cái spinner, đó là mấy cái giá duy nhất đáng quan tâm. Tôi có một ý tưởng gọn gàng về việc hệ thống nên tổ chức thế nào và quên mất rằng ở cuối nó, có một người đang chờ.

Cái xe máy đưa cho tôi một điều đúng và một điều sai trong cùng hai mươi phút, mà tôi không phân biệt nổi cho tới khi đọc. Tôi vẫn nghĩ đó là một cú lời cho một chuyến về nhà.
