软件开发架构师

当IoT遇到DevOps,揭秘华为云原生全景之路-InfoQ

区块链 9 2019-09-02 22:50

随着云原生技术理念的蓬勃发展,云原生架构完成了 IT 架构在云计算时代的进化升级。以 CI/CD、DevOps、微服务架构为代表的云原生技术以其高效稳定、快速响应的特点驱动引领企业发展,帮助企业构建更加适用于云上的应用服务。ArchSummit 全球架构师峰会「云原生时代 IoT 架构设计与 DevOps 实践」技术专场的精彩技术分享整理如下。

云原生技术涵盖范围非常广泛,针对不同的应用场景,云原生解决的关键问题以及对应的技术栈选择都各不相同。随着互联网智能终端设备数量的急剧增加,以及 5G 和物联网时代的到来,外部环境的变化日益加快,业务的快速迭代、敏捷交付等需求已成为企业常态。

「云原生时代 IoT 架构设计与 DevOps 实践」技术专场的出品人 Tony Yao 在开场时提到,云原生时代,快速响应市场需求也成为企业竞争的决胜因素。云原生技术可以帮助企业构造一个可扩展的、敏捷的、高弹性的、高稳定性的业务系统,如何落地云原生技术成为企业和技术人关注的焦点。

当IoT遇到DevOps,揭秘华为云原生全景之路-InfoQ-1

本次技术专场分为 4 个分享环节,解读最新的物联网技术发展趋势,介绍华为物联网平台解决方案以及成熟案例分析,华为物联网操作系统 LiteOS 的探索实践以及关键技术分析;探讨在云原生时代下,从架构、软件技术、支撑平台、组织运作等方面如何进行系统性建设,以及云化 DevOps 工具链架构及设计细节和建设过程中的心得体会。

华为云 IoT 架构实践与开放

第一位分享嘉宾是华为云 IoT 生态研发总监 Allen Xie,他首先分析了物联网的产业发展。据预测,未来 5~8 年,整个物联网的产业规模会继续扩大,在车联网、智能机器人,尤其是工业物联网领域发展会比较快。与高速发展并存的,是物联网商用化面临的挑战。主要有四个方面:

(1)物联设备严重碎片化

(2)物联应用开发定制需求多

(3)物联安全挑战大

(4)端到端运维难度大

在面对物联网挑战的同时,从架构演进的趋势可以看到,现在整个物联网基本上呈现一个「烟囱式」,随着架构的演进,逐渐会向聚合式的架构去发展。谢冲提到,聚合是整个行业发展的一个必然趋势,聚合才可以对平台完成多网络、多协议的接入,包括统一运维、统一管理,让更专业的平台做更专业的事情。

当IoT遇到DevOps,揭秘华为云原生全景之路-InfoQ-2

从聚合的物联网平台架构来看,平台层非常关键,因为平台层下面要能连接万物,上面要帮助应用层做创新,中间还要能够提供丰富的业务使能。整个平台面临的挑战是,设备数量多,协议多样化,上层业务标准不一,如何设计平台从而有效提供开放能力帮助物联网产业更好地发展?

华为 IoT 的整个生态的开放架构分为三层设计,有连接管理、设备管理和应用管理。除了提供丰富能力的同时,还要能够让端侧和应用侧更快地接入到平台里,打造生态链。

华为 IoT 架构设计有三个关键点:

(1)微服务化

(2)插件化

(3)开放的设备接入

具体来看,微服务化实现了业务和接入的解耦,比如云网关和设备模型的抽象其实是通过松耦合连接,微服务化之后,将设备的接入和设备的逻辑抽象切分开,这样云网关只要把不同的协议设备接进来,在 IoT 层就可以把所有的设备全部都抽象成有同样业务的一个逻辑设备。此外,在微服务框架上面实现了弹性的资源部署和扩容,对 IoT 的发展提供了一个较好的平台,在接入量大的时候可以实现弹性扩容。

插件化的意义在于,因为所有的物联网设备差异性较大,针对这种差异性,华为云 IoT 平台是如何去统一设备模型呢?首先是允许用户在设备模型层自己去定义自己的设备模型,帮助用户在标准模板的基础上去更快地完成模型。同时,在网关侧开放出一些插件,用户可以自己做插件,完成协议转换,而且网关里包含了云网关和第三方的泛协议接入网关(Agent)。Allen Xie 提到,华为云 IoT 平台的开放形式比较多样,目的就是通过架构设计让各种各样的设备能够接入进来。

要设计好一个大的系统的生态开放,除了架构外,还要考虑一些生态开放的要素。因为这些生态开放的要素决定了用户体验,一个设备接入平台的速度快慢与这个要素息息相关。

开放要素的设计主要分为三个方面:开放层次,开放形式,开放平台。开放层次是指任何地方都有 API 开放、SDK 开放和图形化的开放,开放层次越高,越容易用,但同时会带来一个问题就是灵活性不太够;开放层次越低,灵活性越好。因此,具体开放层次取决于开发者、厂商的诉求。

开放形式有开发者的 API 文档、视频、工具、样例、代码,根据华为的经验,要具备 5 类开放套件才能较好地完成每一个层次的开放。

除了开放层次和开放形式以外,还需要有开放平台去支撑整个生态产出,包括开放的社区、论坛,开放流程、工单和平台。

华为云 IoT 平台通过开放架构提供多层次开放能力,特别是通过图形化拖拉拽就能快速构建应用;在终端侧提供丰富的 SDK 以及模组去完成南向生态的开放。Allen Xie 提到,华为云把大量代码开源到 DevCloud 和 Github 上。用户可以直接使用开源代码,快速完成物联网解决方案构筑,并通过全球共享的生态网络,实现一站接入,全球可达。

Huawei LiteOS 架构设计与端云协同的思考

第二位分享嘉宾是华为云 IoT 生态产品总监 XM Liu,他首先介绍了物联网产业的痛点。物联网技术存在碎片化比较严重的问题,芯片、通讯、操作系统、IoT 平台众多,业务场景非常复杂,物联网产品从开发到上线面临众多问题。

当IoT遇到DevOps,揭秘华为云原生全景之路-InfoQ-3

LiteOS 是面向 IoT 设备的一个软件平台,重点解决 5 方面问题:

(1)轻量级,可以在绝大多数资源受限的设备上运行;

(2)多连接协议,多种连接方式的协议栈,可自由选择,同时可以灵活部署;

(3)IoT 云服务内置,与通用 IoT 云平台对接;

(4)超低功耗,支持低功耗的应用

(5)安全,提供完善的措施保证数据、应用运行以及设备的安全。

LiteOS 能完成设备端的技术整合,方便连云,这是最重要的一个工作,即把设备标准化。南向设备的标准化是物联网整个架构重要的特点。现在各个设备的集成性还是不够,因为每家都有不同的平台,设备南向本来就很难统一,而北向上单个设备,比如买任何一个设备都需要一个对应的 SaaS 来支持,如路灯、烟感、门锁等,不同厂家生产的同类产品都有不同的 SaaS,因此需要一个设备服务框架,将物联网平台接入的各类设备,以标准的设备服务形式,被 SaaS 应用调用,从而满足场景化解决方案多样的设备集成需求。

LiteOS 包括底层操作系统、上层的中间件等。其特点是:协议使用者只需调用统一的 API 即可,无需关注具体的实现形式;协议开发者只需要按照标准封装自己的库注册进标准服务即可;解耦协议的开发者和使用者;允许多种多样的实现形式无缝接入;允许应用适用于各种各样的场景。

LiteOS 对物联网构建端云协同生态的价值在于构筑 IoT 上游技术生态,解决产业技术碎片化,解决不同技术组合和设备模型带来的不必要的重复投入,端到端极致优化技术方案。

DevOps 下的架构思考

第三位分享嘉宾是华为云 DevCloud 高级架构师 Daniel He,他提到,“最近一段时间在研究 DevOps 架构转型的设计工作,中间所遇到的一些问题和思考分享给大家”。

当IoT遇到DevOps,揭秘华为云原生全景之路-InfoQ-4

从过去很大的一个单体系统要成为一个可 DevOps 的系统,其实中间存在较多的要素,包括架构、组织、平台能力等。首先需要明确的什么样的系统适合来做 DevOps。从架构的角度,单体软件一般是模块化架构,而能够面向云化的软件才适合来做 DevOps。Daniel He 提到,“DevOps 用我的理解就是商业敏捷,这里面就包括代码的敏捷,持续集成的敏捷,持续交付的敏捷和基于运营运维反馈的敏捷”。

DevOps 所代表的商业的敏捷,要求对系统进行拆分,而且拆分的结果要用服务化的方式,因为服务化就包括后面的部署、运营、运行等各个方面。这时候就面临一个问题,即系统该怎么拆分、如何拆分。

Daniel He 提出,系统拆分为颗粒度合适的可 DevOps 的单元,是架构支持 DevOps 的基础。其具体要求是:

(1)尽量垂直划分服务;

(2)比较独立的新业务优先采用微服务架构;

(3)优先抽象通用服务;

(4)优先抽象比较容易识别的,边界比较明显的服务;

(5)优先抽象核心服务;

(6)采用绞杀者模式。

在拆分系统时,要考虑做软件的分层,要做专业的聚焦,实现平台化,避免小团队,也就是要全栈能力构建。这就要求,一是术业有专攻;二是团队足够专业化,即用云化的环境,云化的环境可以自己建设,也可以去租用建设,并且每个服务单体要做自服务。当然,自服务的前提是高度自治。

Daniel He 指出,DevOps 的团队一定要是全功能的,即做好自服务,同时还要考虑一些其他因素,比如在架构层面,要去思考可靠性如何实现,可靠性包括数据的可靠性,服务的可靠性,发生故障后如何恢复,服务如何自运行等。

另一个问题是,在云化环境里如何来做可扩展性。系统上云后,安全性非常关键,包括被攻击的安全,权限的安全,以及数据的安全。当提供一个云化的服务环境之后,其实要做好多租户之间的数据是可逆的,服务也要是可逆的;同时用户的数据,尤其是一些信息要脱敏,这一系列内容属于架构设计时要考虑的。

在生产环境里要有各过程的监控,这是一个平台的能力。因为业务 / 服务的颗粒度更小,交付部署更频繁。迫切需要增强对服务、服务所部署的软硬件环境的全方位监控、评估能力;构建针对各类日志、KPI 数据、告警事件等的数据采集分析平台。平台能力其实是架构师要去思考的,因为你在构建某一个服务的时候,从商业的角度,对系统的规格进行优化或者是对需求进行删减时,就一定要搭建这样一个平台。

最后,将大任务分解为可以迅速完成的较小任务,以服务化 / 微服务架构模式进行敏捷交付,细粒度持续向生产环境发布。微服务间可并行开发独立部署和发布,在服务内部将特性分解为细粒度的任务,实现特性高质量持续发布,快速获取用户反馈并持续改进。这一系列的动作需要支持 DevOps 的工具和环境支持。这些工具和环境,可以自己建设,也可以研发工具的云服务。习惯于租用云服务的方式开展业务的,建议整个开发的工具链和环境,也通过使用 SaaS。

云化 DevOps 工具链架构

第四位分享嘉宾是华为云 DevCloud 高级架构师 Seaman Liu,他从 DevOps 工具的角度分享了自己的实践经验。

当IoT遇到DevOps,揭秘华为云原生全景之路-InfoQ-5

现在的软件,无论是研发场景、交付模式、软件架构、研发工具都是层出不穷。虽然很多人都在做软件,但大部分做的软件的交付方式或者是软件架构都不太一样,所以业界不同的软件公司要做的事情差异也很大。

2013 年以后,华为开始推行 DevOps ,针对 DevOps 做了大量的工具研究,包括前期需要做云化软件的 DevOps 工具链支撑,后期其他的软件形态也开始在探索 DevOps 的工具支撑。 Seaman Liu 提到,“实际上并不是说所有的产品都是适合于做 DevOps 的交互,很多像汽车或飞机交付的软件,实际上是不适合去做这种非常快速的变更,所以需要提醒大家的是,不同的产品形态实际上是适合不同的交互模式”。

DevOps 实践的关键概括为:团队协作 + 特性设计 + 自动化能力 + 架构 + 基础设施。从团队的角度,一个是全功能的产品团队,不管从你的产品经理到开发、测试、运维,需要全部拉通。这样团队能够快速完成产品从需求设计到上线运维整个流程。从整个团队来看,真正实行 DevOps 的话,对团队的要求是比较高的;同时对于工具的能力,要求也是比较高的。

但是,DevOps 工具生态面临的问题是生态庞杂,碎片化问题严重。目前业界流行的 CD 集成方式是基于 Jenkins 的持续交付工具链,在稳定性、高并发、使用复杂度、数据安全方面仍存在一些问题。

云上 DevOps 工具链的核心诉求有几点:

(1)数据安全

(2)随时可用

(3)执行效率高

(4)稳定

(5)使用成本低

DevOps 工具链:从需求下发、到代码提交与编译,测试与验证到部署与运维,打通软件交付的完整路径,提供软件研发端到端支持。

云上 DevOps 工具链平台,将研发工具集合为一体,面向开发者提供研发工具服务,让软件开发简单高效。其实现理念有四点:

(1)云上开发

(2)DevOps/ 持续交付

(3)全生命周期

(4)体验与乐趣

以项目管理为例,项目管理的核心问题在于业务,从业务角度出发要想清楚,怎么是一个比较好的敏捷管理工具。项目管理工具首先要考虑研发协同,需要针对开发者设计一套可以满足开发者需要的一个研发协同工具。协同之后,需要一个完全高效可以支持远程协作的代码托管的服务。

结语

云原生不仅仅是一种技术,而是基于一种对目标的思考,从而衍生出的技术、解决方案与方法论的集合。DevOps 和云原生架构的结合正在帮助企业实现流水线的、精益的产品开发流程,从而快速适应市场变化,实现业务目标。

当然,DevOps 不是银弹,也没有规定什么样的流程是一个标准的流程,因为 DevOps 的方案是随着业务场景、人员的能力、软件开发的复杂度、公司的规模等变化而变化的,只有对于自己的业务与场景而言的合适与不合适。

云原生已来,你做好准备了么?

文章评论