Viết lại bằng Rails
(dirkjonker.bearblog.dev)-
Bắt đầu blog
- Năm 2022, tác giả bắt đầu phát triển một ứng dụng để lập tờ khai hải quan.
- Sau khi đánh giá nhiều ngôn ngữ và framework, tác giả quyết định phát triển bằng Ruby on Rails.
- Vì đã quen với Rails, tác giả có thể phát triển nhanh hơn 10 lần so với các lựa chọn khác.
-
Phát triển phiên bản 2
- Tác giả bắt đầu phát triển phiên bản thứ hai của ứng dụng bằng Rust và SvelteKit.
- Ban đầu mọi thứ nhanh và tốt, nhưng chỉ triển khai được 10% các tính năng cần thiết.
- Do không có framework Rust nào tương đương với Rails, quá trình này tốn rất nhiều thời gian.
-
Ưu điểm của Rust
- Tác giả trải nghiệm được lợi thế về hiệu năng và khả năng biên dịch không lỗi của Rust.
- Trong Ruby thường xuyên xảy ra lỗi runtime, nên tác giả cảm nhận được sự cần thiết của Rust.
-
Sự thay đổi ở frontend
- Tác giả không hài lòng với frontend của Rails nên quyết định chuyển sang SvelteKit.
- Một số trang đã được chuyển nhanh sang stack mới, nhưng việc triển khai trở nên phức tạp hơn.
-
Thực tế của việc phát triển
- Phần Rails vẫn tiếp tục phát triển bằng cách bổ sung các tính năng hữu ích.
- Tác giả nhận ra rằng việc chuyển sang Rust và Svelte không mang lại giá trị trực tiếp cho người dùng.
-
Sự khó khăn của quyết định
- Tác giả quyết định từ bỏ stack mới và quay lại với Rails.
- Tác giả khuyến khích các thành viên trong nhóm học Rails.
-
Ưu điểm của Rails
- Rails là nền tảng của nhiều công ty thành công và cung cấp nhiều thư viện cùng một hệ sinh thái phong phú.
- Nó giúp tập trung vào phát triển sản phẩm.
-
Bài học
- Việc học ngôn ngữ và framework mới mang lại nhiều góc nhìn sâu sắc.
- Phát triển ứng dụng web đòi hỏi nhiều lựa chọn và sự đánh đổi.
- Quay lại Rails là một quyết định đúng đắn và giúp nâng cao năng suất.
-
Nhược điểm của Ruby và Rails
- Các vấn đề runtime có thể được giải quyết bằng kiểm thử.
- Việc mã nguồn trở nên phức tạp là vấn đề của lập trình viên và cần được tổ chức tốt.
- Rails đủ nhanh, và có thể cải thiện hiệu năng bằng Turbo và caching.
-
Kết luận
- Không có ngôn ngữ hay framework nào là hoàn hảo; cần hiểu và tận dụng ưu nhược điểm của từng lựa chọn.
- Rails là một lựa chọn tốt, và nhiều framework khác cũng rất xuất sắc.
2 bình luận
Viết lại bằng Ruby
Viết lại bằng Rails
Ý kiến trên Hacker News
Rails, Django và Laravel vượt xa các stack khác trong phát triển ứng dụng web. Chúng xử lý các công việc lặp đi lặp lại, hiểu rõ yêu cầu và không cản trở khi xây dựng ứng dụng. Tôi cho rằng phát triển web đã là một bài toán được giải quyết, còn các công nghệ liên quan đến JavaScript thường có xu hướng bị dẫn dắt bởi nguồn vốn của các tập đoàn lớn
Tôi đã dùng Rails suốt 17 năm và vẫn yêu thích, vẫn ưu tiên nó. Nó giúp tách mã dễ dàng nên phần đầu file không bị dài một cách không cần thiết. Khi tách logic và markup ra, có thể kiểm thử chúng độc lập nên việc lần theo bug trở nên dễ hơn
Rust là một ngôn ngữ do những người rất thông minh tạo ra, nhưng nó quá tập trung vào lý thuyết kiểu và cấp phát bộ nhớ nên lập trình viên thông thường khó hiểu. Ngay cả khi đọc các bài blog về Rust, tôi cũng chỉ hiểu được khoảng một nửa
Tôi đã bớt phàn nàn về Ruby và Rails. Không có ngôn ngữ hay framework nào là hoàn hảo, cần biết điểm mạnh và điểm yếu của chúng để ứng phó
Rất khó để viết nhanh một ứng dụng web lớn bằng Rust. Một ứng dụng lớn viết bằng Rails thì không chạy nhanh, có thể nhiều bug, khó bảo trì và khó mở rộng. Các ngôn ngữ như Java, C#, Go có thể hoàn thành công việc nhanh gần bằng Rails nhưng chạy nhanh gần bằng Rust
Lý do các công nghệ như NextJS và SvelteKit phổ biến trong giới phát triển JS là vì chúng giải quyết vấn đề trải nghiệm phát triển backend của Node.JS. Rails đã từng mang đến một giải pháp toàn diện mang tính cách mạng cho việc xây dựng ứng dụng từ năm 2006
Tôi đang thử nghiệm AdonisJS như một lựa chọn thay thế TS cho Rails. Nó tương tự Rails hoặc Laravel và giúp giảm gánh nặng phải tự quyết định mọi phần của stack
Tôi thấy khó hiểu với ý kiến cho rằng Rust không phù hợp cho backend web. Tôi đã có trải nghiệm tốt với các dịch vụ nhỏ; dù độ phức tạp có thể tăng lên khi xây dựng ứng dụng lớn, Rust vẫn mang lại sự tự tin cần thiết cho các codebase quy mô lớn
Tôi đang có trải nghiệm tương tự với Django, và các vấn đề hiệu năng chủ yếu phát sinh từ truy vấn cơ sở dữ liệu hơn là từ chính Django
Đây đâu còn là năm 2010, nên tôi thắc mắc vì sao vẫn dùng Rails. Có rất nhiều lựa chọn thay thế như Java(Spring), Go, Node. Dùng Rust cũng là một lựa chọn kỳ quặc chẳng kém gì C++