Bên trong hệ thống
Bạn không cần biết những điều này để dùng VinglishTalk — nhưng nếu bạn tò mò một ứng dụng âm thanh trực tiếp có thể chạy nhanh, tiết kiệm và gần gũi như thế nào, đây là bức tranh tổng thể. Toàn bộ hệ thống được xây để một người có thể vận hành, với chi phí dự đoán được và dữ liệu không rời khỏi đất nước.
Hai nửa
Svelte 5 + SvelteKit
Giao diện bạn thấy — sảnh chờ, phòng, lớp học, hồ sơ — là một ứng dụng Svelte hiện đại, được render phía máy chủ để hiển thị nhanh và trải nghiệm di động mượt mà.
Elixir trên BEAM
Mọi thứ diễn ra theo thời gian thực — ai đang trong phòng, ai đang sẵn sàng ở Phòng Chờ, hàng đợi, chat, tín hiệu — đều chạy trên máy chủ Phoenix được xây dựng cho hàng triệu cuộc hội thoại nhỏ đồng thời.
Phần backend thời gian thực là lựa chọn thú vị nhất. Nó chạy trên BEAM, máy ảo đứng sau Elixir và Erlang, được thiết kế cho đúng mục đích này: hàng triệu kết nối giá rẻ, độc lập và luôn sẵn sàng. Mỗi người trong phòng chỉ tốn khoảng hai kilobyte bộ nhớ, và độ trễ tin nhắn không tăng dù có mười hay mười nghìn người online. Nếu một phòng gặp sự cố, supervisor chỉ khởi động lại đúng phòng đó — phần còn lại của trang không hề hay biết.
Âm thanh di chuyển như thế nào
Lớp âm thanh sử dụng WebRTC, được thiết kế khác nhau cho từng định dạng để kết nối của mỗi người không bao giờ phải làm nhiều hơn mức cần thiết:
| Định dạng | Âm thanh lưu chuyển ra sao |
|---|---|
| Phòng Normal | Tối đa 3 người nói chuyện trực tiếp với nhau (một mạng lưới song công nhỏ). Âm thanh tổng hợp của họ được chuyển tiếp một chiều tới mọi người nghe qua máy chủ âm thanh, nên băng thông tải lên của người nói không đổi dù lượng khán giả tăng đến bao nhiêu. |
| phòng Audio Chat | Giọng nói là liên kết trực tiếp, riêng tư giữa Sparker và Echoer trong lúc họ soạn thảo. Thứ đến được với cả phòng là thẻ đã hoàn chỉnh. |
| Lớp học trực tiếp | Cả hai người nói (giáo viên + học viên hiện tại) và mọi người xem đều kết nối qua cùng một máy chủ âm thanh. Trong Tiếp theo, máy chủ chuyển micro từ học viên này sang học viên tiếp theo. |
Máy chủ âm thanh đó — phần chuyển tiếp giọng nói của từng người nói đến đám đông — chạy bên trong cùng một tiến trình với mọi thứ khác, thay vì là một thành phần hạ tầng riêng biệt. Một máy chủ duy nhất để triển khai, chuyển giao nhanh tính bằng micro giây, và tự động dọn dẹp khi phòng kết thúc.
Những gì chúng tôi lưu giữ, và những gì không
Các phòng trực tiếp là tạm thời. Âm thanh của chúng chỉ được ghi vào ổ đĩa trong khi phòng đang hoạt động và xóa ngay khi kết thúc — không có lưu trữ những lần vấp váp của bạn và không có phát lại. Thứ duy nhất được giữ lâu dài là ba Suy nghĩ của tôi clip, được nén mạnh. Và không có phiên âm bằng AI ở bất kỳ đâu trong quy trình: khi một cuộc hội thoại được tóm tắt, một người thật làm điều đó, một cách có chủ đích. (Đọc lý do tại sao.)
Phần còn lại của hệ thống
- Cơ sở dữ liệu — PostgreSQL, lưu tài khoản, siêu dữ liệu phòng, đồ thị xã hội và hệ thống kinh tế.
- Tài khoản — đăng nhập bằng Google hoặc mật khẩu.
- Thanh toán — luồng chuyển khoản ngân hàng QR tự xây dựng, được xác nhận tự động bằng webhook. Không có trang thanh toán bên thứ ba. (Xem Credits.)
- Lưu trữ — một máy chủ tự quản lý duy nhất ở Việt Nam, giúp độ trễ thấp cho những người chúng tôi xây dựng vì họ và dữ liệu luôn gần với quê nhà.
Phòng tạm thời, lưu trữ tối giản, một máy chủ, không có hóa đơn AI — mỗi điều này là một ranh giới có chủ đích giúp VinglishTalk rẻ để vận hành và đơn giản để tin tưởng. Trang triết lý giải thích tại sao những giới hạn như thế này là tính năng, không phải sự nhượng bộ.