大家好,我是 donghui,今天我分享的话题是:说说 Ruby 与 Serverless。
从2020年下半年开始,一直关注与研究 Serverless。最近查阅 Serverless 相关资讯,注意到一个 Ruby Serverless 框架——Jets。心中便有一些疑问:为什么会有这个项目?它是用来做什么的?作为一门小众语言,有哪些 Serverlss 平台支持了 Ruby 语言?既然有这么多疑问,于是就想理一理 Ruby 与 Serverless 之间的关系,随之自然而然就有了这次分享。
本次分享主要分为以下四部分:
本次分享会着重介绍 Faas 平台对 Ruby 的支持情况。
首先介绍下 Ruby,它由日本的松本行弘于1993年创立,它的 logo 是一颗闪亮、美丽的红宝石。
最近关于 Ruby 的最大新闻是:2020年12月25日,Ruby 3.0.0 正式发布。
Ruby 3.0.0 的目标是更高的性能、并发性和更安全的类型。尤其是在性能上,官方表示「Ruby 3 会比 Ruby 2 快 3 倍」。
有哪些流行的项目是用 Ruby 开发的呢?这里首先要提的是全球著名的代码社交平台 Github,它是开源项目的沃土。
GitHub 最初就是使用 Ruby on Rails 构建的,它是 Ruby 社区创建的一个项目,Github 的流行 Ruby 社区功不可没。
值得一提的是,近些年,开发者在找工作时,有时 GitHub 开源项目经历也成了一个加分项。
类似的,作为 GitHub 的开源替代产品,Gitlab 支持私有化部署,它也是使用 Ruby on Rails 构建的。
如果要在内网搭建代码管理平台,GitLab 绝对是首选;曾经工作过的公司代码管理平台无一例外都是使用 GitLab 搭建的。
比较流行的 CI 服务,Travis CI 也是由 Ruby 开发的,它是一个托管的 CI 服务平台,与 GitHub 紧密集成。
使用过 GitHub 的开发者应该知道它,如果你在 GitHub 上有开源项目,就可以免费使用 Travis CI 构建自己的 CI 流水线。
Jekyll 是一个简单的博客形态的静态站点生成器,它也是使用 Ruby 开发的。使用 GitHub Pages + Jekyll,可以轻而易举地在 GitHub 上免费发布网站。
当然还有很多使用 Ruby 开发的项目,一些 Ruby 开发的其他服务或应用,可以关注 PPT 页面给出的 URL。
下面说说 Jets, 它是一个 Ruby serverless 框架,可以让你轻松创建和部署服务。
它包括了构建 API 并将其部署到 AWS Lambda 所需要的一切。
Jets 是一个脚手架,你只需要专注编写代码,Jets 会将代码转换为 Lambda 函数和其他 AWS 资源(如:API Gateway、S3、DynamoDB)。
Jets 可以构建许多体系结构。PPT 图中所展示的传统 Web 架构示例,可以使用 Jets 轻松完成。
此外,Jets 的文档特别丰富,上手成本也低,对于 Ruby 开发者来说,绝对值得一试。
平心而论,Ruby 是一门小众的编程语言,尤其是在国内,日常工作中很少用到。
据统计,Serverless Faas 最常用的语言是 NodeJS,其次是 Python,Ruby 用的少。
有哪些公有云 Serverless Faas 平台支持 Ruby 语言呢?
公有云 Serverless Faas 平台一般不会支持所有语言,但是它们大多支持 Custom Runtime(自定义语言)。
对于官方不支持的语言,就可以通过 Custom Runtime 来实现。
这里对各个公有云 Serverless Faas 平台支持的语言做一个梳理。
这些公有云 Serverless Faas 平台包括:AWS Lambda、Azure Functions、IBM Cloud Functions、腾讯云云函数 SCF、阿里云函数计算、百度智能云函数计算 CFC、华为云函数工作流 FunctionGraph。
从 PPT 的图表可以看出,众多公有云 Faas 平台中 AWS Lambda 和 IBM Cloud Functions 官方提供了对 Ruby 的支持。
AWS Lambda 应该是最早支持 Ruby 的。其中,在2018年11月29日,AWS Lambda 正式支持了 Ruby 2.5;2020年2月19日,支持了 Ruby 2.7。
这里还有一个 关于 Ruby 与 Serverless 的故事:在 AWS Lambda 未支持 Ruby 之前,Ruby 社区曾于2018年3月9日在 serverless-ruby.org 发布了一个请愿书,请求 Faas 平台支持 Ruby,共有1602个开发者签署了这个请愿书。
此外,在 GitHub awslabs 组织的仓库中,有三个与 AWS Lambda Custom Runtime 相关的仓库,分别提供了对 Rust、C++ 和 Dart 的支持。
关于 Azure Functions 对 Ruby 的支持,开发者在 GitHub 的 Azure-Functions 仓库提交了一个相关 issue 请求支持 Ruby,有 Azure 的官方人员回复它将使用 Custom Runtime 实现对 Ruby 的支持并在那个 issue 公开。或许不久的将来,将会看到基于 Custom Runtime 对 Ruby 的支持。
IBM Cloud Functions 基于 Apache OpenWhisk 搭建的,因为 Apache OpenWhisk 支持 Ruby,所以 IBM Cloud Functions 也是支持 Ruby 的。
腾讯云云函数 SCF,在官网上有一个关于 Custom Runtime 的示例,讲述的是使用 Custom Runtime 创建 Bash 示例函数。
在 GitHub 上有两个开发者实现的 Custom Runtime 仓库,分别提供了对 Swift 和 .NET 的支持。
目前没有在 GitHub 上找到关于 Ruby 的实现。
阿里云函数计算在官方文档中列出了一些基于 Custom Runtime 实现的语言,其中包含了 Ruby。
除了公有云的 Serverless Faas 平台,一些开源的 Faas 平台也提供了对 Ruby 的支持,如:Apache OpenWhisk、Kubeless、OpenFaas、Fission 等。
最后,做个总结,本次分享首先介绍了 Ruby 以及使用 Ruby 构建的流行项目,紧接着介绍了 Ruby Serverless 框架——Jets,最后主要阐述了 Serverless Faas 平台对 Ruby 的支持情况,相信未来会有更多的 Faas 平台支持 Ruby。
谢谢!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。