5 điểm bởi GN⁺ 2025-02-24 | 7 bình luận | Chia sẻ qua WhatsApp
  • Gần đây, tác giả tìm thấy những đĩa vinyl cũ của ông mình và ngạc nhiên khi thấy phương tiện từ một thời đại trước này vẫn phát tốt như thường
    • Đĩa vinyl đã mang lại thay đổi lớn cho việc phân phối âm nhạc, cho phép in và chia sẻ, và vẫn là một tiêu chuẩn cho đến ngày nay
    • Cách chia sẻ âm thanh đã tiến hóa, nhưng phương thức ban đầu vẫn còn hoạt động
    • Trong một thế giới ngày càng phức tạp, nhiều người đang quay lại với vinyl vì sự đơn giản, ổn định và bền bỉ mà nó mang lại
  • Giữa những thay đổi liên tục của công nghệ web, rất dễ quên rằng các website cũ vẫn hoạt động rất tốt
    • Những website văn bản đơn giản từ thập niên 1990 vẫn tải trên trình duyệt hiện đại y hệt như khi đó
    • Website đã có thêm nhiều khả năng theo thời gian như tạo kiểu bằng CSS, tương tác bằng JavaScript, cập nhật thời gian thực qua WebSocket
    • Tuy nhiên, nền tảng của chúng vẫn dựa trên các trang, biểu mẫu và phiên làm việc
  • Ruby on Rails xuất hiện cách đây 20 năm như một cách tiếp cận tích hợp để xây dựng các ứng dụng web tương tác, dựa trên cơ sở dữ liệu
    • Nó đã trở thành nền tảng của vô số công ty thành công như Airbnb, Shopify, Github, Instacart, Gusto, Square, và hiện nay những doanh nghiệp trị giá hàng nghìn tỷ đô la đang vận hành trên Ruby on Rails
  • Công cụ hiệu quả giúp đơn giản hóa những công việc phức tạp thông qua sự trừu tượng hóa
    • Lấy ô tô làm ví dụ, việc lái xe từng đòi hỏi hiểu biết về hệ thống nhiên liệu, thời điểm đánh lửa và cơ cấu ly hợp, nhưng giờ đây phần lớn người lái thậm chí còn không biết xe mình có bao nhiêu số
    • Ruby on Rails đóng gói các thông lệ tốt nhất của phát triển web như phiên đăng nhập, bảo vệ CSRF, ORM cho cơ sở dữ liệu thành một bộ công cụ dễ tiếp cận
    • Những lớp trừu tượng này cho phép lập trình viên tập trung vào việc xây dựng sản phẩm thay vì các chi tiết kỹ thuật
    • Ngày nay, đa số lập trình viên không biết nội dung bên trong cookie đăng nhập, nhưng chính nó đang vận hành ứng dụng
  • Rails thành công nhờ trung thành với các thành phần cơ bản của web
    • Nó sử dụng những thành phần HTML nền tảng như trang, trường nhập liệu và biểu mẫu
    • Là một framework lấy backend làm trung tâm, nó tập trung vào việc xác thực, xử lý và lưu trữ dữ liệu nên việc tạo biểu mẫu rất đơn giản
    Quảng cáo
  • JavaScript bắt đầu nổi bật sau thành công ban đầu của Rails
    • Những tiến bộ của phát triển web trong 10 năm qua về cơ bản đã mang chức năng của ứng dụng iPhone lên website, trong khi chúng vẫn là website
  • Next.js hiện là công cụ phổ biến nhất để xây dựng startup
    • Là một framework lấy frontend làm trung tâm, nó cho phép trạng thái tải động, server-side rendering và xây dựng component phức tạp
    • Một thế hệ doanh nghiệp nghìn tỷ đô la khác cũng đang được xây trên Next.js, và các ứng dụng web này nhanh hơn, tinh vi hơn so với những gì được xây bằng Ruby on Rails
  • Next.js và công nghệ nền tảng của nó là React đang dẫn dắt phần lớn đổi mới của web hiện đại
    • Về cơ bản, các sản phẩm tiêu dùng phổ biến như Spotify, Netflix, Facebook và Stripe đều chạy trên stack này
    • Điều đó cho phép lập trình viên tạo ra những sản phẩm tương tác nhanh và tùy biến, vượt qua giới hạn của các tiêu chuẩn web
  • Dù Next.js được chấp nhận rất nhanh, Rails vẫn giữ được tính phù hợp
    • Các dự án mới, từ dự án độc lập đến công ty AI, vẫn tiếp tục chọn Rails
    Quảng cáo
  • Trên thực tế, làn sóng framework web JavaScript mới như Next.js đã khiến việc xây dựng ứng dụng web trở nên khó hơn
  • Những công cụ này mang lại cho lập trình viên nhiều khả năng hơn như render dữ liệu động và tương tác thời gian thực, nhưng đổi lại mức độ trừu tượng hóa thấp hơn
  • Next.js trên thực tế đang cạnh tranh với các ứng dụng iPhone native
    • Trước đây, để có trải nghiệm người dùng tinh vi, startup cần ứng dụng iPhone, và việc xây một ứng dụng iPhone thường là quá trình phức tạp cần nhiều lập trình viên chuyên môn hóa
    • Next.js đã giúp website tiến gần đến chất lượng của ứng dụng iPhone
    • Ngày nay, một số sản phẩm tinh vi nhất như Linear và ChatGPT đã ra mắt dưới dạng ứng dụng Next.js, còn ứng dụng di động chỉ được ưu tiên thứ yếu.
  • Rails đã tiến hóa trong suốt 20 năm kể từ khi ra mắt, bổ sung tương tác JavaScript, quản lý tác vụ backend, trạng thái tải và các công cụ cho ứng dụng thời gian thực
    • Nó cũng hỗ trợ phát triển ứng dụng di động. Khi các mẫu ứng dụng tiến hóa, Rails đã tích hợp các mẫu đó thành tính năng của framework trong khi vẫn giữ nền tảng dựa trên HTML
  • Phần lớn ứng dụng web vẫn được cấu thành từ các biểu mẫu trên trang
    • Bảng tin tuyển dụng, hệ thống nhà cung cấp, cửa hàng thương mại điện tử đều thuộc nhóm này
    • Next.js có thể xây được những thứ đó, nhưng cần thêm thời gian phát triển so với Rails
    • Việc dùng framework tối tân thường kéo theo sự bất ổn thông qua cập nhật thường xuyên, thư viện mới và những vấn đề ngoài dự kiến
    • Ứng dụng Next.js thường phụ thuộc vào nhiều dịch vụ bên thứ ba như Vercel, Resend, Temporal, làm gia tăng rủi ro nền tảng
  • Các lập trình viên vẫn chọn Rails ngày nay vì, sau 20 năm, đây vẫn là cách đơn giản và được trừu tượng hóa tốt nhất để xây dựng ứng dụng web
    • Lập trình viên solo có thể tự tạo ứng dụng web động và thời gian thực, còn các đội ngũ doanh nghiệp có thể xây ứng dụng với nhiều model và kiểm soát truy cập, đồng thời hỗ trợ kiểm thử kỹ lưỡng
    • Rails giúp các nhóm nhỏ làm việc nhanh hơn và giảm chi phí phát triển cũng như bảo trì
  • Tác giả có kinh nghiệm sử dụng cả hai framework
    • Tác giả đã xây dựng Find AI, một startup AI được đầu tư mạo hiểm, bằng Rails
    • Với vai trò là công cụ tìm kiếm, nó hưởng lợi từ khả năng của Rails trong việc xử lý các tác vụ backend phức tạp cùng yêu cầu frontend đơn giản
    • Hiện tác giả đang làm Chroma Cloud để khám phá và quản lý các tập dữ liệu lớn, và Next.js đáp ứng được nhu cầu tương tác nâng cao cùng tải dữ liệu
    Quảng cáo
  • Rails đang bắt đầu bộc lộ dấu hiệu lão hóa trong làn sóng ứng dụng dựa trên AI hiện nay
    • Nó gặp khó ở các lĩnh vực như stream văn bản từ LLM (mô hình ngôn ngữ lớn), xử lý song song của Ruby và hỗ trợ kiểu mạnh cho các công cụ lập trình AI.
    • Dù vậy, nó vẫn là một công cụ hiệu quả
  • Đĩa vinyl đã mở rộng khả năng tiếp cận âm nhạc và làm thay đổi ngành công nghiệp
    • Theo thời gian, chất lượng âm thanh đã được cải thiện, nhưng định dạng ban đầu vẫn còn giá trị
    • The Köln Concert vẫn được yêu thích bất kể bitrate
    • Trong thế giới công nghệ cũng vậy, ta có thể tận hưởng những sản phẩm tinh vi như Linear, đồng thời website phong cách thập niên 90 của Craigslist vẫn có thể tạo ra nhiều doanh thu hơn.
  • Sau cùng, người dùng quan tâm đến tính hữu ích của sản phẩm hơn là cách nó được triển khai
    • Sự tinh vi về hình thức có thể phai nhạt, nhưng tính hữu ích thì bền lâu

7 bình luận

 
jhj0517 2025-02-24

Airbnb, Shopify, Github — có nhiều công ty dùng Ruby on Rails hơn mình nghĩ đấy!! 😊

 
thinkpad 2025-02-24

Đây là lần đầu tôi nghe rằng GitHub được phát triển bằng Rails. Còn GitLab thì đúng là được phát triển bằng Rails... GitLab đã dùng Rails rất tốt nên điều đó vẫn khiến tôi nhớ rất lâu.

 
hahnlee 2025-02-24

GitHub thời kỳ đầu đã xây dựng mạng lưới xoay quanh cộng đồng Rails.
https://read.first1000.co/p/-github

Hơi khác chủ đề một chút, nhưng từng có vụ Egor Homakov chỉ ra một vấn đề bảo mật của Ruby on Rails (Mass Assignment Vulnerability). Vì đây là vấn đề có thể tránh được nếu lập trình viên cẩn thận, nên đã có tranh luận về việc có nên vá nó hay không. (Vì cũng có thể nói kiểu RTFM mà.)

Cách mà Egor Homakov, người đã báo cáo vấn đề này, lựa chọn là tấn công GitHub, khi đó cũng vận hành bằng Rails, thậm chí còn là nơi Rails được host. Và anh ấy đã thực sự thành công.

Vì thế, điều đó cho thấy ngay cả ứng dụng Rails lớn nhất cũng không miễn nhiễm trước trường hợp này.

Tôi nghĩ đây là một lựa chọn giữa việc tin vào lập trình viên (quản lý bộ nhớ thủ công) hay không tin họ (GC, v.v.), nhưng tôi vẫn thường nhớ tới chuyện này mỗi khi thấy những câu trả lời kiểu RTFM, hoặc trong bảo mật khi người ta cảnh giác với giả định rằng "đã biết rồi thì sẽ làm đúng".

https://news.ycombinator.com/item?id=3666564

 
thinkpad 2025-02-25

Cảm ơn bạn. :)

 
orange 2025-02-24

Vì sao Ruby on Rails vẫn quan trọng - Cách một công cụ cũ tồn tại trong thế giới Next.js

https://github.blog/engineering/building-github-with-ruby-and-rails/

 
thinkpad 2025-02-24

Cảm ơn.

 
GN⁺ 2025-02-24
Ý kiến Hacker News
  • Trong lúc hàng trăm người đang đọc bài viết này, các bạn thực ra đang truy cập nó thông qua chiếc Mac Mini trên bàn làm việc của tôi

  • Tôi thích những ứng dụng web chỉ có các biểu mẫu CRUD. Không phải bài toán nào cũng áp dụng được, nhưng với nhiều miền vấn đề có tương tác với thế giới thực thì cách này hoạt động rất tốt. Kiểu như: "muốn kiểm tra có cuộc hẹn hay không thì hãy xem danh sách cuộc hẹn"

    • Mặt khác, kiểu mẫu "ứng dụng" pha trộn vào lịch tích hợp hoặc dashboard cũng hữu ích. Rails cũng có thể xây dựng tất cả những thứ đó. Nhưng sự đơn giản của ứng dụng CRUD vẫn rất hấp dẫn
    • Bạn có thể xây dựng theo bất kỳ phong cách nào bằng công nghệ mình muốn, nhưng Rails dường như ưu tiên kiểu "1 model = 1 khái niệm = 1 thực thể REST"
    • Các thư viện như Next.js dường như ưu tiên kiểu "1 tác vụ/chế độ xem = các khái niệm trộn lẫn = 1 màn hình cụ thể"
  • Cộng đồng Ruby/Rails có điểm kỳ lạ là một nửa thì âm thầm làm việc, nửa còn lại dường như phải định kỳ nhắc mọi người rằng Rails vẫn chưa chết

    • Không phải mọi thứ đều cần AI
  • Rails đang bộc lộ tuổi tác trong làn sóng ứng dụng AI. Nó gặp khó khăn với việc streaming văn bản từ LLM và xử lý song song

    • Theo kinh nghiệm của tôi thì nó hoạt động rất dễ dàng với Hotwire. Tôi đang vận hành một giao diện chat agent có streaming trên ứng dụng Rails với hàng nghìn người dùng mà không gặp vấn đề gì
  • Tôi đề xuất Django + gevent. Nó sử dụng hệ thống kiểu của Python và phù hợp với streaming cũng như xử lý song song cho tác vụ bị giới hạn bởi IO. Nó không phù hợp với xử lý song song cho tác vụ bị giới hạn bởi CPU, nhưng với ứng dụng web thì điều đó ít quan trọng hơn

  • Có thể xây dựng và duy trì một meta web framework kiểu RoR bằng Ruby, Django và ngôn ngữ D

    • Go và Rust là những ngôn ngữ tuyệt vời, nhưng tôi thắc mắc vì sao chúng chưa tạo ra được framework như Rails. Không rõ rồi theo thời gian có thể làm được hay là có một vấn đề mang tính nền tảng nào đó
  • RoR rất mạnh. Nhưng mọi thứ thay đổi quá nhanh, nên có cảm giác nếu không theo kịp công nghệ mới nhất thì sẽ bị tụt lại phía sau

  • Tôi từng nghe lời chê rằng các công cụ AI hỗ trợ lập trình thiếu kiểu mạnh, nhưng theo kinh nghiệm của tôi thì LLM hoạt động tốt trên codebase Rails

    • Rails có những quy ước rất mạnh, nên ngay cả khi không có thông tin kiểu thì LLM vẫn học rất tốt. Cốt lõi của Rails cũng không thay đổi nhiều theo thời gian
  • Tôi đang dùng Django và mọi thứ đều cho cảm giác mới mẻ. Tôi dùng htmx + alpine.js để gửi HTML, và năng suất đã tăng lên đáng kể khi rời xa JSON REST API

  • RoR rất tuyệt. Ruby cần phát triển xa hơn thế

    • Tôi từng làm ở một công ty phải chọn giữa việc viết lại ứng dụng Django sang Python 3 hay viết lại bằng RoR, và họ đã chọn phương án sau. Nhiều ý tưởng xuất hiện trong Django ban đầu lại bắt nguồn từ RoR
    • Ruby cũng cần được đón nhận trong các lĩnh vực khác như cách Rails đã được đón nhận, chẳng hạn tính toán khoa học, machine learning/AI, phân tích dữ liệu, v.v.
  • Trong thập niên 2010, cách tiếp cận ưu tiên quy ước hơn cấu hình đã trở nên phổ biến

    • Angular, EmberJS, Django, Rails đều rất phổ biến
    • Stack hiện đại đã chuyển sang React/NextJS cùng với backend tùy biến
    • Tôi tự hỏi liệu NextJS có phải là cách tiếp cận "ưu tiên quy ước hơn cấu hình" phù hợp nhất cho React hay không