时至 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.定期进行安全以及代码质量审查。

本文文字及图片出自 CSDN

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注