关于Serverless架构及平台选择,你知道多少?

image

数人云近来给大家分享了很多DevOps相关文章,Serverless架构是最近两年比较火的一个话题,它可以帮助DevOps实践落地,更加灵活,提高工作效率、交付速度等等。

今天数人云就跟大家一起看看Serverless架构的前世今生以及Amazon Web Services、Microsoft Azure、Google Cloud Platform、IBM Bluemix/OpenWhisk四大平台和工具。

前言

Serverless架构在IT行业蓄势待发,并非没有道理。尽管这是一个相对较新的技术,但已引起了广泛的关注,许多新技术专家指出,Serverless架构具有缩短交付时间,改善操作和安全实践等功能,以及创造出一种革命性的付费模式——按资源消耗付费。

你或许已经了解了Serverless架构,但具体生态系统是什么样的,有哪些选择?本文会给出指南,将从功能即服务(FaaS)Serverless架构的关键点出发,扩展到公有云和私有云的Serverless架构构特性,同时回顾构建Serverless架构的框架和工作堆栈,最后指出Serverless架构在整个云计算里所处的位置。

一切始于FaaS

据说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还不够

FaaS作为部署和执行平台,提供了一种功能来执行业务逻辑的方法,本身并不是特别强大,而Serverless架构的价值在于,在作为集成功能时候,可与其他服务一起架构完整的框架。

很多人认为FaaS和Serverless是一样的,但这两种概念有重要的区别。

  • FaaS是一个计算服务,主要功能有部署、可伸缩性、执行和结算。

  • Serverless架构属于平台即服务(PaaS),针对事件驱动,短暂性的工作负载。它结合了FaaS与其他云服务来构建复杂的系统,同时提供可伸缩性、可操作性、综合安全性以及按使用率来计费。

Serverless架构平台选择

目前最有效构建Serverless架构方法是在众多Serverless架构平台中选择其一,并充分利用它所有的功能,以下将列举几个Serverless架构平台:

Amazon Web Services

image

亚马逊推出了第一个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,身份和访问控制服务,提供了一个集成和细粒度安全模型功能执行。

Microsoft Azure

image

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一样,显示配置使用一个专用的服务。

Google Cloud Platform

image

谷歌尚未作出谷歌云平台(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/OpenWhisk

image

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