今天看啥  ›  专栏  ›  夜随夕飞

AWS副总裁:谈容器和微服务及下一代Serverless

夜随夕飞  · 掘金  ·  · 2018-07-20 02:16

早在2015年冬天,AWS年度大会一场演讲中,AWS云架构策略副总裁Adrian Cockcroft预言,Serverless会是下一阶段的云架构方向。当时,Docker崛起才2年,正是红遍半边天的IT技术。但Adrian Cockcroft从IT发展的角度分析,当时就指出,可以提供毫秒级部署能力,也只需存活数秒钟的AWS Lambda(AWS推出的Serverless服务),将比容器化部署更加快速。

Serverless的发展也如Adrian Cockcroft所预言的,越来越兴盛,甚至不只AWS,其他云巨头也相继推出Serverless服务,近年更结合了边缘运算架构和AI认知服务,扩大了Serverless服务的运用型态。

就商业逻辑的发展变化,近10年来企业IT架构演进分为三个阶段:Monolith分裂(大部件架构分裂)、Microservice(微服务架构)和Functions(功能架构)。

Monolith架构是早期大型主机时代的架构,将所有功能和服务都集中在一个庞大、复杂的系统中,在十年前,因为单一系统过于复杂、缓慢,这个主流架构开始分裂。受当时CPU速度和网路效能影响,只能依赖XML和SOAP协定来传输信息,因此只能将大部件系统切割成规模较小的服务,一个服务仍旧包含了大量不同类型功能,依旧是大部件式的复合式服务。

5年前,微服务架构逐渐崛起,开始分门别类地更进一步来切割服务的用途,而不同类型服务之间也更容易进行双向沟通,也容易通过服务架构,来存取各类储存服务或取出机制,应用系统和储存硬件间更容易通过服务链接。

2014、2015年,企业开始拥抱云,愿意把应用迁移上云,这更促进微服务架构的普及,因为RestfulAPI开始成为微服务架构的信息传递方式后,不只可以链接内部各种微服务,也很容易链接到云上的专用型服务。而「容器技术的出现,让微服务架构变得更容易也更快导入。」因为容器技术带来新的应用部署模式。

Adrian Cockcroft用电脑软件升级过程来比喻。过去,得不断更新电脑中的软件,才能享受到新功能。但是,若电脑价格非常便宜时,甚至只要几百美元就可以拥有一部低价Chromebook,一旦发生问题,直接换一台新的电脑更省事。容器技术降低了应用部署和封装的时间成本,也带来了新的部署方法「也就是之前说的,直接换新的电脑,免去升级」,这就是Docker所能提供的Immutable打包更新方法。一旦将微服务容器化之后,一来更容易跨平台、跨云、跨不同环境来部署相同的微服务,要更新时,也不用关闭正在执行的微服务,修改完再重上线,而是直接部署新版微服务,再关闭旧版微服务,就像是直接换一台新电脑,就可以获得新功能,而旧电脑就直接作废,不用来进行软件更新。

不过,经过这几年,许多常用服务都已经标准化,也成为云服务平台提供的基础服务元件,彼此再通过API来调用,这也是许多企业开始用云平台提供的服务来组合出自己的微服务架构,而不会全部自建。而实现应用商业逻辑的程序,其实会反映在链接这些常用服务之间的程序上,而且这些链接常用服务的机制,往往不用永久存在,只有需要的时候才执行,执行完成了,就可以下线。因此而出现了像AWS Lambda这类的Serverless服务。

而Serverless服务就是一种Functions架构的服务,是将微服务打破成更小的单位,也就是按照功能来打包成最基本的程序单位或程序积木。「Functions很简单,一次只做一件事,但微服务还是要提供一个介面。Functions等于是更小型也更专注的微服务。」Adrian Cockcroft指出,你可以将一个Functions转变成一项服务,这就是一个只提供单一功能的微服务,但有些微服务更加复杂。

微服务和Serverless可组合运用

微服务和Serverless其实不冲突,而是可以组合运用的架构。举例来说,容器化的微服务,可以负责那些低延迟而需长久存在的功能,例如即时控制、硬件驱动等,但通过API,不同应用的商业逻辑则可通过Serverless的功能来实现,再通过API链接两者。「这正是打造现代应用该有的方式。」Adrian Cockcroft表示。

他建议,现在若要开发新应用,最好优先采用Serverless架构,快速完成需要的App,再持续根据顾客需求来优化。例如服务网路流量很大,可以改租用PaaS来分摊部分Serverless上的服务。或先需要有能快速回应的Ap,再来专注于优化网路延迟。「使用Serverless服务,设计出你的应用系统的第一个版本,只需要几天。」

通过Serverless标准功能服务,更容易实现快速开发

不过,想要利用标准化的微服务或功能性的Serverless来打造应用,「得先适应Serverless服务可提供的功能。」他说,但可以更容易实现新的飙速开发模式(RapidDevelopment)。

Adrian Cockcroft以打造玩具太空梭来比喻新旧开发模式的差异。传统作法是,你得先设计太空梭玩具的原型,再用黏土来复制每一个零件模型,接着用黏土模型来铸造出每个零件的模具,就可以大批铸造生产零件,再来组出一个个太空梭玩具,这就是传统的瀑布式开发流程,得花上几个月才能开发一套系统,在部署到不同环境或各地据点中。

而新的快速开发模式截然不同,是改用乐高积木来组合太空梭,几个小时就能组装出一个太空梭玩具。这台乐高太空梭仍旧可以玩,颜色搭配也可以长得像是当初设计的原型,但精细程度比不上铸造组装的版本。这类积木可以自己开发,或用容器技术来打包出容易再利用的常用程序积木,也可以使用Serverless提供的功能。「使用Serverless好处是,最后组装出来的太空梭玩具,可用(依旧可玩)、可靠(坚固)、容易局部调整,但最重要的是能够快速完成。」。

不少企业担心,系统架构改用微服务架构和容器技术后,长期维护工作将会越来越困难? Adrian Cockcroft认为,服务种类和数量变多了,就像乐高积木越出越多款,组合工作不会变得太难,「只有一开始找对积木得费一番功夫」拆碎后的微服务,每一个都独立运作,可以掌握且限制其权限和用途,因此「微服务架构反而Monolithic架构更简单,因为微服务的复杂度可以被看见。」。

作者:王宏仁

原文:

https://www.ithome.com.tw/news/124392

(对Kubernetes感兴趣小伙伴可加入我们技术交流微信群,入群方式在公众号后台回复 “加群”  获取)

推荐阅读:

什么是CKA?

IBM微讲堂 Kubernetes 视频教程

漫画:小黄人学 Kubernetes Service

实践:银行容器云平台建设需求与设计

详解K8S系统架构演进过程与驱动原因

K8S全球含金量最高证书,详细CKA考试指南




原文地址:访问原文地址
快照地址: 访问文章快照