首页>动态 >内容

IBM云端平台不惜砍掉重练改用K8s打造现代化新架构

动态2021-02-22 08:02:24
最佳答案 IBM Watson和云端平台首席架构师Andrew Hately

IBM Watson和云端平台首席架构师Andrew Hately

2年前,IBM展开了旗下云端平台产品的大整顿,不光只是重整品牌,还找来了20年前开发出IBM第一代SOA和Web产品的IBM Watson和云端平台首席架构师Andrew Hately,大力採用Docker、Kubernetes、Linux和Cloud Foundry,设计出全新的现代化IT架构,甚至将IBM自家所有云端产品都搬上了Kubernetes(简称K8s)环境。

「Kubernetes的出现,云端思维才能真正落实到既有应用程式。」Andrew Hately强调,IBM自己就是最好的实例之一,连每天在全球各地提供240亿次天气预报的Weather.com网站,都已经搬上了云端Kubernetes环境中运作。

5年前,IBM开发团队主要开发两类应用,一种是部署在虚拟化环境上的应用程式,另一种则是Web应用。即使后来IBM大力发展云端服务,将自家服务部署到公有云,但Andrew Hately指出,Cloud的3个基础是虚拟运算、虚拟储存和虚拟网路,随着越来越多应用上云端后,对开发者而言,只靠这三项来执行和开发现代化应用,太没有效率了。

从IBM自家开发经验来看,开发者需要更多云端管理机制,如自动修复(Self-Healing),新的维运方法来管理元件,需要简化云端概念(如区域、失效区域),需要能自动扩大部署(rollout),自动化还原旧版本(rollback),甚至需要有能力一天发布上百次,才能快速回应顾客的需求。

「大量上云端后的应用程式开发和维运需求,需要一个与过去截然不同的新架构。」所以,3年前,IBM开始研究跨云管理架构,决定大力投入Kubernetes开源专案,2年前,IBM悄悄地展开了自家内部平台的架构改造任务,甚至不惜重构自家云端平台,要将大部分的IBM软体和云端平台,都搬上Kubernetes。

IBM先从资料库平台开始着手改造,例如将天气预测应用改部署到IBM云上的Kubernetes环境中,后来更进一步扩大到所有的分析和AI产品,都转而部署到Kubernetes环境上。

Andrew Hately表示,去年终于完成了这个庞大的平台重构计画,除了用来管理基础架构上运算、储存和网路的控制台程式,以及基础架构的虚拟机器(VM)不是採用K8s,IBM其余的云端服务,甚至内部所用的上万支应用程式,几乎全都搬上了K8s。「我们真的将云端原生服务产品,建置在云端原生平台环境中。」他自豪的说。

如何用K8s来设计现代化IT架构?Andrew Hately用一张图来解释。他从一个基本问题出发,如何在作业系统上运用各种功能或元件,有没有更好的开发方法?

现代化IT技术架构图

IBM Watson和云端平台首席架构师Andrew Hately揭露了一个现代化(Modern)IT技术架构图,他认为,这也是企业跨多云打造云端原生应用需要的技术架构。(资料来源:Andrew Hately,2019年5月)

Andrew Hately指出,这个问题一直没有定论,过去几年的主流运算模式是直接在VM上开发应用,但是,VM最大的问题是档案太大,因此而很不好用。

他观察,对一般开发人员来说,开发应用程式有3件事非常困难,一是要扩充规模时,据太多储存空间,不仅费时又没有效率。第二个是「副作用的複杂度。」开发人员得考虑,一个程式或一个微服务,可能有哪些潜在的影响,使用越多微服务,连带要考虑的副作用就越多。第三个开发上的挑战是资安。

为了解决上述三个问题,儘管容器可以比VM得到更轻薄短小的执行环境,Andrew Hately认为,採用像是Docker这样整套的容器引擎,还不够小,因为越多元件放进容器,就需要考虑更多升级、更新、修补等维护工作等。「要将应用程式的相依性降到最低,只有尽可能缩小应用程式的大小,才有办法,安全地扩充和升级。

因此,在Andrew Hately的架构中,最底层的技术,採用了Docker的一项容器引擎专案ContainerD,这是IBM过去大力参与的专案之一。「目标是尽可能地将容器引擎缩小到只需占用电脑一个程序(Process)就能执行。」所以,ContainerD的档案非常小,程式码也非常精简,只负责几件事,就是启用一个执行程序(Process),绑定档案系统和所需的函式库。

不过,如此微小的容器引擎,就缺少了很多工具,如管理、调度、政策发布等複杂功能。所以,Andrew Hately在容器层之上建置了Kubernetes层。

他指出,Kubernetes是一个可以让你同时管理「一群」(set)容器或者说一群工作的平台。在这一层中,可以将一群任务放入一群容器中同时执行和管理,也可以具有基本的政策管理功能(policy),例如设定这支程式最少要启用几个程序来执行,而最多容许几个,或设定记忆体可用量,也可以提供简单的限制,如是否可存取,另外新版Kubernetes也开始可以支援到群组角色的政策管理。

IBM改用Kubernetes后,「新架构变得简单但很有威力,」他解释,K8s强迫所有应用程式的相依性和执行程序都得非常乾净,例如要将应用程式放上容器执行,得重新梳理如何存取网路的规则,让控管政策更简洁清楚。

拥抱K8s设计新架构的3大优点

拿掉传统防火墙的保护,人们常用云端原生应用,不安全地处理资料,这将是新的安全考验。─── IBM Watson和云端平台首席架构师 Andrew Hately 摄影/洪政伟

简洁的架构也大幅提高了IBM云端服务的发布速度,例如扩充和部署程式码的週期可以更快。像天气预测引擎使用了数千台VM,在VM环境中,每一次更新,要花3~5分钟派送映像档。虽然可以并行部署新版VM映像档,但还要重新启动VM,检查和确保每一个元件都顺利运作,一天顶多只能发布20次程式异动,但改用K8s上的容器来部署,重新开机时间只要3秒,发布速度可以快数十倍。

另一个好处是,Andrew Hately指出,大多数放上K8s的应用服务,可达到4个9(99.99%)的可用性。部分原因是产品所用的技术更成熟了,另一方面,因为K8s,可以自动将这些应用系统分摊到多个分散式软体定义储存环境中中,因而提高了可用性。

「K8s让我们可以用非常简单的方法,将Resilience(快速恢复能力)套用到各种服务,让每一个服务都能更快速地启动,也能在应用程式安装包中描述控管政策。」他表示,IBM採用了这样的开发模式,重新改造了大多数IBM软体产品的组成。

不过,挑战是,K8s应用层是一个附加在原有基础架构上的新模式,并非是将软体定义储存、软体定义运算、软体定义网路再一次的抽象化,而是一种更高层次的开发模式(Programing model), 「不是每一个开发人员都知道这种新模式,但他们必须知道。」

更进一步,「当需要考虑大量服务或微服务间的沟通时,就需要再往上一层的抽象化,这就是Istio层的用途和目的。」Andrew Hately说。

例如,多个服务组合成一个商业流程,彼此必须在安全通道中沟通时,就可以使用Istio来管理。Istio可以将这群服务集结成一群,称为一个服务网格(Service Mesh),再套用到同一个管理政策。「服务网格可以从商业流程角度,用Policy Language(政策脚本语言)来建立一个可管理一整群服务的政策。」他举例,如这些服务之间的网路路由如何进行,哪些应用程式要必须同时启用等。

这种政策脚本语言,类似更高阶的程式开发语言,但可以将複杂的服务间的沟通规则,用简洁的描述记录下来档案。尤其是需要複杂的资安控管时,例如哪些服务可以共用验证,哪些服务间通讯的TLS设定等,「这些过去难以自动化的工作,Istio搭配Kubernetes,可以使用多种语言来控管这些应用服务间的政策。」

不过,Istio不一定只能部署在K8s上,这是一个可以用来连结许多不同丛集的工具,「可用来管理大量服务(services),而非大量程序(processes)」

例如用手机查验文件有三个动作,上传文件图档、图片转文字、比对文字。若开发成3支微服务,每一支各自由不同的丛集来负责,以因应各自不同的运算量,对K8s而言,每一支服务都是等价,也会套用同一套政策。但Istio可以让开发者考虑业务流程的差异,更细緻地控管上下游服务间,或者同一类服务间的通讯和连结,「这种跨多个丛集多种微服务的组合式管理需求,就需要再抽象一层。」他建议。

再往上一层,若开发者只需要考虑资料集和功能(特定或单一功能),Andrew Hately称呼这种开发者为功能开发者(Function Developer),而非应用程式开发者(Ap Developer),他建议,可以使用OpenWhisk专案,这是一个用来开发单一服务、单一功能的开发框架。

如果不需要考虑容器生命週期管理,Andrew Hately建议,就可以考虑用Function环境来执行服务,也可说是一种一次性週期(a life cycle)。有需要就呼叫一次,非常简单的开发模式。「用于资料集分析时,Function环境非常好用。而且可以让所有语言各自独立运作,只需要考虑如何在云端执行多个程序。」

不过,採用Kubernetes设计的新架构仍有一大挑战,Andrew Hately指出,要重新思考资安。「拿掉了传统防火墙的保护后,人们常用云端原生应用,不安全地处理资料,这是新的安全考验,这是多数应用程式开发者还没深思的问题。」

  CTO小档案  

IBM Watson和云端平台首席架构师Andrew Hately

学经历:加拿大滑铁卢大学环工系毕业。1996年进入Corel公司负责软体开发。3年后进入IBM,开发出IBM第一代SOA和Web服务产品,2013年成为杰出工程师兼云端实验室CTO,协助顾客导入PaaS。2017年负责主导IBM开放云端新架构设计,担任IBM云端平台副总裁与首席架构师,负责定义IBM One Cloud架构

  公司档案  

IBM

● 成立时间:1911年

● 网址:www.ibm.com

● 执行长:Virginia Rometty

● 年营收:2017年791亿美元

● 总部地址:总部位于美国纽约市,全球177国皆有据点。

● 全球员工人数:约36.6万人(2017年)

  公司大事记 

● 2004年:出售个人电脑事业部门,更聚焦企业市场

● 2009年:买下统计软体SPSS,强化资料分析技术

● 2011年:IBM 新一代超级电脑 Watson20诞生,也展开了Watson认知服务的品牌和产品线

● 2012年:买下SoftLayer展开云端布局

● 2014年:出售x86伺服器业务,更聚焦AI和云端业务

● 2015年:併购两大产业数据巨头Merge Healthcare和The WeatherCompany

● 2016年:併购网路影平台Ustream和健康分析公司Truven

● 2017年:整併旗下所有IBM云端服务为单一品牌「IBM Cloud」

● 2018年10月:宣布以340亿美元买下红帽

● 2018年12月:出售Notes/Domino等产品,更专注进军AI及混合云

免责声明:本文由用户上传,如有侵权请联系删除!