冠望 发自 凹非寺

量子位 报道 | 公众号 QbitAI
不久前,在“一文看懂当红Serverless:为何AWS、阿里云和腾讯云都在发力「无服务器架构」”中,我们才刚刚探讨了提供Serverless应用开发运维的公有云平台。
比方说AWS Lambda、Azure Functions、Google Cloud Functions等诸多。
或许你还不知道,其实Serverless也可以做到私有化部署。
例如OpenWhisk、Fission、Kubeless、Fn、OpenFaaS等。
都是圈里响当当被部署在私有数据中心的开源Serverless平台
众所周知的事儿。
公有云具备节约用户大量管理成本的优点,但针对技术架构的控制力却较弱。
另外关于安全性的讨论也长期被认定为使用过程中的隐忧之一。
相比之下,在私有环境中构建Serverless平台就没有那么多顾虑,最起码在技术上的确没有太多障碍。
实操如此简单,主要归功于当下成熟度较高的容器技术。
OMG,它俩究竟啥关系?
留个悬念后文待揭晓。
现在还是集中火力聊聊,这些年来,那些Serverless私有化部署的开源平台吧!
盘!Serverless私有化部署:容器助力不可少
1、OpenWhisk
OpenWhisk作为一个开源的Serverless FaaS平台,缘起IBM的Serverless平台,目前由Apache基金会进行孵化和管理。
业内称其功能完备,无论是事件驱动还是函数执行时等核心组件统统不少。
据了解,OpenWhisk可以运行在不同的基础架构上,主要包括物理机、虚拟机、容器平台(比方说Kubernetes)、PaaS(例如OpenShift)、公有云(例如AWS以及Azure等)和私有云(例如Open-Stack)环境中,整体来看还算是兼容并包。
2、Fission
Fission是 Platform9公司推出的一个开源 Serverless框架
据悉用户可以在 Kubernetes集群上运行 Fission,以提供 FaaS平台的服务,具体通过Kubernetes的容器编排能力,对底层的容器化函数执行环境进行调度和编排。
Fission目前支持的语言非常广泛,包含各类常见的编程语言例如 Node.js、 Python、 Java、. NET、 Go、 PHP、 Ruby、 Perl及二进制执行文件等,用户还可以根据需要进行扩展。
此外,Fission还提供了函数的编排能力,通过 Fission Workflows,用户可以定义并执行函数调用链。

3、Kubeless

与 Fission相似, Kubeless也是运行在 Kubernetes平台上的 FaaS
Kubeless官方曾强调其是 Kubernetes原生( Kubernetes native)的 Serverless实现。
在设计之初就引用了许多 Kubernetes原生的组件,例如 Service、 Ingress、 HPA( Horizontal Pod Autoscaler)等。
目前支持的编程语言有 Python、 Ruby、 Node.js和 PHP;用户可以通过定制容器镜像来自定义函数的执行环境。

4、OpenFaaS

如出一辙,OpenFaaS同样是一个基于容器技术构建的 Serverless FaaS平台。
但与上文出现的 Fission、 Kubeless不同的是, OpenFaaS除了支持 Kubernetes外,还支持 Docker Swarm
我们认为Fission和 Kubeless都比较倾向于向用户隐藏底层容器技术的细节。
但在 OpenFaaS中,函数是以容器的形式定义的,这对于用户而言并不是抽象的,而是在定义函数时可以指定具体的容器镜像。
这对于热衷容器技术的开发者来说是个不小的优点。
另外OpenFaaS项目还维护了一个应用市场,名叫 OpenFaaS Store,用户可以从这个软件市场中查找和快速部署社区验证过的函数应用。

5、Fn

这是 IronFunctions团队成员加盟Oracle后的产物。
一样基于容器技术( Container native),并支持多个不同的容器编排平台,主要包括 Kubernetes、 Docker Swarm及 Mesosphere等,此外支持在不同的私有云和公有云平台上进行部署。
值得提及的一点,Fn可以兼容 AWS Lambda的函数代码,用户可以将 AWS Lambda的代码导入 Fn中运行。
不难想象,当 Oracle在其云服务 Oracle Cloud上提供以 Fn为基础的 FaaS服务时,用户可以更容易地将 Serverless应用从 AWS Lambda上迁移出去。
从更多的私有化部署中我们发现,容器技术不仅是当下云计算的重要基础之一,更是实现 Serverless的关键技术手段。
两者看似区别很大:对于容器而言,架构中最小的运行单元是容器无疑;而Serverless则是函数。
容器应用通常是预先部署并保证持续在线;而在Serverless的架构中,应用则是按需加载并执行,比较而言Serverless的使用效率会更高。
实则关联紧密:虽然容器中运行的一般都是一个完整应用,但如果将内部运行的对象从应用置换成函数也是具有可操作性的,并且毫无技术困难。
尽管Kubernetes上默认没有事件触发的支持,也就是说无法做到按照需要来部署容器应用;但如果通过Kubernetes叠加上一些FaaS框架运行包含函数逻辑的容器,用户就会很容易获得让Kubernetes具备FaaS服务的特性。
如此一来,仅凭容器,用户就能够方便做到打包各种编程语言的运行环境,将 Serverless平台快速部署到庞大的计算集群中。
所以“当前绝大多数可以在私有云上部署的Serverless平台方案底层都是基于容器技术实现”这一事实也就顺理成章了。
不过可以肯定的一点,未来容器必将成为私有云环境中构建Serverless能力的一个重要实现基础,零质疑。
盘!Serverless框架与工具:减少复杂、提升效率
尽管目前Serverless平台为用户提供了开发和运行架构的良性基础,但由于该领域并没有建立通用的行业标准,每个 Serverless平台提供给用户使用的接口更是不尽相同。
这就造成了用户同时使用多个Serverless平台时变得困难异常,主要在开发与调试的过程中表现尤为突出。
为了解决该痛点,圈内出现了不少关于Serverless的框架与工具,为降低应用开发、部署和管理复杂度,同时提升效率而助力不少。
打个比方,同时支持AWS、Azure、Google及OpenWhisk等众多平台的Serverless Framework框架就是一款不错的选择。 
1、Serverless Framework
Serverless Framework作为帮助用户构建、部署和管理在不同 Serverless平台之上应用的命令行工具之一,由 Node.js编写。
通过这个命令行工具,用户可以选择不同 Serverless平台的应用模板快速创建出合适分应用框架;再通过简单的命令将应用发布到指定的 Serverless平台上。
当前 Serverless Framework支持的平台有 AWS Lambda、 Azure Cloud Functions、 Google Cloud Functions、 IBM OpenWhisk、 Kubeless以及 Webtask等诸多。

2、Chalice

Serverless Framework算是框架工具中的普适化代表,而Chalice作为 AWS官方支持的开源项目,主要基于 Python实现,用于简化用户定义和部署 AWS Lambda应用。
首先,用户可以通过命令行快速建立一个名为 helloworld的项目框架。
随后,Chalice让用户使用 Python的语法定义 AWS Lambda和 API Gateway的对象。
通过 Chalice命令行,可以做到快速将这个创建应用部署到远端的 AWS Lambda平台上,部署完成后就可以马上访问了。
当然在 Serverless架构中,除了应用层面的无服务器化之外,应用依赖的第三方服务的无服务器化也是十分值得探究的内容之一。
其中无需用户运维,无需过多关心服务底层的基础设施是其显著特点。
对用户而言,管理成本最低,无疑是公有云服务。
例如AWS数据库服务 DynamoDB、 Azure数据库服务 Cosmos DB、 Auth0等都是 Serverless后台服务的典型代表。
私有云服务方面,可圈可点的是 Red Hat推出的基于 Docker和 Kubernetes的 PaaS平台 OpenShift
通过类似于 OpenShift这样的容器 PaaS,可以快速实现 Everything-as-a-Service或者 xPaaS,进一步降低私有数据中心搭建 Serverless后台服务的复杂度。
伴随容器技术的日渐成熟,用户在私有化环境构建和管理大规模计算集群的难度降低,容器平台快速获得 Serverless FaaS能力的复杂度随之锐减
可以推测,在此基础上实现私有环境下的 Serverless FaaS平台,还能达到高效的技术支撑作用,妥妥指日可待的感觉,你说呢?
参考资料:
深入浅出Serverless:2 Serverless与相关技术
https://www.jianshu.com/p/af80f1819a90
深入浅出Serverless:3 Serverless的实现
https://www.jianshu.com/p/0a6c4963c8ba
如果面试官问你Serverless,你这样答就稳了
本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。
深入解析OceanBase数据库 | 免费报名
在阿里体系内,OceanBase数据库支撑了支付宝、网商银行等重要业务,已成为世界领先的数据库产品。那么其背后有哪些核心技术?
7月2号第三期直播,蚂蚁集团OceanBase数据库资深专家--韩富晟(颜然)将介绍数据库发展演进历史,并深入解析OceanBase实现数据库的机制。
扫码报名,可加入直播交流群,还可获取系列课程直播回放、分享PPT: 
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态
喜欢就点「在看」吧 !
继续阅读