初探Serverless与尝试在Cloudflare Workers上部署应用

初探Serverless与尝试在Cloudflare Workers上部署应用

注:本文部分雷荣编辑自文章尾部的文章,感谢他们的文字!

Serverless

几种即服务

As a Service

  • IaaS (Infrastructure as a Service)

    基础设施即服务:服务商提供底层/物理层基础设施资源(服务器,数据中心,环境控制,电源,服务器机房),客户自己部署和执行操作系统或应用程序等各种软件。

  • PaaS (Platform as a Service)

    平台即服务:服务商提供基础设施底层服务,提供操作系统(Windows,Linux)、数据库服务器、Web服务器、域控制器和其他中间件,以及服务模型中的备份服务等中件层服务。例如IIS,.NET,Apache,MySQL …,客户自己控制上层的应用程序部署与应用托管的环境。

  • SaaS (Software as a Service)

    软件即服务:服务商提供基于软件的解决方案,满足客户最终需求;如OA、CRM、MIS、ERP、HRM、CM、Office 365、iCloud等应用,客户不需考虑任何形式的专业技术知识,获得完整的软件包,使他们的日常工作和生活变得更轻松。

  • FaaS(Function as a service)

    无服务器计算,当前使用最广泛的是AWS的Lambada。

    服务商提供一个平台,允许客户开发、运行和管理应用程序功能,而无需构建和维护通常与开发和启动应用程序相关的基础架构的复杂性。 按照此模型构建应用程序是实现“无服务器”体系结构的一种方式,通常在构建微服务应用程序时使用。

什么是Serverless

无服务器计算是一种按需提供后端服务的方法。无服务器提供程序使用户可以编写和部署代码,而不必担心底层基础结构。请注意,尽管称为无服务器,但仍使用物理服务器,但开发人员无需注意它们。

在Web的发展过程中,首先经历了繁琐复杂物理服务器,然后有了云,接着有了容器,现在又有了无服务.

(图片来自AWS)

“无服务器”一词在某种程度上具有误导性,因为仍然有服务器提供这些后端服务,但是所有服务器空间和基础架构问题都由供应商处理。无服务意味着开发人员可以完全不用担心服务器给开发带来的问题。

容器

容器既包含应用程序,又包含应用程序正常运行所需的所有元素,包括系统库,系统设置和其他依赖项。任何类型的应用程序都可以在容器中运行。无论在何处托管,容器化应用程序都将以相同的方式运行。

容器架构

容器是将机器或服务器划分为单独的用户空间环境的一种方式,这样,每个环境仅运行一个应用程序,并且不会与机器上任何其他分区的部分进行交互。每个容器与其他容器共享计算机的内核(内核是操作系统的基础,并且它与计算机的硬件进行交互),但是它的运行就像是计算机上唯一的系统一样。

Serverless与FaaS

微服务(MicroService)是软件架构领域业另一个热门的话题。如果说微服务是以专注于单一责任与功能的小型功能块为基础,利用模组化的方式组合出复杂的大型应用程序,那么我们还可以进一步认为Serverless架构可以提供一种更加“代码碎片化”的软件架构范式,我们称之为Function as a Services(FaaS)。而所谓的“函数”(Function)提供的是相比微服务更加细小的程序单元。例如,可以通过微服务代表为某个客户执行所有CRUD操作所需的代码,而FaaS中的“函数”可以代表客户所要执行的每个操作:创建、读取、更新,以及删除。当触发“创建账户”事件后,将通过AWS Lambda函数的方式执行相应的“函数”。从这一层意思来说,我们可以简单地将Serverless架构与FaaS概念等同起来。

微服务与整体架构

Cloudflare Workers

在CF Workers的首页是这样写的:The Network is the Computer. CF Workers使得开发人员可以在CF的全球节点上部署JS应用程序,至于这个中间提到的边缘计算,抱歉,还不大懂.

下面,我将在Cloudflare上面部署一个GoIndex(Google drive目录索引程序).

略过的内容

  • Cloudflare的注册
  • 域名的注册,解析
  • Google Drive的注册

如果不会,emm,天转到文章[致谢]部分,去跟着教程做.

获取CF Workers代码

  • 访问网站https://installen.gd.workers.dev/点击`GET AUTH CODE,验证你的谷歌账号获取Auth code`。

  • 然后开始输入你的Auth code,其它可以先默认,然后点击BUILD获取你的代码。

  • 可以自行修改获取到的代码的头部的以下信息:

    1
    2
    3
    4
    5
    6
    var authConfig = {
    "siteName": "GoIndex", // 网站名称
    "root_pass": "index", // 根目录密码,优先于.password
    "version" : "1.0.6", // 程序版本
    "root": "root" // 根目录ID
    };

部署到Workers

  • 登录Cloudflare,在右侧可以看到Workers入口。

    请输入图片描述

  • 新建一个Workers子域名,填写确认后就改不了了,emm,请思考好!

    请输入图片描述

  • 创建一个Workers

    请输入图片描述

  • 将之前步骤获取的Workers代码复制进去,然后点击Save and Deploy即可.[Tips:如果你想自定义这个应用程序的域名,双击左上角,填入子域名.右侧可以查看效果]

    请输入图片描述

绑定域名

  • 先将你的域名转到Cloudflare,CF默认用NS,你可以也采用CNAME方式接入,你需要了解CLoudflare Partner计划.我用过https://cdn.wzfou.com/

  • 然后在Cloudflare官网的导航栏找到Workers,选择吼,点击页面下的Add route,进行如下设置.

    请输入图片描述

  • 按照图中的格式,填入域名,并选择对应的Workers程序即可!(Tips:如你所见,这部分内容我参考的https://moerats.com的文章,做了一定的修改)

    请输入图片描述

  • 然后在DNS功能里,添加一个Cname解析,解析到上述步骤填写的Workers地址.这样就OK了!

Google Drive另外的部署方式

[详细请参看Rat`s Blog的文章](https://www.moerats.com/archives/1001/)

奇葩的姿势

基于CF和GFW的微妙关系,以及JavaScript的强大,我寻思,能不能有一个足够奇葩的姿势访问谷歌学术和维基百科.答案看来是可以的,当我在Gayhub上面找到了下面这两个项目:

jsproxy

WorkersProxy

当然Cloudflare Workers还有一个CLI,我没去玩儿,感兴趣的朋友可以自己去看一下!

致谢

什么是无服务器计算?

什么是FaaS服务?

无服务和容器

从IaaS到Faas

IaaS, PaaS, SaaS, BaaS, Faas

GoIndex:一个无需服务器的Google Drive目录索引程序

Cloudflare更详细的教程