DevOps系列一:认识事件驱动型计算

很多使用DevOps的企业在见证了一些积极改变之后,发现自己仍在高度敏捷的应用开发与仍然笨重的IT运维之间挣扎。那么事件驱动型的计算能否跨越这道鸿沟呢?

在事件驱动的世界里,用户行为、感应器或者其他应用或服务的消息都会触发工作(流)。这和目前主流的预定义了一系列要执行步骤的程序性编程模型大不相同。

坐落在纽约的一家在线求职网站WayUp的DevOps架构师Jonathan Eunice说:“这简直就是颠覆了世界。使用程序性编程的时候,程序驱动了一切;使用事件驱动编程的时候,用户、结果以及事件驱动了一切。”

在最近的几年,许多云计算供应商开始提供基于事件的自动化服务。最著名的要数Amazon Web Services(AWS)的Lambda了,用户可以在不需要提供服务器的前提下使用它运行代码。业界专家相信这种事件驱动型的服务可以让现在的软件开发更加敏捷,反应更快速并达到自动化基础架构运维。这会使DevOps的天秤达到一定平衡。

StackStorm是一家事件驱动软件制造商,该公司很自豪在自己的客户(如Netflix)中扮演着很重要的角色。该公司CEO Evan Powell说:“‘事件驱动型计算’对于生产力需要提升的公司来说是很基础的,他们的厂家会告诉他们,‘嘿,快使用Agile吧!’,但是只要运维并没有以Agile方式运行,Agile还是远远不够的。

Powell还指出,在当今闭环的自动化过程中,使用软件代码片段来做基础架构的自动化允许用户在现实环境中开发应用和管理他们的资源时候更加具有生产力,更加Agile。

Power说:“我想这就是缺失的部分。”
事件驱动在起作用

将自动化产品引入到生产环境中的IT专家会很同意这个评价的。

Seamus James是在线服装零售商Bentabrand的软件工程师,他表示,“好的程序员并不总是好的服务器管理员。”

“我们不希望他们陷于服务器管理的困难之中。Amazon和Lambda在剔除这些困难,让程序员专注于写程序,毕竟这才是我们应该做的事情。”

事件驱动的自动化也让人力很难实现的大型计算资源管理变得更加容易。举个例子,Betabrand第一次使用Lambda也是因为销售的合伙企业拥有一个很受欢迎的游戏博客,博客产生的流量将Betabrand网站背后的以传统托管环境搭建的服务器冲垮了。

James说:“这个事情对我们的服务器造成了损伤,并宕机了大概20秒。”

与此同时,James和他的团队将Jaws平台(现在改名为Serverless了)部署在AWS Lambda函数上,使用Simple Storage Service(S3),并且利用命令行接口将所有可以Lambda自动化的部分绑在了一起。Betabrand使用这种框架彻底检查它的Web架构来适应流量高峰。

具体来说,Betabrand需要做的第一步是将公司页面设计拆解成托管在S3上的静态网页。

然后,为了在某些产品变得可用的时候通知对这些产品感兴趣的用户,Betabrand设置了Lambda函数来收集邮箱地址,并将这些邮箱地址添加到DynamoDB数据库中。这样子Betabrand可以在网页达到了百万级独立用户访问的时候捕获销售头羊,而不至于将服务器弄垮。

James说:“没有比配置这个更简单的了。”再加上Amazon的免费服务之后,初始的费用只需要7美分。

James说:“如果加上了S3带宽费用的话,这个价格会上升到200美金。如果同横向扩张Web服务器来达到同样带宽对比的话,这是微不足道的。”

VidRoll是亚马逊的另一个客户。该公司使用事件驱动型计算来满足大型基础架构的管理。在公司的技术计算平台上每个月都需要处理数百万的事件,而且这个数字还在增长。刚开始每个月处理40亿数据点;在今年的六个星期内,这个数字上升到400亿;几个星期后,达到了2000亿。

VidRoll的CTO James Young在Lambda的beta版本的时候已经开始使用Lambda了,他说:“如果你需要加速服务器并且管理所有高峰的流量,那么你会很难管理大范围的网络影响。”在几个月的时间内,他们4个人组成的公司已经步入正轨,并且能每个月处理400亿事件。

Young说:“使用Lambda可以让我们并不需要担心如何让服务器一直保持可用的状态。”因为工程师可以通过他们的代码很快地把问题解决,而不需要协调开发和运维团队。

事件驱动型计算对于一些管理员没办法到达服务器所在地的情况来说很有必要,不过这需要依赖于对事件分析频繁的更新。这也是Edvan,一家瑞典公司所做的“聪明的”加速。Edeva使用Iron.io提供的软件即服务让位于加速带的服务器发送数据到运行在AWS的*分析系统中,并对数据进行处理。

负责在Edeva设置Iron.io基础架构的咨询师John Eskilsson说,“集成到Yii软件开发架构的简易性和它对Python语言的早期支持让服务器的远程管理对开发者更加友好,无论这个服务器在不在AWS上。”

Eskilsson说:“这样子使用软件即服务是有意义的,因为这样你就不需要管理所有这些多余的服务器了。”

本文转自d1net(转载)

上一篇:冒号课堂§3.4:事件驱动


下一篇:五个部署Hyper-v的常见错误.