云原生技术赋能数智化转型升级
陈国
(中国移动通信集团有限公司,北京 100032)
摘 要 在国家大力推进千行百业数字化转型的背景下,本文基于数字化经济的时代特征,分析了符合中国移动数字
java技术专家化发展的IT需求。贴合这些需求,重点介绍了云原生的定义和关键技术,结合自研磐基PaaS平台和磐舟一体化交付平台,分享了中国移动云原生实践。
关键词 数智化转型;云原生;容器技术;微服务;持续交付
中图分类号 TP39 文献标识码 A 文章编号 1008-5599(2021)05-0001-09
收稿日期:2021-04-16
1 数智化转型思考
国家“十四五”规划明确指出:加快建设数字经济、数字社会、数字政府,以数智化转型整体驱动生产方式、生活方式和治理方式变革,实施“上云用数赋智”行动。
陈国 中国移动通信集团
有限公司信息技术中心副总经理。负责组织推进IT 战略管理、IT 规划、智慧中台建设运营、IT 科技创新和IT 架构演进等工作,落实中国移动通信集团有
限公司战略,强化
IT 注智赋能,推进企业数智化
转型。多项科技成果获得国家及省部级奖项。
数智化转型是提升产业生产力和生产效率,提高竞争力
和实现产业现代化的根本性改革举措。从单个组织的角度看,数智化转型是组织利用诸如云计算、大数据和人工智能等数智化技术,改造原有的业务流程和服务方式,通过对产品、服务和商业模式的创新,实现生产效率、服务质量或市场竞争力等方面质的提升。
中国移动制定了创世界一流“力量大厦”发展战略,明确了“推进数智化转型,实现高质量发展”的主线,聚焦“四个三”战略内核,推动公司转型升级、改革创新。同时在全力构建具有运营商特、中国移动特点的智慧中台能力即服务,作为数智化转型升级的关键基础设施,积淀能力、支撑发展、注智赋能。
磐基PaaS 平台作为智慧中台的通用技术底座,正在牵引应用从传统IT 架构迁移至云原生架构体系。在此过程中,将通用技术能力逐步的抽象标准沉淀,形成可共享服用的技术能力;将上层应用微服化解耦,沉淀出可共享的业务服务能力和数据服务能力。通过在磐基
平台上基于云原生的重构,大力提升IT系统对企业业务需求的快速响应和敏捷交付能力,灵活支撑新型业务或功能的快速创新、快速试错与高频迭代,持续加强企业在复杂多变和不确定性环境下的核心竞争力,进一步巩固数智化转型支撑能力。
云原生技术以弹性可扩展、高可用、高灵活、强兼容和低成本的方式将云的价值最大化,让使用方充分享受到云计算技术的红利,具备敏捷、海量和简单的特点,满足经济社会数智化转型“线上化”、“智能化”和“云化”的新要求。
(1)敏捷:市场的快速发展和同质化竞争加剧,对新功能的上线要求越来越高,需要化解高速的业务发展和系统稳定之间的矛盾。
(2)海量:支撑更多的互联网新业务和互联网新玩法,构建支撑海量、高并发和高性能的业务系统架构能力,支撑线上转型。
(3)简单:通过自动化、智能化手段,进一步提高运维效率,解放劳动力,提升IT运维人员的幸福感。
2 云原生技术
云原生是一套指导应用进行软件架构设计的思想。基于这样的思想而设计的应用:天然就“生在云上,长在云上”。使得我们开发的软件和“云”能够天然地集成在一起,发挥出“云”的最大价值。云原生PaaS平台向上可支撑应用开发和集成,向下可提升资源利用效率的关键服务层,有效实现从“基础设施上云”迈入“应用和系统上云”。
云原生技术全面支撑构建和运行可弹性扩展的应用,代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统做出频繁和可预测的重大变更。
云原生关键技术包括容器、微服务和DevOps,其关系如图1所示。
2.1 容器技术
容器技术发展从2013年Docker项目发布开始,经过多年的发展,从早期的Docker、rkt、CRI-O等,到Containerd、Kata Container、gVisor,到目前Kubernetes 以及Docker都成为了云服务的既定标准,基于云原生的软件研发思想逐步成熟推广。
容器本质上是一种软件交付方式。容器技术是英文单词Linux Container的直译。Container有集装箱、容器的含义。海边码头里的集装箱是一种运载货物标准化的箱子,各种各样的货物放在集装箱中,可以方便的装载在货轮上运到世界各地。基于容器技术,开发人员把应用及其运行环境打包到一个可移植的容器(集装箱)中,即容器镜像,然后发布到服务器操作系统上,快速提供服务。交付过程如同海上运输,操作系统如同一个货轮。同样一个容器镜像,无论从哪里打开都是一样的,理论上也可以漂移到云上的任何一个位置。对于应用,不需要关心容器在哪里运行,且应用本身也可以更好地扩容,轻而易举的从1个实例变成100个实例,甚至1万个实例。Kubernetes则是一个容器编排平台,也被称为云原生时代的操作系统,实现大规模数据中心环境工作负载和微服务的自动化管理。
原有整体式的应用早已逐渐成为过去时,随着云原生升级,IT系统由数十乃至数百个松散结合的容器式组件(通常称为微服务)构成,这些组件通过相互间的协同合作,使既定的应用按照设计运作。Kubernetes通过
对多个容器按顺序在网络级别进行组织,使其能够按照
图1 云原生关键技术及其关系
计划运行,实现对于容器的编排。
Kubernetes对大量常用的基础资源进行了抽象和封装,灵活地组合和使用这些资源来解决问题。同时它提供了一系列自动化运维的机制,如图2所示,这些功能都可以用YAML进行声明式部署,并为应用
提供了以下特性。
(1)快速部署应用:作为微服务的最佳载体,快速实现应用部署、维护和滚动升级。
(2)快速扩展应用:K8S中自带了横向自动伸缩(HPA)和纵向自动伸缩(VPA),满足应用对资源的快速扩展需求。
(3)提升资源利用率:对集硬件资源进行管理;根据服务器的CPU与内存资源的可用量,对服务进行部署调度。
(4)服务容灾恢复:监控服务(进程)状态,当某个服务不可用时,能够快速自动恢复。
2.2 微服务技术
微服务是一种应用软件架构设计模式。这种服务区别于系统,是一个或者一组相对独立的功能单元。微服务使用系列小服务来开发应用,每个服务运营在自己的进程中,能够通过自动化机制独立部署,相互间使用标准的轻量机制通信。
中国移动IT系统经过近20年的快速发展,应用架构在持续升级,这源于业务发展,是需求快速变化和运维自动化能力不断提升的必然产物。回顾电信IT系统的发展,经历了最早CS架构、BS单体架构、SOA架构过渡期和微服务架构等几个关键阶段。
2.2.1 单体架构
以IT业务支撑系统举例,从“97工程”开始,随着J2EE和B/S架构的广泛应用,在此时期形成了大量单体应用,如电子渠道系统、计费系统和管理信息系统。
这些单体应用一般采用分层、分包的方式来实现代码的解耦和管理。一般分为MVC3层架构,也可以分成表现层、业务层和持久层,整个应用其实是在一个Web 项目中,是一个工程,运行在一个JAVA虚拟机中。
单体模式虽然部署简单,系统交付界面清晰,但存在一些难以克服的问题。
(1)单体应用不适合大规模的企业级应用。
(2)由于不同的合作伙伴技术选型差异较大,处于烟囱式的架构状态,同样一套逻辑,这里也有那里也有;同样类型的数据,这里一份那里一份。但是信息是隔离的,数据模型不统一,无法打通。当业务越来越多,不同的业务会重建新的项目,不同项目的功能模块可能会出现重复建设的情况,造成浪费。
(3)当项目越来越大,代码量越来越多,造成编译、打包费时,越来越影响效率。开发出来的系统很难变更,至少很难快速变更。这个时候开始希望有自有人员参与到研发过程。
2.2.2 SOA架构
伴随着业务的生态化发展,基础设施云化的大力推进,2015年,基于第3代业务支撑系统建设规范,CRM系统3层架构重新划分成为5层,部分省核心系统尝试进行分布式、服务化改造和实践。
基于SOA思想,以服务为核心搭建企业IT架构,通过企业服务总线(ESB)来连接各个服务节点。为了集成不同系统和不同协议的服务,ESB做了消息的转化解释和路由工作,让不同的服务互联互通。但由于ESB
存在性能瓶颈,可扩展能力较弱,于是重构了能力开放
平台,实现核心系统和外围系统的互联互通。
这样,业务能力可以互相调用,持续集成也基本执图2 Kubernetes技术特性
行起来了,使得业务开发迭代速度明显加快。但如下问题仍然难以有效解决。
(1)SOA 架构下并发性能存在瓶颈,应用容灾手段不足。
(2)无法做到细粒度的应用更新和模块按需发布,敏捷交付速度有待进一步提升。
(3)业务面向线上转型,对接丰富互联网业务时,无法轻松应对线上支付、电商业务和在线直播等高并发场景。
2.2.3 微服务架构
容器编排技术的成熟以及中台战略的推进,大大加快了微服务技术的推广运用,为业务线上化和规模化运营带来可能。
微服务是SOA 架构中ESB“去中心化”的优化,把原有的服务拆解为“小而专注”和“独立自治”的微服务。
这些微服务是可以基于合适的技术栈开发、可被独立部署的组件。它们运行于独立的进程中,服务之间边界清晰,并采用轻量级通信机制(如HTTP/REST)相互沟通、配合来实现完整的应用,满足业务和用户的需求。(1)故障隔离性增强,有效实现了数据和服务的分布式部署,当一个服务不可用时,不会影响整个应用(如某个订单服务挂断不至于影响整个中心)。(2)局部修改可以快速部署,有利于持续集成和快速交付。
(3)高并发能力显著提升。
微服务系统在架构设计过程中,要结合分布式缓存、分布式锁、分布式服务框架、分布式协调服务、分布式消息队列、分布式 会话、分布式事务和分布式搜索等技术去搭建应用。同时,由于服务数量庞大,运维和管理成本大幅增加,需要有对应的服务治理和可检测性的工具。
在以上分布式技术中,分布式服务/分布式服务框架用来解决服务之间的互相发现以及服务治理等问题(如限流、降级、熔断、
分流等)。开源框架里用的比较多的有Spring Cloud 和Dubbo 两种。Spring Cloud 提供了服务化框架所需要的一整套工具套件,Dubbo 也提供了类似的一套解决方案。
随着技术的不断演进,以微服务网格为代表的微服务框架V2.0诞生。如图3所示,微服务网格是专用的基础设施层,独立运行在应用服务之外,提供轻量级高性能网络代理;提供安全、快速、可靠的服务间通信;与实际应用一起部署,但对应用透明(无侵入性)。应用将业务需求之外的通信功能剥离出来。微服务网络专注于路由转发、负载均衡、限流和监控。
微服务网络理念目前得到广泛的认同,在落地过程中,需要通过实践不断优化规模化应用中海量数据支撑和全量推送等性能问题,集成并提升微服务网络运维能力,探索新老架构并存、迁移的最佳实践。2.3 DevOps
DevOps 来自于开发和运维的组合,强化软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和稳定,最终实现的就是持续交付,确保软件可以稳定、持续地处于随时可发布状态。
DevOps
并不是一种新的工具集,而是一种思想、
图3 微服务网络架构图
一种文化,用以改变传统开发运维模式的一套最佳实践。软件开发服务化组织模式方面,构建端到端全功能团队,开发运维一体化,并对团队充分授权;软件架构设计方面,对系统进行服务化解耦,支持按服务小包独立交付;开发和运维流程方面,加强开发与运维的协同,支持更短的周期,更快的反馈;软件服务流程方面,支持服务的独立交付,自动化的环境部署;软件开发环境和工具方面,通过持续集成、持续部署(CI/CD)自动化的工具和流程来实现DevOps的思想,以流水线的形式改变传统开发人员和测试人员发布软件的方式。
随着云原生基础设施越来越完善,加速了开发和运维角的融合,使云原生的DevOps实践成为趋势。
3 中国移动云原生技术实践
云化转型之路并不能一蹴而就,尤其是长期发展过程中遗留下了诸多传统系统,而为了平滑过渡和新旧兼顾,在数智化转型的初期选择“双态”模式,即基于传统IT架构的稳态模式和基于云计算架构的敏态模式。虽然“双态”模式可以帮助我们赢得过渡时间,但是如何将传统业务系统逐步云化迁移,并最终实现完全云化的业务架构,仍然是我们面临的首要难题。
为了更好的促使业务系统朝着云原生和微服务架构迁移,让传统应用摆脱对基础设施的依赖,将传统应用中非业务逻辑的部分解耦下沉,更好地全栈治理复杂基础架构设施及其之上的微服务,更好地推行基于DevOps的敏捷文化,将最新的IT技术集成并应用到业务系统中。通过技术的快速创新驱动业务的高速增长,中国移动通信集团有限公司信息技术中心基于云原生技术自主研发了磐基PaaS平台和磐舟一体化交付平台,并以磐基PaaS平台为基础,持续深化IT系统云化,实现能力的沉淀、共享、运营和汇聚,推动IT架构和能力的云原生转型。
3.1 磐基PaaS平台
中国移动磐基PaaS平台以统一K8S技术栈为基础,完善以应用为核心的云原生技术标准,重视多样化算力体系和标准化体系构建,构建X86/ARM双平面算力资源,优化CPU/GPU算力支持,满足在不同业务场景下的应用需求,丰富容器运行时;引入Operator模式,提升技术服务组件和平台内部组件的供给效率;在容器编排和应用管理之间,增加OAM应用管理平面,促进应用构建和部署的标准化,如图4所示。
平台提供操作简便的一键式服务自动化部署、统一配置管理、应用的弹性扩缩容、微服务管控、DevOps 工具链、资源/服务/容器等多维度综合监控和安全管控等功能,并在此基础上持续发展Serverless和AI等创新能力。
(1)多租户集中管理,多集统一管理。基于RBAC模型的3级安全管理,实现多租户安全管理,隔离不同租户的资源和访问权限。通过分区和分集的方式既保持各项目的独立性,又保持资源的共享。通过对接集的节点,实现集内资源管理和应用部署管理,将多个集纳入统一管理。多集模式下,实现多集应用的统一分发和部署、应用版本升级和跨集灰度发布和滚动升级,以及部署到不同集的不同分区。
(2)跨集资源调度,动态服务弹性伸缩。通过跨集统一调度引擎,在资源调度过程中,实现应用的多集统一部署。根据算法指定同一应用在不同集上部署容器数的比例;支持跨地域跨集容灾,在某一集故障或割接时实现应用在不同地域之间集间的无缝迁移。基于CPU利用率、内存利用率和其它自定义的度量指标自动扩缩Pod的副本数量,使工作负载服务的整体度量水平与用户所设定的目标值匹配,在微服务架构下实现秒级扩缩容。该方案解决了全网扩地域、跨中心、跨集的多网络域应用智能部署和调度,既保证了系统质量,又提高了资源利用率和多业务的资源共享,大大减少对运维人员的依赖。
(3)提供服务流程编排能力,简化应用部署流程。平台服务配置与部署中心提供可视化的服务编排管理,提供简洁的可视化Web UI工具,基于Node-Red功
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论