奧推網

選單
科技

時至 2023 年,為什麼我們還要使用 Ruby on Rails?

摘要:18 年曆史的 Ruby on Rails 至今仍在許多企業中活躍,但也受到了很多質疑,本文作者將分析 Ruby on Rails 的優缺點及其合適的使用場景,聊聊為什麼時至 2023 年,我們還要使用 Ruby on Rails?

原文連結:https://mobidev。biz/blog/ruby-on-rails-not-dead-still-good-for-your-product-development

宣告:本文為 CSDN 翻譯,未經允許禁止轉載。

作者 | Liubov Derevianko譯者 | 彎月 責編 | 鄭麗媛

出品 | CSDN(ID:CSDNnews)

隨著 2023 年的臨近,Ruby on Rails 正在成為一項更加成熟的技術。雖然距離首次釋出已經過去 18 年了,但作為 Web 應用程式開發領域曾經的“救星”,如今仍有很多人在使用 Ruby on Rails。然而,越來越多人開始質疑它的受歡迎程度。因此,在本文中,我們將回答以下問題:

Ruby on Rails 是否還活著?

為什麼時至 2023 年我們還要使用 Ruby on Rails?

何時我們應該使用 Ruby on Rails,以及何時應該使用更具競爭力的技術?

2023 年 Ruby 還活著嗎?

2022 年 9 月,Rails 7。0。4、6。1。7 和 6。0。6 釋出。這些版本包括錯誤修復、效能改進以及其他增強功能。一年前,Rails 7 的第一個 alpha 版本釋出,我們看到了一個活躍社群成功地將一系列想法轉化為行動,並建立了 Web 開發的一個完整的技術棧,解決了前端和後端的許多難題。然而,這些版本的釋出並不能代表軟體開發的實際情況,所以要弄清楚 Ruby on Rails 是死了還是還活著,我們需要看看統計資料。

Stack Overflow 總結了一份最受歡迎的技術列表,其中 Ruby 排在第 14 位,6。37% 的專業開發人員正在使用這門語言。

TIOBE 指數是一個衡量程式語言受歡迎程度的重要指標,不僅考慮了軟體開發人員,還有第三方供應商以及與特定技術相關的課程。根據 2022 年 11 月的 TIOBE 指數,Ruby 在最常用的程式語言排行榜中名列第 20 位。

統計資料證明,在市場的所有選擇中,Ruby on Rails 仍然是不可忽略的存在。雖然 Ruby 已過時,但這並不能抵消 Ruby on Rails 在解決業務問題方面帶來的便利,它依然是最小化可行產品、內容管理系統、動態網站、電子商務解決方案、預訂系統、社交網路以及其他應用程式的核心技術。然而,技術之間的競爭愈演愈烈,我們在為產品選擇技術棧時應考慮許多標準。儘管 Ruby 的效能和可擴充套件性有待提升,但許多世界知名的公司仍然在他們的應用程式中使用 Ruby。

仍在使用 Ruby 的大公司Github

在 C、Shell、Ruby 和 MySQL 的支援下,Github 已成為軟體開發人員託管原始碼的首選。使用 Github 的公司數量已達 180 萬,其中既包括知名企業,也有初創公司。然而,Github 的許多專案仍在使用 Ruby(請參見:https://github。com/collections/projects-that-power-github)。

Airbnb

Airbnb 之所以能夠從眾多競爭對手中脫穎而出,關鍵在於其功能,而不是技術棧。他們的服務代表了一個線上市場,可幫助使用者在旅行期間找到合適的住宿地點,或幫助商家招攬客人。截至 2022 年秋季,Airbnb 的業務範圍擴充套件到了 191 個國家和地區,但他們為 Web 開發選擇的技術棧中仍然包括 Ruby on Rails,因為儘管資料大量湧入,該框架依然能幫助他們有效地管理預訂和交易。

Shopify

作為一家領先的電子商務公司,Shopify 自 2006 年成立以來一直備受關注。如今,這個平臺容納了各種規模的線上銷售企業。Shopify 的技術堆包含數十種技術解決方案和元件,但 Ruby 仍然是該平臺的核心,因為 Ruby 的靈活性以及高效的運營管理。

Dribble

Dribble 一個面向設計師的社交網路平臺,他們可以在其中共享和尋找模型和動畫、聘請其他設計師或獲得工作的反饋。自 2009 年以來,該平臺一直由 Ruby on Rails 提供支援,並且時至今日仍然受到青睞。此外,網上出現了很多利用相同的技術棧生成的 Dribble 克隆。

安永

根據 Statista 的統計資料,目前安永已有 359,449 名員工,其服務網路遍及歐洲、中東、美洲以及其他地區。安永至今仍在使用 Ruby on Rails,而且在其複雜的架構中發揮著至關重要的作用。

除此之外,還有很多公司也在使用 Ruby on Rails,比如Groupon、Coinbase、Gitlab、Zendesk、Etsy、Crunchbase、Ask。fm、Fab 等等,這些知名的公司都採用了 Ruby on Rails,同時還在使用 Go、Python、Java 等作為技術棧的補充。

是否使用 Ruby on Rails,這是一個問題

為了選擇正確的技術棧,首先你需要搞清楚產品的功能性需求和非功能性需求,以及在發展過程中可能會遇到的風險。接下來,我們將分析 Ruby on Rails 的優缺點,然後討論一下關於 Ruby 是否還活著,為什麼人們有如此有爭議。

多年來,由於效能和可擴充套件性的問題,Ruby on Rails 受到了大量批評。與 C++、Golang 或其他程式設計技術相比,Ruby 的效能確實不盡如人意:執行程式碼需要更多時間,尤其在大型高負載專案中能感受到明顯的差異。儘管 Ruby 的速度較慢,但 Rails 應用最佳化可以改善效能問題。事實證明,Ruby on Rails 需要特別注意快取、避免過度記憶體消耗以及有效擴充套件等問題。

那麼,Ruby on Rails 的可擴充套件性是否真的不足呢?Shopify 能夠同時支援 50 多萬家企業,足以證明 Ruby on Rails 的可擴充套件性。因此,如果你有合適的團隊支援軟體開發,即使成本很低,也可以保證 Ruby on Rails 的可擴充套件性。

為了保證 Ruby on Rails 的可擴充套件性,開發團隊需要簡化程式碼、應用模組化的方法並將應用的狀態儲存到客戶端。然而,擴充套件的複雜性取決於架構,從頭開始選擇正確的架構可以大幅簡化將來的擴充套件。因此,各家公司需要更加註意,不要忽視解決方案的生態系統,同時牢記使用者請求可能會大量湧入。下面,我們來簡單地介紹一下 Ruby on Rails 的優缺點,幫助大家確定如何為產品開發選擇框架。

Ruby 的優缺點

下面,讓我們看看 Ruby 的缺點,同時提出解決這些問題的方法。縱覽 Ruby on Rails 的所有差評,人們最常抱怨的問題包括:

執行速度過慢和效能的問題(上述我們已經介紹瞭如何透過最佳化 Ruby on Rails 應用程式來處理這些問題);

流行度下降(尋找經驗豐富的 Ruby on Rails 開發人員是一項艱鉅的挑戰,因為 Ruby 的學習曲線很陡峭。然而,Ruby on Rails 的流行度下降是由Lavarel、Django 以及 Node。js 等競爭技術的不斷髮展造成的)。

雖然 Ruby on Rails 的缺點是由於歷史原因造成的,但全球數以千計的公司仍將其作為主要技術。

為什麼這些公司仍然對 Ruby on Rails 青睞有加?下面,我們來介紹 Ruby on Rails 的五大主要優勢。

1。 加快開發速度

以 Ruby on Rails 為核心的產品,其開發速度令人歎為觀止,這是因為 Ruby on Rails 的語法簡潔明瞭,且提供了開箱即用的解決方案,即所謂的“gem”。對於創業公司以及最小化可行產品的開發來說,時間十分寶貴,一個小小的失誤或任何延遲都可能導致失敗,因此 Ruby on Rails 就成了一種戰略上的選擇。還有一些企業仍在使用 Ruby on Rails 從頭開始構建產品或增強他們的解決方案。

2。 高度安全

企業時刻面臨安全漏洞以及網路釣魚的困擾。網路安全漏洞有損於公司形象,而且還會造成財產損失,因此選擇正確的技術至關重要。選擇 Ruby on Rails,可以最大限度地減少跨站點指令碼編寫、跨站點請求偽造、SQL 注入以及點選劫持等相關的風險,當然前提是你擁有一支能夠保護 Ruby on Rails 應用程式的成熟團隊。

3。 使用簡單

由於 Ruby on Rails 的語法簡單明瞭,程式設計師只需編寫少量程式碼就可以解決複雜的任務。根據 Rails Doctrine,Ruby on Rails 十分注重程式設計師的幸福感。清晰的語法可以開發人員在多個專案之間切換,而不需要漫長的入職培訓。因此,Ruby on Rails 最大的優勢就在於便利性,以及開發和維護程式碼的簡單性。

4。 強大而有凝聚力的社群

社群緊緊圍繞 Ruby on Rails 開發,不斷改進框架。其核心團隊由自 2003 年以來一直致力於 Rails 改進的一群貢獻者組成。超過 6,000 名工程師為 Ruby on Rails 做出了貢獻,幫助 Ruby 穩步解決問題、新增新功能並加快釋出速度。正是因為有了如此強大的社群,Ruby on Rails 才發展成為了一項成熟的技術,因此開發人員在解決複雜問題時,可以透過各種課程、論壇或其他材料輕鬆地找到幫助或問題的答案。

5。 輕鬆實現業務邏輯、並與其他技術相容

Ruby on Rails 是一個帶有控制器和模組的全棧框架,開發人員能夠實現支援 Web 應用程式的複雜業務邏輯。API 和 gem 為此做出了很多貢獻。此外,新增前端框架並與 Ruby on Rails 結合也不會花費太多精力。

何時使用 Ruby?

作為一種技術,Ruby 能夠在以下領域發揮強大的優勢:

Web 應用程式(特別是創業公司或開發最小化可行產品);

移動應用的後端開發(移動開發一般都會選擇 Java、Kotlin 或 Swift,但實際上 Ruby 也可以有效地支援這些後端開發);

電子商務產品(Ruby 不僅可以用於構建線上商店,還可以支援其他模組,從客戶關係管理和支付工具到庫存和營銷元件);

靜態網站生成器(這些生成器可以將模板應用到原始資料,以生成靜態HTML網站,Ruby 可以作為它們的核心技術,14 年前釋出的Jekyll就採用了這種方法);

自動化與 DevOps(你可以利用 Ruby 自動化應用程式的安裝和配置,Heroku、Vagrant、Chef 以及 Puppet 都是出色的自動化與 DevOps 工具);

Web 伺服器(開發人員經常使用 Ruby 處理請求);

資料處理(雖然一般開發人員會利用 Python 解析、分析和儲存資料,但如果需要清理、轉換和驗證資料,則可以考慮 Ruby);

Web 抓取(你可以利用 Ruby 執行復雜的研究和分析,並用它來提取和解析資訊)。

無論你打算構建社交網路應用、金融科技軟體還是教育科技平臺,安全性都是首要考慮因素,而如上所述,安全性是 Ruby 的一個關鍵優勢,因此都可以考慮使用。

Ruby on Rails 的安全性

事實證明,Ruby on Rails 能夠很好地防禦攻擊,並保證安全性。為了保護跨站點指令碼,我們需要篩選自動執行的潛在惡意元件。Ruby on Rails 採用不同的方法來消除風險。例如,用標記 html_safe 標記每一行(未設定標記的輸出將由 Rails 過濾)。或者利用特殊的程式碼結構來保證安全地輸出資料。

對於跨站請求,Ruby on Rails 可以利用 token 認證來應對此類攻擊。此外,對於 POST 和 DELETE 查詢也有相應的安全建議。

Ruby on Rails 的漏洞之一是由批次賦值功能引發的,攻擊者可以利用這個功能更改資料庫中的值並在表中建立新記錄。但經驗豐富的 Ruby on Rails 開發人員可以輕鬆地將這種情況下的風險降至最低。

然而,無論 Ruby on Rails 的環境和語法採取了何種措施規避風險,無論你的 Web 應用程式是線上商店、靜態站點生成器還是利用 Ruby 開發的其他產品,只有開發團隊能夠意識到潛在的風險,並採取相應的措施,才能保護它們。儘管 Ruby on Rails 具有高安全性以及其他方面的優勢,但你應該橫向比較 Django、Laravel、Node。js 等其他競爭技術,並根據自己的需求選擇合適的技術棧。

Ruby 與其他替代技術

在 Hotwire 釋出後,Ruby 就可用於全棧 Web 開發了。如今,我們看到越來越多由 Ruby 全棧開發的 Web 應用程式。然而,對於全棧開發,Ruby 並不乏各類競爭對手。

RUBY/RAILS與 JAVASCRIPT/NODE。JS

從效能來看,JavaScript 比 Ruby 更強大。JavaScript 是低延遲應用程式的最佳選擇,因為它支援非同步處理,所以客戶端不必等待函式執行。而 Ruby 是一種解釋型語言,在執行時解釋以及 CPU 處理的特殊性,導致 Ruby 看起來不如 JavaScript 強大。

Ruby 和 JavaScript 社群都很強大且多樣化。JavaScript 開發人員可以隨意使用模組和包,而 Ruby 開發人員可以使用 gem。然而,我認為 Ruby 社群對使用者更友好,經常舉辦各種聚會、會議和播客。若論程式語言相關的安全漏洞,JavaScript 更多,尤其是在客戶端。就成本而言,這兩種技術的吸引力都不是很強,不過 Ruby 可以作為構建最小化可行產品的最佳工具。另一方面,JavaScript 的需求非常高,連續十年被 Stack Overflow 社群評為最常用的程式語言。

Node。js 是一個 JavaScript 執行時環境,允許我們使用 JavaScript 編寫伺服器端程式碼。你可以透過 Node。js 與瀏覽器和後端共享程式碼,同時處理不同的操作。因此,Node。js 更適合實時應用程式,例如傳送訊息、聊天軟體、線上遊戲等。

在安全性方面,Node。js 不如 Ruby,因為 npm 包可能包含未檢測到的漏洞。雖然 Node。js 的效能更好,但 Ruby 仍然可用於解決以下任務:

全棧 Web 應用程式開發

電商專案

原型製作

網頁抓取

社交網路

RUBY/RAILS 與 PHP/LARAVEL

PHP 作為一種通用指令碼語言,在 Web 開發中的應用已有 25 年的悠久歷史。數量驚人的框架和庫使其成為具有龐大社群的靈活程式語言。2011 年,Taylor Otwell 釋出了 Laravel,這是一個 PHP 框架,可用於身份驗證、路由、會話和快取等 Web 開發任務。那麼,我們應該如何在 PHP 和 Ruby 及其框架之間進行選擇呢?

從效能的角度來看,PHP 優於 Ruby。但相較於 Laravel,Ruby on Rails 的開發速度遙遙領先。這兩個框架的核心原則在很大程度上非常相似。Laravel 在企業級應用程式領域的應用非常廣泛,而 Ruby 的社群更廣泛、更強大。

RUBY/RAILS 與 PYTHON/DJANGO

Python 是一種通用程式語言,自從人工智慧邁入全新的發展階段,Python 的人氣就一路高歌猛進。Python 誕生於 31 年前,如今已成為構建機器學習模型演算法不可或缺的技術。但在比較 Ruby 和 Python 時,我們應該注意以下幾點關鍵的區別:

Ruby 是函數語言程式設計,適合 Web 開發,而 Python 已在 AI 以及學術領域的不同分支找到了應用。

Ruby 是百分百的面向物件程式語言,而 Python 只實現了一部分。

二者宣告變數和使用變數的方式不同。

Django 是 Python 的後端開發框架。與 Ruby on Rails 不同,它不支援全棧開發。就效能而言,這兩個框架大抵相似。同時,Python 和 Ruby 的社群都十分強大。

為什麼 Ruby 非常適合創業公司?

創業公司選擇 Ruby on Rails 開發產品永遠不會導致延誤。Ruby on Rails 非常適合開發最小化可行產品、快速迭代以及擴充套件產品。企業可以在 Ruby on Rails 的幫助下迅速站穩腳跟,而且對於創業公司來說時機是成功的關鍵因素,因此 Ruby on Rails 就是理想的選擇。

一些知名的創業公司都選用了 Ruby:

Stripe

Github

Figma

Airbnb

Shopify

Fiverr

Trivago

這些創業公司不僅藉助 Ruby 迅速取得成功,而且還成功地擴充套件和改造了他們的技術棧。此外,由於 Ruby 的成熟和穩定,開發人員非常喜歡使用它從頭開始建立產品。

下面,我們來看一些使用 Ruby 開發產品的真實案例和專案。

Ruby on Rails 案例研究1:雲提供商應用程式

這是一個一流的公共雲服務,你可以透過電話或電子郵件獲得專業團隊的支援。

許多公共雲服務都缺少這樣貼心的支援,或者需要支付昂貴的費用才能享受到這樣的服務。大多數時候,你只能自力更生。

這款雲服務提供了高度可擴充套件性、安全、快速的基於雲的部署,以及資料完整性,當然還有最重要的個人支援。

該系統的建立使用了最新的技術以及版本,例如 Rails 7、Hotwire、PostgreSQL 和 Sidekiq,為客戶提供了一個 Web 介面來建立不同的雲,並支付相應的費用。此外,它還提供了一個使用者友好的管理面板,幫助我們管理發票、客戶等。

Ruby on Rails 案例研究2:社交網路應用程式

大型社交網路應用程式旨在透過科技促進人與人之間的交流。社交網路改變了我們的生活,這個專案擴了大社交網路的積極因素,並彌補了消極因素。

這個專案帶來了社交網路行業的最佳創新 UI 實踐和使用者體驗。主要特點包括:

帶有自定義設定的註冊/登入/使用者資料頁面;

公開以及私人發帖功能;

評論;

複雜的使用者頭條資訊,提供了大量功能;

實時聊天;

地理定位和地圖;

邀請功能。

他們使用的技術如下:

原生 iOS:Swift、Combine、CoreData、NetworkFramework、Alamofire;

原生 Android:Kotlin、Dagger 2、Litho、RxJava;

Ruby 後端:Ruby/Ruby on Rails、PostgreSQL、Redis、Docker、Kubernetes。

Ruby on Rails 案例研究 3:辦公空間預訂應用程式

這款 Web 應用程式可管理和預訂辦公桌以及會議室。所涉及的技術棧主要包括:Rails 7、Hotwire、Stimulus、Dry-monads、Sidekiq、Adminstrate、Oauth 等。

核心功能

使用者可以管理空間的預訂和排程。授權使用者可以選擇辦公桌以及預訂時間。該系統可用於管理公司的任何設施,包括休息室或其他房間。

使用者可以看到哪位同事在辦公室,因此可以輕鬆地協調場地的使用。

該應用程式透過一個儀表板顯示了所有空間的使用情況,而且還可以控制誰在什麼時候有權訪問特定的空間。

此外,這款應用程式還提供了一個功能,允許使用者透過日曆選擇在一段時間內佔用整個會議室。使用者可以以天、周或月為單位檢視和管理預訂的時間。使用者可以搜尋會議室,並按照位置、容量和設施進行過濾。因此,人們總能找到合適的空間,並充分利用會議室。

如果房間裡的傢俱壞了或缺少一些工具,使用者也可以留下反饋。有了這些資訊,辦公室管理員就可以按照反饋解決這些問題。

Ruby 開發專案的標準流程

以下是我們用 Ruby 開發專案採用的標準流程,僅供參考:

1。檢查客戶提供的所有輸入/文件/設計。

2。分解專案,並估算每一小部分的工時。

3。確定專案的關鍵部分、可能出現的風險,以及工作優先順序。

4。建立專案的技術願景(建議的架構設計和技術棧)。

5。針對專案的每個部分詳細估算工時,包括詳細資訊、評論、問題和建議列表。

6。準備一些演示專案來展示例子,這時就可以使用 Ruby on Rails。

7。更新最終估算,並制定專案的時間計劃和戰略。

8。開發階段。

9。向客戶諮詢未來的開發功能和時間表。

10。定期進行安全以及程式碼質量審查。

如果客戶需要技術協助,則提供支援服務。

《2022-2023 中國開源開發者大調查》重磅啟動,歡迎掃描下方二維碼,參與人人都在使用的「開源開發者」問卷調研,更有 iPad 等精美大禮等你拿!