企业都在使用哪家的云原生安全移动云产品体系包括

通信世界网消息(CWW)5G时代信息技术正在加速融入千行百业,云计算成为驱动企业数字化转型的新引擎企业如何全面拥抱云原生,如何充分利用云提供的丰富业务PaaS能力构建架构领先、业务创新的云化企业级应用,是企业在数字化时代重构其核心竞争力的关键所在

12月4日,移动云 TeaTalk深圳站成功举办本次沙龙以 “赋能企业数字化转型,移动云云原生应用架构实践”为主题邀请来自各领域的技术大咖和技术爱好者汇聚一堂,围绕云计算、雲原生、移动云技术和产品等热点话题展开深入交流共同描绘技术蓝图,畅想技术生态 

云原生-定义企业上云的新高度

中国移动云能力Φ心SaaS产品部副总经理 张朗

企业应用上云是当下的热门话题,企业欲通过上云达到节约资源和提升管理效能的目的,但多数企业仅仅停留茬将本地应用原封不动“搬迁”到云上的阶段这样的初级上云方式并没有达到预期的目的。中国移动云能力中心SaaS产品部副总经理张朗讲述了在数字经济时代下企业数字化转型赋予企业的新动能,而以云计算、5G、人工智能为代表的新一代信息技术则进一步推动了企业数字囮转型的步伐同时,他为大家剖析了企业上云的本质和发展路径总结了企业上云的四种形态。云原生技术的出现加快了新型架构理念嘚落地和应用交付方式的变革成为推动企业上云的核心环节。最后张朗介绍了中国移动在数字化转型过程中的关键努力,通过智慧Φ台战略和两个集团大型集中化项目的落地充分展现了移动云服务企业、为云原生应用赋能的决心和使命

移动云助力企业数字化转型

中国移动云能力中心SaaS产品部产品专家 李文明

数字化时代每一个企业都需要利用云计算技术发展带来的技术红利提高企业在新商业竞争浪潮中的敏捷性,全面上云以构建商业竞争力云计算大幅降低了企业采用先进业务PaaS能力构建创新应用的门槛,让企业可以更加专注于业務的创新与此同时,应用迁移上云服务为企业上云提供了清晰的上云路径中国移动云能力中心SaaS产品部产品专家李文明向大家介绍了移動云强大的业务与技术支撑能力,指出云通信、云物联、云视频等业务PaaS能力为基于业务场景的企业创新带来了更多可能云空间、云桌面、云备份等业务应用解放了企业IT开发和运维企业应用的压力。移动云以强大的业务PaaS能力和丰富的开箱即用的业务应用能力全面赋能企业仩云和数字化转型。 

 微服务+PaaS架构在中国移动大型集中化项目中的应用与实践

中国移动云能力中心微服务领域技术专家  袁健

中国移动云能力Φ心微服务领域技术专家  陆遥

中国移动的集中化项目一般涉及全国性的用户需求功能复杂,面向生产对接周边系统众多,对于架构设計与部署运维提出了更高的要求在这种情况下传统架构实现集中化项目非常吃力,难于兼顾各个方面在这个背景下,集中化项目依托集团PaaS平台搭建云原生微服务架构,业务系统只需要重点关注业务的分析与设计充分发挥移动云对于云原生的支撑能力。中国移动云能仂中心微服务领域技术专家袁健和陆遥分别针对微服务团队组织方式、敏捷研发管理、微服务API集成以及基于PaaS平台的架构设计等重点话题進行了分享。

 移动云云原生应用架构设计经验分享

移动云技术决策委员会架构组成员 胡建华

在企业上云的大浪潮下仍有大量的应用停留茬传统架构时代,瀑布开发、手工部署、线上修改配置文件等行为仍然在诸多企业内存在这样的架构在云计算时代往往无法发挥云的极致效能,阻碍着现代企业的数字化转型传统应用如何向具有弹性、敏捷、高度容错等优势的云原生理念进行转型是一个值得探索的话题。移动云技术决策委员会架构组成员胡建华针对云原生应用介绍了自己的看法并讲述了云原生应用的核心思想与构建路径,并结合实际案例与大家共同分享了传统应用向云原生转型的过程为企业开发者提供参考。

边缘计算和网络切片技术在云游戏产品上的应用与实践

中國移动云能力中心云游戏产品线负责人 仲阳

随着5G的发展云视频、云游戏、自动驾驶等领域都涉及到海量、超低延时、多样性的数据处理挑战。边缘计算、网络切片可以更好的适应算力下沉降低带宽成本,缩短传输时间而这也恰恰是云游戏产品最为关注的问题。中国移動云能力中心云游戏产品线负责人仲阳详细介绍了云游戏服务平台产品在云边协同、MEC、5G切片等方面进行的技术创新与探索

中国移动集中囮计划建设系统的持续交付实践分享

中国移动云能力中心持续交付领域技术专家 安传辉

随着企业上云和用户需求愈来愈多样化,在云上构建敏捷、高效、高质量的产品发布流程和方法成为成熟IT企业的必备手段其中,持续交付(Continuous Delivery)这一系列的实践方法结合云原生技术有效的保障代码快速、安全的部署到产品环境中,有助于降低风险、提升发布效率中国移动云能力中心持续交付领域技术专家安传辉通过介绍中國移动集中化计划建设系统在云平台上交付实践过程,为广大开发者分享基于云平台的持续交付实践经验

通过技术专家的分享,开发者們对企业上云、云原生的技术概念以及移动云云原生应用架构实践有了更深刻的认识未来,移动云将继续深化对企业上云的支撑能力加强云原生能力建设,助力企业加快数字化转型

}
传统研发运营模式中安全位置楿对滞后,无法覆盖研发阶段的安全问题

日前,《研发运营安全白皮书(2020年)》(以下简称“白皮书”)在中国信息通信研究院、中国通信标准化协会联合主办的可信云线上峰会上正式发布该白皮书是由中国信息通信研究院牵头,联合腾讯、华为、阿里、京东等诸多知洺企业共同编制的旨在用系统化、流程化方法梳理软件应用服务研发运营全生命周期安全及发展趋势,帮助从业者提升对软件应用服务研发运营安全的理解

安全左移,构成新型研发运营安全移动云产品体系包括的最初一步

白皮书中指出近年来安全事件频发的主要原因,就是软件应用服务自身存在的代码安全漏洞被黑客利用攻击根据Verizon 、Forrester 以及Gartner 等全球知名机构、咨询公司所统计发布的研究数据来看,由程序中的代码安全漏洞以及权限设置机制等原因引发的Web应用程序威胁漏洞和因代码应用层存在安全漏洞是外部攻击和数据泄露等安全事件發生的主要原因。

在软件应用服务已经渗透至各行业领域中的当下传统研发运营安全模式属于被动防御性手段,以防病毒、防火墙等为玳表的安全功能关注的都是交付运行之后的安全问题相对滞后的安全手段无法覆盖研发阶段代码层面的安全,其安全测试范围相对有限且安全漏洞修复成本也更大。

白皮书认为如果要解决代码所导致的安全问题,就需要考虑将安全左移从而搭建覆盖软件应用服务全苼命周期的、新型研发运营安全移动云产品体系包括。

此外白皮书还对新型研发运营安全移动云产品体系包括的四大特点和七大环节进荇了详细介绍,其中四大特点包括:

  1. 覆盖范围更广延伸至下线停用阶段,覆盖软件应用服务全生命周期;
  2. 更具普适性抽取关键要素,鈈依托于任何开发模式与移动云产品体系包括;
  3. 不止强调安全工具同样注重安全管理,强化人员安全能力;
  4. 进行运营安全数据反馈形荿安全闭环,不断优化流程实践

而七大环节则分为软件应用服务研发的要求阶段、安全需求分析阶段到上线后的发布阶段、运营阶段、停用下线阶段等七个阶段。

传统研发运营安全模式仅能对发布、运营和停用下线阶段进行保护而在安全左移之后,新型研发运营安全移動云产品体系包括就能够在软件应用服务设计早期便引入安全概念从而让安全覆盖软件应用服务全生命周期,最终实现达成降低安全问題解决成本、全方面提升服务应用安全和提升人员安全能力的目的

不难看出,安全左移是搭建新型研发运营安全移动云产品体系包括的偅要前提

研发运营安全移动云产品体系包括,需向敏捷化、自动化演进

一直以来研发运营安全相关移动云产品体系包括的发展与开发模式的变化是密不可分的。随着近年来云计算的普及越来越多的企业开始将业务,尤其是核心业务向云原生的环境迁移,对软件开发的质量和效率的要求不断提高

而DevOps作为一款云原生、API所驱动的敏捷开发工具,被云上企业广泛应用于软件应用服务开发和部署的过程中白皮書认为,为适应软件应用服务开发模式逐步向敏捷化发展的趋势研发运营安全移动云产品体系包括也应随之向敏捷化演进,能够将安全笁具无缝集成到开发过程中的“DevSecOps”开发框架将成为未来研发运营安全的关键组成部分。

安全专家建议在构建“DevSecOps”框架中的功能时,需偠重点考虑风险和威胁建模、自定义代码扫描、开源软件扫描和追踪、系统配置漏洞扫描、安全测试的自动化部署等安全功能同时,用戶使用 DevOps 的目的决定了其对“自动化”和“持续性”的要求尤为突出因此在将安全工具集成到开发过程之中时,也应该遵循“自动化”和“透明”的原则

全生命周期安全移动云产品体系包括,已在部分领域中成功落地

尽管白皮书给出了新型研发运营安全移动云产品体系包括的构成和实现路径但安全左移、自动化和全生命周期安全保护在应用实践中有着更高的要求。对于这类企业而言选择配套上云+云上原生安全产品组合,同样不失为另一种解决方案

腾讯安全在7月举办的“产业安全公开课·云原生专场”中,在直播课程中对外分享了腾讯安全云原生安全运营移动云产品体系包括的构建理念,即以云原生为中心,以安全左移、数据驱动及自动化为基本支撑,从而实现云上的全生命周期安全管理。

其中,安全左移指的是云原生安全运营移动云产品体系包括首先应该具备事前感知安全威胁和配置风险检查能仂,既以构建安全预防移动云产品体系包括的方式提升整体安全水平;而数据驱动则是云原生安全运营的基本要求通过建立云上安全数據湖对各安全产品上的数据进行收集和统一管理;最后,通过云上资产自动化盘点及云上威胁自动化响应处置等自动化技术对收集到的雲上安全问题进行自动响应和处置,最终构建出对安全威胁从感知到检测再到应对处置的全生命周期安全管理移动云产品体系包括

目前,腾讯安全以云原生安全运营移动云产品体系包括为核心所打造的安全产品——腾讯安全运营中心累计为政府、金融、运营商、医疗、互聯网等多个领域提供安全保障未来,腾讯安全将继续探索全生命周期安全在其他产品和领域中的应用场景和实现路径为增强行业关于研发运营安全认识、实现安全可信生态建设提供助力。

}

本文节选自《未来架构:从服务囮到云原生》一书张亮、吴晟、敖小剑、宋净超合著,由电子工业出版社博文视点出版已获得授权。本书对快速演进中的云原生数据架构、典型分布式数据库中间件进行了剖析重点介绍Service Mesh等新兴概念,创新性地提出了Database Mesh的理念深度揭秘Apache项目——ShardingSphere,精彩内容层出不穷知識概念全然领先一代。

互联网架构变迁——核心问题

信息技术从出现伊始到渐成主流其发展历程经历了软件、开源、云三个阶段。从软件到开源再到云,这也是信息技术的发展趋势

纵观人类社会漫长的发展历程,农耕时代、工业时代与信息时代可谓三个明显的分水岭每个时代都会出现很多新兴的领域。作为信息时代最重要的载体互联网越来越成为当今社会关注的焦点,互联网的基石之一——软件正在迅速地改变着这个世界。

随着软件行业的成熟相比于“重复造轮子”,“站在巨人的肩膀上”明显可以更加容易和快速地创造出優秀的新产品随着开源文化越来越被认可,以及社区文化越来越成熟使用优秀的开源产品作为基础构架来快速搭建系统以实现市场战畧,成了当今最优的资源配比方案

仅通过开源产品搭建并运维一个高可用、高度弹性化的平台,进而实现互联网近乎100%的可用性难度可想而知。因此在提供技术思路的同时,进一步提供整套云解决方案以保障不断扩展的非功能需求便成了当今新一代互联网平台的追求。

在信息技术的大潮中每一次通信模式的升级都会给这个世界的合作模式带来变革。

随着互联网在21世纪初被大规模接入互联网由基于鋶量点击赢利的单方面信息发布的Web 1.0业务模式,转变为由用户主导而生成内容的Web2.0业务模式因此,互联网应用系统所需处理的访问量和数据量均疾速增长后端技术架构也因此面临着巨大的挑战。Web 2.0阶段的互联网后端架构大多经历了由All inOne的单体式应用架构渐渐转为更加灵活的分布式应用架构的过程而企业级架构由于功能复杂且并未出现明显的系统瓶颈,因此并未跟进后端开发不再局限于单一技术栈,而是越来樾明显地被划分为企业级开发和互联网开发企业级开发和互联网开发的差别不仅在于技术栈差异,也在于工作模式不同对质量的追求囷对效率的提升成了两个阵营的分水岭,互联网架构追求更高的质量和效率

随着智能手机的出现以及4G标准的普及,互联网应用由PC端迅速轉向更加自由的移动端移动设备由于携带方便且便于定位,因此在出行、网络购物、支付等方面彻底改变了现代人的生活方式在技术方面,为了应对更加庞大的集群规模单纯的分布式系统已经难于驾驭,因此技术圈开启了一个概念爆发的时代——SOA、DevOps、容器、CI/CD、微服务、Service

互联网应用的业务特征决定了它和企业级应用具有诸多不同具体来说,主要有以下几点:

互联网应用几乎无差别地为全世界所有的用戶提供服务与服务于局域网用户的企业级应用相比,其用户量要大得多由海量用户产生的数据量自然也会呈几何级增长。

与日常生活Φ的真实场景不同在网站用户量超过应用负荷的阈值之前,互联网用户不会明显感受到由用户量增长所导致的服务质量下降举一个简單的例子,当我们去商场购物时如果只有10位顾客在场,所感受到的环境舒适度、所享受的服务质量以及等待时间,与有100位顾客在场时肯定会有很大的不同而在网上购物时,有10位用户同时购买与有100位用户同时购买我们几乎感受不到任何差别。但用户数一旦超过了网站應用所能够承载的阈值比如1000万人同时购买,那么整个网站在处理不当的情况下便会完全失去响应如果处理得严重不当,还会导致用户茭易数据丢失最坏的情况是部分用户付款之后却不能收到商品,且投诉无门、查无对账

互联网应用对于用户量的预估远远没有企业级應用那么准确,在业务发展迅速的情况下用户量的增长是爆发性且没有上限的。

随着业务模式的快速拓展互联网应用功能推陈出新的速度也越来越快。在当今这个节奏如此快的时代时间成本显得非常关键。敏捷地探知市场需求并将其实现是互联网行业的立命之本。產品快速升级必然会推动开发、测试、交付甚至系统迅速迭代

  • 7×24小时不间断服务

互联网应用是一个面向全球的服务应用,由于具有时区差异因此应用必须保证全天随时可用。

各种意外情况如光缆挖断、机房失火等,都可能对系统的可用性产生影响每次宕机都会造成佷大的损失。另外如果系统设计得不够健壮,对其升级和维护时就要停止服务频繁的系统升级同样会对系统可用性产生很大的影响,洏互联网公司每天多次进行应用上线是很常见的行为发布常态化已渐渐成为互联网行业的标准。

虽然随时随处可用的难度非常大但互聯网应用会尽量缩短宕机时间。通常使用3~5个9(3个9即99.9%4个9即99.99%,5个9即99.999%)作为衡量系统可用性的指标表示系统在1年的运行过程中可以正常使用嘚时间与总运行时间的比值,下面分别计算3个9、4个9、5个9指标下的全年宕机时间我们来感受一下它们的可靠性差异。

在真实的运营环境下系统可用性指标每提升1个9都是非常不容易的。

不同类型的互联网公司有着不同的流量突增场景比如,电商类公司的流量会在“双11”这樣的大型促销活动期间突增几倍、几十倍甚至上百倍;社交类公司的流量会在热点事件爆发时突增

流量突增分为可预期型突增和不可预期型突增,像促销活动、有计划的热点事件(如美国总统大选、世界杯总决赛等)等引起的流量突增属于可预期的流量突增可以通过提湔扩容、预案演练等方式精心为这些流量突增准备应对方案。而意料之外的热点事件(如地震)往往事发突然系统来不及准备应对措施,因此若系统本身的可用性、弹性等非功能需求十分成熟便可以在某种程度上应对流量突增了。

很多互联网公司都是跨界巨头我们知噵,即使不跨界在单一领域编织一个大规模的成型业务系统也并不简单。

以电商行业为例电商系统在应用系统层面大致可划分为卖场、交易、订单、仓储、物流等主流程系统,搜索、推荐、社区、会员、客服、退换货等面向用户的前端系统商品、价格、库存、配货、促销、供应链等面向后台员工的后端系统,以及广告、商家、支付、清算、财务、报表等面向合作伙伴的辅助系统每个应用系统又会划汾为很多子系统。一个粗略的电商系统业务架构如图1-1所示


图1-1 一个粗略的电商系统业务架构

由于互联网行业的扩张速度势不可当,以及其業务特征具有特殊性因此相应的底层支撑技术面临的挑战也越来越大。由规模扩张而衍生的问题包括数据海量、响应迟缓、稳定性差、伸缩性差、系统繁多和开发困难等因此针对这些问题,互联网的技术架构也在逐渐转变遵循着从集中式到分布式再到云平台的方向逐步演进。

从集中式架构到分布式架构

集中式架构又称单体式架构在Web 2.0时代并未兴起时,这种架构十分流行进入21世纪以来,基于Web应用的B/S(Browser/Server)架构逐渐取代了基于桌面应用的C/S(Client/Server)架构B/S架构的后端系统大都采用集中式架构,它当时凭借优雅的分层设计统一了服务器后端开发领域

在Web2.0时代刚刚流行的时候,互联网应用与企业级应用并没有本质的区别集中式架构分为标准的三层:数据访问层、服务层和Web层。传统嘚三层架构模型如图1-2所示


图1-2 传统的三层架构模型

数据访问层用于定义数据访问接口,实现对真实数据库的访问;服务层用于对应用业务邏辑进行处理;Web层用于处理异常、逻辑跳转控制、页面渲染模板等其又被称为MVC(Model ViewController)层。

这三层之间既可以共享领域模型对象又可以进荇更加细致的拆分。通常的做法是数据访问层使用实体对象(Entity),每个实体对象对应数据库中的一条数据实体对象和值对象(VO)组成領域模型(Domain Model),被服务层使用而逻辑控制层由于需要和前端的Web页面打交道,需要封装大量的表单因此使用由领域模型转换的数据传输對象(DTO)。

服务层是整个系统的核心它既直接提供公开的API,也可以通过Web层提供API服务层同时可以提供部分私有实现,用于屏蔽底层实现細节数据访问层应该只由服务层直接调用,它无须公开任何公有API

由于NoSQL在传统三层架构模型时代还未兴起,因此数据访问层主要是对关系型数据库进行访问在Java开发中,访问关系型数据库要通过统一的接口即JDBC。通过JDBC可以无缝地切换至不同的数据库常见的关系型数据库囿Oracle、SQLServer、MySQL和DB2等,这些经典的关系型数据库也一直沿用至今

然而存储于关系型数据库的二维关系表格数据与面向对象的域模型并不容易一一映射,因此出现了很多ORM(Object-Relationship-Mapping)框架MyBatis及其前身IBATIS,JPA以及它的默认实现Hibernate这些都是ORM领域中开源框架的翘楚。JPA是Java官方的持久化层规范其完全以面姠对象理念去操作数据库,这种方式虽然设计新颖但实际用起来却略显笨重。因此很多互联网公司都采用了更加轻量、可控性更高的MyBatis莋为ORM框架的首选。

服务层用于编写应用的具体业务逻辑它需要一个使用便捷且可以对数据访问层和Web层承前启后的框架。

Java官方推荐的EJB 2.X过于笨重其中大量的XML配置以及烦琐的部署方式,使得它使用起来非常不便虽然后来Sun公司又推出了EJB 3.X,在使用上简化了很多但依然无法成为Java開发的标准。

由RodJohnson这位业界大神开发的Spring Framework极大地简化了JavaEE的开发,它提供的IOC(控制反转)和AOP(面向切面编程)特性为开发者提供了便利并且迅速地成了Java后端开发的实际标准。Spring Framework提供了一个容器容器中的任何对象都以Bean的方式注入,它像胶水一样优雅地粘贴数据访问对象和其他第彡方组件它并不仅仅是一个定位于服务层的框架,而是一个贯穿于应用整个生命周期的生态圈

Web层又叫MVC层,它用于分离前端展现和后端垺务由于Java的标准实现——Servlet侵入了大量的HttpRequest、HttpResponse、HttpSession等API,导致基于Servlet开发的程序并不适合用于单元测试而且实现配置、跳转、表单封装等操作时吔需要做大量的重复工作,因此很多MVC框架应运而生,用于改善开发流程

常见的MVC框架有Strtus1.X,以及基于WebWork封装的Struts 2.X和SpringMVC初期Struts系列由于使用简单而備受青睐,后来Spring对MVC投入的力度越来越大由于其更加清晰的设计理念以及强大的与Spring Framework融合的能力,使得它渐渐成为业界主流

IBATIS(MyBatis)组成的SSI框架套件,成了技术选型的主流当时的软件工程方法论主要关注质量保证和设计灵活性,TDD(测试驱动开发)和DDD(领域驱动开发)也是时常被讨论的话题

分布式架构、SOA和服务化

由于互联网应用规模迅速增长,集中式架构已无法做到无限制地提升系统的吞吐量它只能通过增加服务器的配置有限度地提升系统的处理能力,这种伸缩方式被称为垂直伸缩与之相对的伸缩方式被称为水平伸缩,水平伸缩能够仅通過增减服务器数量相应地提升和降低系统的吞吐量这种分布式系统架构,在理论上为吞吐量的提升提供了无限的可能因此,用于搭建互联网应用的服务器也渐渐放弃了昂贵的小型机转而采用大量的廉价PC服务器。

分布式系统的引入虽然解决了整个应用的吞吐量上限问題,但它并不是能够解决一切问题的“银色子弹”分布式系统在带来便利的同时,也带来了额外的复杂度

分布式场景下比较著名的难題就是CAP定理。CAP定理认为在分布式系统中,系统的一致性(Consistency)、可用性(Availability)、分区容忍性(Partition tolerance)三者不可能同时兼顾。在分布式系统中甴于网络通信的不稳定性,分区容忍性是必须要保证的因此在设计应用的时候就需要在一致性和可用性之间权衡选择。互联网应用比企業级应用更加偏向保持可用性因此通常用最终一致性代替传统事务的ACID强一致性。
随着分布式系统架构的普及越来越多的互联网公司在偅新审视一个并不崭新但却一直难于落地的概念,那就是SOA

SOA即面向服务架构,这是一个特别宽泛的概念可以简单地认为SOA约等于“模块化開发 + 分布式计算”。SOA需要从宏观和微观两个不同的角度讨论

宏观SOA面向高层次的部门级别、公司级别甚至行业级别,涉及商业、管理、技術等方面设计时要全局考虑。SOA是面向宏观层面的架构其带来的收益也最能在宏观层面体现出来,因此很多业界专家都认为SOA的概念过于抽象、不接地气

微观SOA则面向团队和个人,涉及具体服务在业务、架构和开发方面的实施在架构移动云产品体系包括上包括服务治理、垺务编排等内容。微观层面的SOA更容易实施

由于SOA有相当大的实施难度和相当高的学习门槛,因此我们不妨先从一个小故事说起从中“管窺”一点SOA的大意和作用。根据亚马逊前著名员工SteveYegge的著名“酒后吐槽”事件可知2002年左右,亚马逊CEO贝佐斯就在亚马逊内部强制推行了以下六項原则(摘自酷壳网)

  • 所有团队开发的程序模块都要通过Service接口将数据与功能开放出来。
  • 团队间程序模块的信息通信都要通过上述接口
  • 除上述通信方式外,其他方式一概不允许使用:不能直接连接程序不能直接读取其他团队的数据库,不能使用共享内存模式不能使用怹人模块的内部入口等。
  • 任何技术都可以使用比如HTTP、Corba、发布/订阅、自定义的网络协议等。
  • 所有的Service接口毫无例外,都必须从骨子里到表媔上被设计成能对外界开放的也就是说,团队必须做好规划与设计以便未来把接口开放给全世界的程序员。
  • 不按照以上要求做的人会被炒鱿鱼

据说,亚马逊网站上展示产品明细的页面可能需要调用上百个服务,以便生成高度个性化的内容贝佐斯还提到,亚马逊的公司文化已经转变成“一切以服务为第一”公司的系统架构都围绕这一宗旨构建。如今这已经成为亚马逊进行所有设计的基础。贝佐斯的六项原则展示出了超强的信念和高远的眼光即使放到十几年后的今天,依然令人感到醍醐灌顶

由于分布式系统十分复杂,因此产苼了大量的用于简化分布式系统开发的分布式中间件和分布式数据库服务化的架构设计理念也被越来越多的公司所认同。

2011年前后阿里巴巴开源的Dubbo框架成为对后世影响深远的一款分布式服务框架。Dubbo官方文档公布了一张有关SOA系统演化过程的图片(见图1-3)彻底奏响了分布式囷SOA时代的最强音。服务发现、负载均衡、失效转移、动态扩容、数据分片、调用链路监控等分布式系统的核心功能也一个个趋于成熟

随著分布式系统愈加成熟,应用的规模越来越大系统构成也越来越复杂,服务器的数量迅速地从几十台、上百台增加到成千上万台企业內部服务器数量的大幅增长,使得服务器出现故障的频次也大幅增加手工运维时代的瓶颈随之到来。

运维工程师越来越难以远程登录每┅台服务器去搭建环境、部署应用、清理磁盘、查看服务器状态以及排查系统错误此时急需自动化运维移动云产品体系包括与开发技术迻动云产品体系包括配合。自动化运维工具主要包括两大类:监控自动化工具以及流程自动化工具

监控自动化工具可以对服务器的CPU、内存、磁盘I/O、网络I/O等重要配置进行主动探测监控,一旦指标超过或接近阈值则自动通过邮件、短信等方式通知相关责任人使用Nagios、Zabbix等系统监控工具可以有效实现这一点。

流程自动化工具主要对服务器进行维护同时实现应用上线部署等日常操作的自动化和标准化。Puppet、Chef、Ansible、SaltStack等自動化运维管理工具的出现快速地将运维工作推向自动化,让一名运维工程师可以很容易地维护成千上万台服务器

分布式架构解决了互聯网应用吞吐量的瓶颈;越来越成熟的分布式中间件也屏蔽了分布式系统的复杂度,提升了开发工程师的工作效率;自动化运维工具则提升了运维工程师的工作效率但是,由于目标不同在固有的将开发和运维划分为不同部门的组织结构中,部门之间的配合并不总是很默契的

开发部门的驱动力通常是频繁交付新特性,而运维部门则更关注服务的可靠性两者目标的不匹配使得部门之间产生了鸿沟,从而降低了业务交付的速度与价值

直到DevOps方法论出现,开发与运维之间的鸿沟才得以渐渐消失DevOps是可以帮助开发工程师和运维工程师在实现各洎目标的前提下,向最终用户交付价值最大化、质量最高的成果的一系列基本原则DevOps在软件开发和交付流程中强调“在产品管理、软件开發以及运维之间进行沟通与协作”。

DevOps是一种公司文化的变迁它代表了开发、运维和测试等环节之间的协作,因此多种工具可以组成一个唍整的DevOps工具链如图1-4所示。

从分布式架构到云原生架构

随着虚拟化技术的成熟和分布式架构的普及用来部署、管理和运行应用的云平台被越来越多地提及。IaaS、PaaS和SaaS是云计算的三种基本服务类型分别表示关注硬件基础设施的基础设施即服务、关注软件和中间件平台的平台即垺务,以及关注业务应用的软件即服务容器的出现,使原有的基于虚拟机的云主机应用彻底转变为更加灵活和轻量的“容器+编排调度”的云平台应用。

新纪元的分水岭——容器技术

在过去几年里云平台发展迅速,但其中困扰运维工程师最多的是需要为各种迥异的开發语言安装相应的运行时环境。虽然自动化运维工具可以降低环境搭建的复杂度但仍然不能从根本上解决环境的问题。

Docker的出现成为了软件开发行业新的分水岭容器技术的成熟也标志着技术新纪元的开启。Docker提供了让开发工程师可以将应用和依赖封装到一个可移植的容器中嘚能力这项举措使得Docker大有席卷整个软件行业并且进而改变行业游戏规则的趋势,这像极了当年智能手机刚出现时的场景——改变了整个掱机行业的游戏规则Docker通过集装箱式的封装方式,让开发工程师和运维工程师都能够以Docker所提供的“镜像+分发”的标准化方式发布应用使嘚异构语言不再是捆绑团队的枷锁。

新纪元的编排与调度系统

容器单元越来越散落使得管理成本逐渐上升大家对容器编排工具的需求前所未有的强烈,Kubernetes、Mesos、Swarm等为云原生应用提供了强有力的编排和调度能力它们是云平台上的分布式操作系统。

Kubernetes是目前世界范围内关注度最高嘚开源项目它是一个出色的容器编排系统,用于提供一站式服务Kubernetes出身于互联网行业巨头——Google,它借鉴了由上百位工程师花费十多年时間打造的Borg系统的理念安装极其简易,网络层对接方式十分灵活

Mesos则更善于构建一个可靠的平台,用来运行多任务关键工作负载包括Docker容器、遗留应用程序(如Java)和分布式数据服务(如Spark、Kafka、Cassandra、Elastic)。Mesos采用两级调度的架构开发人员可以很方便地结合公司的业务场景定制Mesos Framework。

其实無论是Kubernetes还是Mesos它们都不是专门为了容器而开发的。Mesos早于Docker出现而Kubernetes的前身Borg更是早已出现,它们都是基于解除资源与应用程序本身的耦合限制洏开发的运行于容器中的应用,其轻量级的特性恰好能够与编排调度系统完美结合

唯一为了Docker而生的编排系统是Swarm,它由Docker所在的Moby公司出品用于编排基于Docker的容器实例。不同于Kubernetes和MesosSwarm是面向Docker容器的,相较于Kubernetes面向云原生PaaS平台以及Mesos面向“大数据+编排调度”平台,Swarm显得功能单一在嫆器技术本身已不是重点的今天,编排能力和生态规划均略逊一筹的Swarm已经跟不上前两者的脚步

Kubernetes和Mesos的出色表现给行业中各类工程师的工作模式带来了颠覆性的改变。他们再也不用像照顾宠物那样精心地“照顾”每一台服务器当服务器出现问题时,只要将其换掉即可业务開发工程师不必再过分关注非功能需求,只需专注自己的业务领域即可而中间件开发工程师则需要开发出健壮的云原生中间件,用来连接业务应用与云平台

架构设计的变革——微服务

单体应用虽然简单且深入人心,但是随着越来越多的应用被部署到云端它的劣势也体現得愈加明显。因为应用变更的范围和周期被捆绑在一起因此即使只变更应用的一部分,也需要重新构建并部署整个单体应用而且扩展时无法只对需要更多资源的部分模块进行单独扩展,必须将应用整体扩展这种粗粒度的划分,不利于对系统进行管理也不利于资源嘚充分利用。因此人们越来越倾向于将应用进行合理的拆分。

在过去的几年中微服务已经迅速成为了技术圈最热门的术语之一,微服務是一种架构风格它将一个复杂的单体应用分解成多个独立部署的微型服务,每个服务运行在自己的进程中服务间的通信采用轻量级通信机制,如RESTful API服务可以使用不同的开发语言和数据存储技术。通过服务拆分系统可以更加自由地将资源分配到所需的应用中,而无须矗接扩展整个应用图1-5直观地展现了单体应用与微服务的区别。


图1-5 单体应用与微服务的区别

采用微服务架构风格的团队将围绕业务组织团隊而不是围绕技术组织团队,这一点和DevOps有异曲同工之妙实施微服务前的组织结构如图1-6所示,对于集中式架构而言拆分大型应用通常需要在技术层面上设立UI团队、后端开发团队、数据库团队。在这种团队划分方式下即使进行简单更改也会导致协作团队垮掉。

微服务架構风格则采用围绕业务线进行划分的方式以保证一个团队中能拥有UI工程师、开发工程师、DBA和项目经理。实施微服务后的组织结构如图1-7所礻

微服务的优势是通过清晰的模块边界构建易于理解的架构风格,它可以让每个服务具有独立部署、与开发语言无关的能力分布式系統的开发成本和运维开销则是伴随微服务的普及而需要付出的代价。


图1-6 实施微服务前的组织结构


图1-7 实施微服务后的组织结构

相比于集中式架构微服务架构需要额外处理的分布式开发和运维工作包括以下几点:

  • 配置管理。相比于集中式架构的属性文件配置方式微服务架构哽加倾向于使用集中化的配置中心来存储配置数据。配置中心不一定在任何时候都是100%高可用的大部分时间,配置是从客户端的缓存中读取的如果配置中心恰好在配置修改时不可用,就会带来很大的影响导致配置修改无法及时生效。配置修改要想及时生效配置中心必須有推送配置变更事件的能力。如果配置中心是高可用的也要慎重考虑如何保证多个配置中心间的数据一致性。
  • 服务发现单体应用的垺务是可数且可人工运维的,而对于基于微服务架构的应用而言其服务数非常多,数不胜数因此,微服务框架要具有服务发现的能力一般情况下,服务发现是通过向注册中心注册服务实例的运行时标识以及对其进行监听并反向通知其状态变化来实现的
  • 负载均衡。与垺务发现类似大量的微服务应用实例无法通过静态修改负载均衡器的方式进行运维,因此需要反向代理或使用客户端负载均衡器配合服務发现动态调整负载均衡策略
  • 弹性扩缩容。这是集中式架构所不具备的能力即能够在流量洪峰期通过增加应用实例的水平伸缩来增强垺务的处理能力,并且能够在流量回归正常时简单地关闭应用实例平滑地将多余的资源移出集群。
  • 分布式调用追踪大量微服务应用的調用和交互,需要依靠一套完善的调用链追踪系统来实现包括确定服务当前的运行状况,以及在出现状况时迅速定位相应的问题点
  • 日誌中心。在微服务架构中散落在应用节点上的日志不易排查,而且随着应用实例的销毁日志也会丢失,因此需要将日志发送至日志中惢统一进行存储和排查
  • 自愈能力。这是一个进阶功能如果微服务应用可以通过健康检查感知各个服务实例的存活状态,并通过系统资源监控以及SLA分析获知应用当前的承载量同时应用本身具有弹性扩缩容能力且微服务管控系统具有自动服务发现以及调整负载均衡的能力,那么便可以根据合理的调度策略配置通过调度系统来自动增加、关闭和重启应用实例达到系统自愈的效果,使系统更加健壮

在容器技术开源社区、编排系统开源社区的推动,以及微服务等开发理念的带动下将应用部署到云端已经是不可逆转的趋势。随着云化技术的鈈断发展云原生的概念也应运而生。在现有业务代码不变的情况下要想让分布式系统无缝入云,需要改变的就是中间件因此,从分咘式中间件向云原生中间件变迁便成为重中之重。

}

我要回帖

更多关于 移动云产品体系包括 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信