Đường sắt Nhật Bản trên Hacker News và bài học đắt giá về kiến trúc Microservices, SLA 99.999% và tối ưu business logic dành riêng cho anh em thợ code.

Anh em dev lúc nào cũng than vãn về hệ thống cùi bắp, server sập lên sập xuống, hay code chạy chậm như rùa bò. Nay đổi gió tí, anh em sang Nhật ngó xem cái "hệ thống" đường sắt của họ chạy mượt cỡ nào. Vừa lên top Hacker News với gần 500 upvote, bài viết này tưởng chừng chỉ dành cho mấy bác quy hoạch đô thị, nhưng ngẫm lại, nó chính là một kho tàng bài học về System Design cho mấy pháp sư code dạo chúng ta.
1. Đập bỏ Monolith, chuyển sang Microservices (Tư nhân hóa): Ngày xưa, đường sắt quốc gia Nhật Bản (JNR) là một cục monolith bự chà bá, nợ nần đầm đìa, chạy rề rề lỗ sấp mặt. Đến năm 1987, các cốp quyết định "refactor" toàn bộ, đập đi xây lại, chia nhỏ thành các công ty khu vực độc lập (JR East, JR West, v.v.). Tách microservices thành công, mỗi bên tự hạch toán, tự tối ưu tài nguyên, hệ thống bỗng nhiên nhẹ gánh và chạy vù vù.
2. Bán bia kèm lạc (Đa dạng hóa doanh thu): Mấy công ty này không chỉ chăm chăm bán vé tàu, mà họ còn là trùm bất động sản. Nhà ga chính là cái hub trung tâm, xung quanh build thêm mall, khách sạn, siêu thị, văn phòng. Kiểu như anh em làm app miễn phí nhưng bú tiền từ hệ sinh thái xung quanh vậy. Business model quá out trình.
3. SLA 99.999% (Đúng giờ tuyệt đối): Delay bên này tính bằng giây. Lịch trình chạy tàu được thiết kế như một chuỗi cronjob hoàn hảo. Quan trọng hơn, họ tính toán mọi edge case (động đất, bão lũ) cực kỳ "bén". Hệ thống có cơ chế fallback và redundancy đỉnh cao, không bao giờ có chuyện chết chùm.
Phe 1: "Code này chỉ chạy được ở local thôi!" Nhiều ông nhảy vào cự cãi rằng tàu Nhật thành công nhờ văn hóa kỷ luật và mật độ dân số quá đông. Kiểu như "Môi trường local của tao chạy mượt, mài mang sang Mỹ đất rộng người thưa deploy là toang ngay!".
Phe 2: "Legacy code của Mỹ hết cứu nổi rồi" Tranh thủ cơ hội, dân tình Reddit với Hacker News lôi luôn hệ thống Amtrak của Mỹ ra tế sống. Kêu là quy hoạch như một mớ bòng bong spaghetti code, maintain máy chủ với hạ tầng thì yếu kém, đụng đâu hỏng đó, tiền đổ vào như muối bỏ bể.
Phe 3: "Quan trọng là business logic" Một số đạo hữu có não thì nhận ra cái hay nhất chính là mô hình "Transit-oriented development" (Phát triển xoay quanh giao thông). Mấy lão bảo: Code xịn đến mấy, hạ tầng ngon đến đâu mà business model rách thì dự án cũng sập. Bài học là phải biết kết hợp.
Từ chuyện cái tàu sắt, anh em mình rút ra được khối thứ để sống sót trong cái ngành IT khắc nghiệt này.
Thứ nhất, đừng bao giờ ôm đồm một hệ thống monolith quá to rồi mộng tưởng nó sẽ scale tốt. Biết chia nhỏ ra (decouple), tối ưu hóa từng module mới là chân ái.
Thứ hai, đừng cắm đầu vào code mà quên mất bài toán kinh doanh. Chạy tàu lỗ thì bán bất động sản xung quanh ga. App ít user thì xoay sang làm SaaS hoặc bán API. Tư duy linh hoạt lên, đừng cứng nhắc.
Cuối cùng, viết code thì phải tính đến edge cases và fallback. Đừng để user nhập sai một cái dấu phẩy mà cả hệ thống lăn đùng ra chết. Học cách để hệ thống "degrade gracefully" (suy thoái nhẹ nhàng) khi có biến, giữ lại bát cơm cho mình và cả công ty.