数人云近来给大家分享了很多 DevOps 相关文章,Serverless 架构是最近两年比较火的一个话题,它可以帮助 DevOps 实践落地,更加灵活,提高工作效率、交付速度等等。
今天数人云就跟大家一起看看 Serverless 架构的前世今生以及 Amazon Web Services、Microsoft Azure、Google Cloud Platform、IBM Bluemix/OpenWhisk 四大平台和工具。
Serverless 架构在 IT 行业蓄势待发,并非没有道理。尽管这是一个相对较新的技术,但已引起了广泛的关注,许多新技术专家指出,Serverless 架构具有缩短交付时间,改善操作和安全实践等功能,以及创造出一种革命性的付费模式——按资源消耗付费。
你或许已经了解了 Serverless 架构,但具体生态系统是什么样的,有哪些选择?本文会给出指南,将从功能即服务( FaaS ) Serverless 架构的关键点出发,扩展到公有云和私有云的 Serverless 架构构特性,同时回顾构建 Serverless 架构的框架和工作堆栈,最后指出 Serverless 架构在整个云计算里所处的位置。
据说 Serverless 架构出现已经很久了,但实际始于 FaaS 的到来。2014 年 11 月 AWS 预发布 AWS Lambda,并将 FaaS 划入云计算版图( AWS 在 2015 年 5 月发布 Lambda 通用版)。
在 FaaS 之前,借助 GAE,Heroku,AWS Elastic,Beanstalk 等是可以运行应用程序而不去直接管理服务的。但这些计算服务没有直接提供面向功能的执行模型或针对每次调用的计费能力,作为代替,他们通常面向服务器或面向应用提供了弹性扩展能力。
继 AWS 之后,其他大型公共云提供商开始着手建立自己的 FaaS 平台。Azure Functions 初版在 2016 年 3 月发布,随后在 11 月正式发布。Google Functions 于 2016 年发布预览版之后在 2017 年 3 月发布了 beta 版,但正式版的发布时间仍是未知的。像这样的 FaaS 平台还有很多。
FaaS 作为部署和执行平台,提供了一种功能来执行业务逻辑的方法,本身并不是特别强大,而 Serverless 架构的价值在于,在作为集成功能时候,可与其他服务一起架构完整的框架。
很多人认为 FaaS 和 Serverless 是一样的,但这两种概念有重要的区别。
FaaS 是一个计算服务,主要功能有部署、可伸缩性、执行和结算。
Serverless 架构属于平台即服务( PaaS ),针对事件驱动,短暂性的工作负载。它结合了 FaaS 与其他云服务来构建复杂的系统,同时提供可伸缩性、可操作性、综合安全性以及按使用率来计费。
目前最有效构建 Serverless 架构方法是在众多 Serverless 架构平台中选择其一,并充分利用它所有的功能,以下将列举几个 Serverless 架构平台:
亚马逊推出了第一个 FaaS 的云服务平台—— AWS Lambda。
Serverless 架构平台在很大程度上取决于可以利用的数量和质量的功能。在 AWS,功能可以由越来越多的其他服务触发。这些功能包括 S3 buckets,来自 API 网关 HTTP 请求。DynamoDB 表现中的变化,消息到达 SNS 的话题和 Kinesis streams。最近,AWS 把重点放在 FaaS 上并集成了许多新的服务。
可以使用 AWS Lambda 作为物联网后端,Alexa 的新技能,对话机器人使用 Lex 和 workflows with step functions 功能。FaaS 计算方法是被推到其他执行环境里,如亚马逊的内容分发网络,甚至到物联网设备 AWS Greengrass,使用功能来增强 CloudFront 的行为。
与其他分布式系统相比,构建 Serverless 架构需要优秀 IT 运营的支持。AWS Lambda 无缝集成 CloudWatch、监控和日志记录服务。除了提供开箱即用的日志手机和指标集合,AWS CloudWatch 允许使用 Lambda 函数自定义操作功能。
功能可以被触发 CloudWatch 事件(可以支持调度函数执行) CloudWatch 日志流,可以通过社交网络服务对应监测指标警报。
最近,X-Ray,分布式跟踪服务,开始支持 AWS Lambda (预发布版),这样就可以监视和跟踪复杂的数据流。AWS IAM,身份和访问控制服务,提供了一个集成和细粒度安全模型功能执行。
AWS 支持 Serverless 架构一段时间之后,Azure 作为竞品正稳步发展中。Azure 的功能可以由 AzureStorage blob 通知 HTTP (休息或 webhook )请求、Azure Event Hubs 事件、信息存储队列以及服务总线队列或主题,或基于一个时间表进行触发。
Azure 有更加结构化配置模型的功能。它允许从内部集成函数本身,输入和输出绑定附加功能,极大地简化或完全移除所需的代码与其他服务。AWS 的情况与此相反,必须用 SDK 进行任何形式的整合。同样,Azure 也支持外部集成。例如,可通过 Twillio 发送短信或电子邮件使用 SendGrid。
Azure 的 Serverless 架构平台在运行上比 AWS 缓慢。只有在应用程序服务计划时才可监视度量,这就需要再虚拟机里运行一个函数,并管理云租户。这是真的 Serverless 架构 Serverless 架构吗?
如果函数执行 Provider-managed 计算,没有监控信息是可用的。相反,Azure 提供了一组指南。它定义了函数隐式安全策略,基于输入和输出绑定,而不是像 AWS 一样,显示配置使用一个专用的服务。
谷歌尚未作出谷歌云平台( GCP ) FaaS,但它提供了一些类似于 AWS 和 Azure 的核心集成功能。可以通过 Cloud Storage 触发谷歌云储存功能,HTTP 请求,Cloud Pub/ Sub 事件,和一些 Firebase events ( Firebase 是谷歌的 mobile-back-end-as-a-service 平台)。
GCP 在谷歌的 Stackdriver 监控服务中提供完整操作。日志发出谷歌函数会自动存储,在这种情况下 Stackdriver。日志记录和记录的指标 Stackdriver 监控和质量提供了 Stackdriver 调试器,可以用它来研究函数的代码行为。这在排除故障时非常有用。GCP 的安全模型与 AWS 有所不同,然而,它还没有提供支持细粒度的安全策略。
IBM Bluemix/Apache OpenWhisk 都属于 PaaS 平台,类似于三大公有云云提供商的开源 FaaS/serverless。OpenWhisk 是一个开源项目,具有完整的可视性 FaaS 功能,可扩展也可定制。运行 Bluemix 时,可以在本地基础设施或者是云上实施 Open Whisk,或作为一个完全管理平台。
函数(在 OpenWhisk 称为“行动”)可以通过 HTTP 请求,触发消息 Apache Kafka 或 Message Hub,改变 Cloudant noSQL 数据库表、预知事或几乎任何类型的外部系统,提供了一个集成创建。
从 IT 运营的角度来看,OpenWhisk 主要关注与函数相关的活动执行的可视化,同时也允许命令基于借口的轮询活动日志。可惜的是,指标、日志手机和存储尚未公布,安全模型不是很好定义。开发人员可能需要再没有大量平台支持的情况下做管理。
Other FaaS platform choices
许多其他产品和项目都想在 Serverless 架构中占有一席之地。有些只提供 FaaS 与 HTTP 访问(可选功能),而其他人提供一些服务,比如消息传递或存储。最开始是 BaaS 厂商为有自己的服务器产品更名。几个值得注意的点包括:
Iron.io 是最完整的的平台之一。它提供了一个称为 IronWorker 的 FaaS,以及分布式队列服务( IronMQ )和缓存服务( IronCache )。
PubNub 允许任意代,称为块,在实时消息流中执行,它负责管理的可伸缩性计算堆栈。
Webtask.io,移动 BaaS 平台,可以运行使用任意代码。封装成“ webtasks ”和创建松弛机器人提供了良好的支持。
Hook.io,一款相似的产品,提供自己的键值数据存储,以及集成与许多云存储服务。
你还会发现许多开源项目,提供了 FaaS 容器调度器。这些包括 Funktion,Fission,Kubeless,Funcatron,FaaS 等。
虽然无 Serverless 架构平台听起来不错,但并没有太多实践经验。这就是为什么它需要创建框架和工具。事实上,Serverless 架构正在经历爆发时期,新产品和功能纷纷出现,有很多可能性待发掘。
Serverless 框架(之前的 JAWS),与所有主要平台提供者提供的集成,是当今最受欢迎的。其他的可以考虑包括 Chalice(Python,AWS),Zappa (Python,AWS),ClaudiaJS (Node,AWS),Dawson (Node,AWS),Shep (Node,AWS),Sparta (Go,AWS),and Lambada Framework (Java,AWS)。
除了框架,可以找到许多工具可以构建和部署功能或 Serverless 架构。例如,可以使用 HashiCorp Terraform 选择自己的基础设施供应商。,(如 AWS CloudFormation)。其他受欢迎的工具包括 Apex,Gordon 和 Kappa。
许多技术和产品提供了 PaaS 和 BaaS 能力之前,FaaS 或 Serverless 架构开始流行起来。有很多 SaaS 产品提供任何可能消耗作为终端用户的功能或第三方产品,可以集成到一个应用程序或一个系统。
这些类别现在仍然相关,即使 FaaS 和 Serverless 架构进入云计算环境。回顾一下:
FaaS 是一个充分控制计算资源抽象服务,包括执行运行过程的代码。
Serverless 架构是结合了 FaaS 的 PaaS 平台,计算与托管其他云服务,创建可扩展的架构,具有成本效益的操作。
BaaS 提供后端浏览器或移动应用的能力。它可以交付 Serverless 架构,以及一个 container-as-a-service(CaaS),“基础架构即服务”(IaaS),或其他技术栈。
SaaS 只是意味着任何软件系统而不需要提供自己的基础设施上运行它。SaaS 系统可以建立在任何技术栈上;重要的是用户知道如何使用它。
毫无疑问,Serverless 架构将这个词用于描述所有其他服务,可能混淆了许多人。但是没关系,企业采用 Serverless 架构,业务肯定会受益,并增加业务敏捷性。期待 Serverless 架构在 IT 行业经历更大的创新。
原文链接:An essential guide to the serverless ecosystem | TechBeacon
原文作者:Rafal Gancarz
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.