BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

将微服务浓缩为函数:Adrian Cockcroft在microXchg大会上讨论了无服务器架构

| 作者 Daniel Bryant 关注 740 他的粉丝 ,译者 足下 关注 1 他的粉丝 发布于 2017年3月2日. 估计阅读时间: 6 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

在柏林举行的microXchg微服务大会上,Adrian Cockcroft做了题为“将微服务浓缩为函数”的演讲。演讲的关键要点包括:网络速度的提升、二进制协议的使用、配置管理和容器技术等使得部署包含多种微服务的应用程序成为可能;由无服务器架构技术带来的机会为在数据中心运行快速开发的函数即服务(functions-as-a-service,FaaS)带来了更多的可能;为了有效地交付业务价值,现代公司必须能够快速地构建原型和应用程序;现代企业里软件开发的最大挑战是与企业内的人和流程紧密相关的。

身为AWS的云架构战略VP,Cockcroft在演讲开始首先讨论了十年前的软件交付状态,以及它们与现代工程师们具备的能力之间的关系。在九十年代以及21世纪初,手工部署物理硬件的挑战带来了运维团队对部署流程的优化,尽量少地涉及人工产品(也就是单体应用程序)。这就导致了所谓的“大泥球”(big ball of mud)架构反模式的产生。

尽管21世纪初在软业开发业中面向服务架构(Service Oriented Architecture,SOA)以及相应的WS-*很流行,刚才提到的最小化可部署人工产品的趋势,再加上局域网内每秒1Gb的网络传输速度限制,这些催生了由粗粒度API提供的大型服务,它们利用一定数量的SOAP/XML消息进行通信。相对应的,现代局域网络的传输速度已经可以达到每秒25Gb,而且对AvrogRPC简单二进制编码等许多高效的二进制编码协议的使用,这些改进使得消息通信效率提升了至少两个数量级。

最新一代的AWS实例相互之间的连通网速为25Gb/s,而不是1Gb/s,这个优势加上使用Avro和gRPC等二进制通信协议(要是你更聪明的话就直接做简单的二进制编码……),这些都使得最新的微服务架构风格成为可能。

大概是五年前出现了第一代DevOps工具,比如ChefPuppet等,这些让自动化部署和配置硬件,以及持续部署和升级软件成为可能。Cockcroft谈到当初他还在Netflix工作时,还没有采用这种“自动化系统管理”的方式,所以Netflix团队采用的是不可变基础架构。在Netflix的系统里,像预定制的亚马逊服务器镜像(Amazon Machine Images,AMIs)这样的粗粒度程序,都会通过可编程的模式与一个虚拟机计算实例相关联,并且部署在负载均衡器后面的可动态扩展的自动扩展组(Auto Scale Group,ASG)里。这样就可以支持对应用程序功能的“当场替换”,而不是通过操作系统命令来控制部署和升级。

更近一些,以容器一类的技术为代表的第二代DevOps工具更进一步地推动了对不可变架构的应用,这种操作系统级的虚拟化技术让大家可以更快地创建和实例化软件系统的各个部分,让部署时间从几分钟降为几秒钟。对容器技术的广泛使用和Docker形成的事实标准也创造了标准化资源。比如说,许多数据库和中间件供应商都可以提供官方版的Docker镜像,其中提前打包了他们的产品,并且做了一般性的配置。

Cockcrost表示,最新的“无服务器架构”或者“函数即服务”技术风潮已经开启了软件开发业的一次新革命。之前使用虚拟机和容器进行“快速部署和持久运行”的模式已经过时了,现在是要使用无服务器架构技术进行“快速部署和按需(按付费)运行”。

有了AWS Lambda之类的FaaS或无服务器架构等技术带来的简化编程模型、弹性部署、可组合性等好处,Cockcroft表示整个系统都可以快速建立原型和构建。而像AWS Greengrass一类的技术,则可以让AWS Lambda函数离线地运行在基于Linux的物联网设备上,因此可以进一步扩展无服务器架构技术的适用范围和可用性,“从数据中心到最前端,也可以是混合型”。

随着AWS Lambda一类无服务器架构技术的兴起,整个系统都可以只需几天便构建完毕,你该问问你自己:“我该把团队投入到升级迁移类活动中,还是干脆把现在的应用程序重写一套呢?”

在演讲的最后,Cockcroft表示在许多现代企业中,软件开发的问题总是与企业中的人和流程密切相关的。反向康威操纵(Inverse Conway Maneuver)之类的方法,以及Pheonix项目DevOps手册等资源都可以用于驱动变革性的改变。微服务架构风格就是一个建立跨功能、自治的和紧密配合的业务单元的成功案例。

微服务不适用于组织仓库。在微服务开发中,要在单个服务的边界内有对开发活动的高度信任。服务供应商之间的任何低信任度行为都要通过良好设计的API以及服务水平协议(service level agreements,SLA)来解决。

Adrian Cockcroft的microXchg演讲“将微服务浓缩为函数”视频可以在大会的YouTube频道找到。关于这个话题的更多内容可以参考Cockcroft的一篇最新博客:“业务逻辑从单体到微服务,再到函数的演变”。

阅读英文原文Shrinking Microservices to Functions: Adrian Cockcroft Discusses Serverless at microXchg

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

这个是不是应该翻译成功能而不是函数。。。 by 晓宇 秦

我是那么理解的

Re: 这个是不是应该翻译成功能而不是函数。。。 by Guo Gary

应该翻译为函数,翻译没问题。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT