【51CTO.com原创稿件】2017年12月01-02日,由51CTO主办的WOTD 2017全球软件开发技术峰会在深圳中洲万豪酒店召开。秉承专注技术、服务技术人员的理念,自2012年以来,WOT品牌大会成功举办了十四届,积累了大量的技术专家资源,获得了广大IT从业者和技术爱好者的一致认可,成为了业界重要的技术分享交流平台以及人脉拓展平台。
本次会议分为10个技术主题,分别是:编程语言与框架,大数据系统架构设计、微服务与容器技术、前端开发实战、物联网(IOT)技术、软件性能优化、深度学习与智能应用开发、创新运维探索、技术架构遇到业务架构、CTO训练营。51CTO作为本次大会的主办方,将全程图文直播报道与后期视频展示这场盛宴。
12月01日上午WOTD2017主会场,华为云 PaaS容器技术总监刘赫伟进行了主题为《容器技术加速企业业务云化创新》的精彩演讲。以下是演讲梗概,让我们先睹为快!
刘赫伟•华为云PaaS容器技术总监
很高兴今天和大家分享关于容器技术和企业云化的话题。我来自华为,目前在华为云PaaS产品部,主要负责容器技术相关的工作。
今天主要内容包括如下几方面:
一:容器与云原生计算
二:容器与企业业务云化创新
三:华为云容器引擎(CCE)、软件开发云(DevCloud)
四:案例和总结。
容器与云原生计算
大家上午好!很高兴今天和大家分享关于容器技术和企业云化的话题。我是来自华为的,目前在华为云BU PaaS产品部,主要负责容器技术相关的服务。
今天的主要内容包括这些方面,首先我想和大家介绍容器背后的理念,就是云原生计算相关内容。二是容器技术在企业云化创新领域的应用,如何能够加速企业的云化创新。三是介绍华为云有两个比较核心的容器相关的服务,包括云容器引擎CCE和软件开发云DevCloud。***是案例和总结的部分。
大家耳熟能详的云计算诞生基本上已经快20年了,亚马逊2006年就推出EC2的服务。云计算主要的出发点是从基础设施来考虑问题,重点是强调资源的自动供给以及资源的自动弹性伸缩。而最近5年左右,大概2011年左右,云原生的概念,伴随微服务和容器化提出,从应用的角度来看云计算。它更加强调应用如何适应云化基础设施环境,包括比较著名的12要素的要求,还有无状态化、数据与业务逻辑分离这一块。云原生也是不断发展的概念,大概2015年中旬的时候,随着Cloud Native基金会提出一套理念,云原生计算相当于是一个结合的概念。说到CNCF,它是Google公司与一个基金会合作来倡导的基金会,也是一个目前***的容器化开源社区背后的基金会组织。
云原生计算主要包括三个核心特点: Containerized (容器化)、Dynamically Orchestrated (动态编排)、Microservice Oriented (面向微服务),我们今天主要讨论***个特点,就是容器化,容器化是云原生运用最基础的部分,也是最核心的概念。对于第二个特点更加强调的是业务如何动态调度到基础设施之上。第三个大家都比较清楚,就是微服务化架构考虑如何从应用到开发以及解耦。
云原生也提出一个架构蓝图,当然这个架构也在持续发展中。我们看到这个架构包括两层,应用层和基础设施层。应用层更加强调编排、调度以及一些地区热点分布式的基础服务,包括我们经常会说到的分布式协同、分布式一致性以及强一致性的存储云的关系,还有服务发现、日志、运维这块的内容。在基础设施层,包括容器的运行环境,在OS层如何更好的支持,还有容器带来新的打包模式,Docker、Docker Image管理这些概念。
说到容器技术,容器技术是比较基础的技术,存在比较久了,但是容器的概念***次被完整地提出来,并且跟云计算做结合,大概是2011年左右,Cloud Foundry在最早的开源平台中明确应用容器技术。在2013年左右,Docker公司提出Docker概念,带动容器非常爆发的新一轮增长。到2014年的时候,Kubernetes(K8S)的出现更推动了容器的整体发展。短短三四年,Kubernetes的发展非常迅猛,被业界认为是容器调度的事实标准。我这里展示了两个图表,左边最近两年容器的发展趋势图,大家可以看到K8S是直线上扬,Mesosphere,这个最老牌的容器化平台,以及Docker Swarm平台,他们发展都比较平稳。还有OpenStack云计算核心社区,它的发展趋势是平缓下移,说明云计算领域大家的关注度已经开始慢慢从基础设施层向容器所代表的云原生计算和PaaS层。右边的图表是OpenStack社区,它的每个季度都有用户使用度调查,跑在OpenStack基础设施层上面客户的业务有哪些是用PaaS的工具和console(音)的管理工具来做管理的。这里可以看到K8S是***的,而且大家可以看里面有OpenShift,OpenShift也是基于K8S。这里一点关键信息,K8S业务负载已经有32%的运行是在生产环节。这个数字增长非常快,在3年前,K8S出来的时候,估计没有人想到,它能这么快到云计算的生产环境里面。
容器与企业业务云化创新
容器技术本身与今天所说的企业云化创新有什么样的关系?这是华为公司华为云做的总结,我们通过我们的客户真正的实例,以及我们真实案例和访谈,我们总结的一个三类场景的基础方案。我们认为企业业务云化创新有三类诉求,这个诉求本身是递进的关系,从现在开始看。
***方面,面对传统业务如何快速上云这么一个产品,上云带来的诉求是什么?上云之后希望带来运维这块可以做简化。上云之后,我能享受到云计算所带来的自动化弹性伸缩,资源的自动供给方面带来的好处。另一方面,我上云自然提到我希望做到业务的快速创新以及更短的PPM、更短上线、更快发布。这块我们认为是通用的,现在作为***阶段的企业上云的通用诉求。
第二阶段,如果我的企业业务已经上了云之后,我就要考虑业务本身如何对外,对最终的企业客户来讲,用户怎么使用。从整个软件行业的发展来讲,大家已经看得很清楚,软件行业现在已经从单纯卖license的软件套件的服务方式开始向卖服务的趋势转变。意味着企业以后的业务要往SaaS化做发展,SaaS化的发展,其实最核心的是要解决多租的问题,多租架构设计,包括多租怎么对外提供。在SaaS场景下,服务化的借口,包括API、服务接口怎么对外提供,就会涉及到API网关和API接口。
第三阶段,事实上,尤其美国的这块技术已经非常火爆了。包括刚刚正在举行的亚马逊ReInvent大会里,也提供了大量的Serverless的新服务。这里主要强调的是什么呢?一旦业务上云,并且SaaS化之后,更加强调成本优势,包括出现问题的运维成本,以及与客户交流的沟通成本,类似这些东西。这块就强调轻资产的东西。
华为公司在这3类场景下提供7种解决方案,这些方案也对整个公有云领域的企业应用上云的理解。最基础的是业务怎么零改造上云,强调的是基础设施层的编排。另外是业务整体上云之后要做云化的改造,首先要把业务逻辑与数据做分离,需要大量的中间件,比如你用的传统oracle是否要改为分布式,更适合分布式云化的推进。第三步是业务逻辑可以做容器化的改造,这样就可以做我们所说的快速迭代发布的东西。再引入新的微服务化框架,它更强调业务逻辑如何做更合适、更细粒度的解耦和更快的迭代。
***阶段结束之后需要做SaaS化,***调的是多租,比如你需要使用IM类似的身份认证、租户认证、权限管理的服务体系。公有云提供SaaS,意味着打通租户间的网络和数据流动等,比如VPC,所有客户系统都在VPC里面,VPC里面的网络是隔离的,如何打通?可能会用到一些技术做打通,这块也是需要基础设施的配合。SaaS化,再进一步需要开放能力,提供服务化的接口,适用到API网关。
第三个是Severless,也是前面提到。
今天主要讨论容器,我们看一下容器化带来的好处在哪里。
容器化可以和虚拟化做对比理解,虚拟化的技术已经是非常久的,拿虚机来讲,它的设计目标,最基础的要求是代替服务器,因为它的出发点是以前的业务器跑在裸金属上面,而且裸金属本身的管理成本很高,它本身的自动供给能力和弹性收缩能力比较弱,但是它带来这个好处以后,并没有从应用角度来看,以前的应用怎么做开发、怎么做上线、怎么做迭代处理,还是和以前一样。传统的虚化并没有解决上线的问题和自动弹性扩充的问题。传统的虚拟化的基础上增加虚拟化的一层之后,虚机应用之间所带来的交互性能的下降,虚拟化网络,一般情况下带来20%左右的损耗,这个必须要应用本身承担掉。
另外它的资源利用率,多了虚拟化这层,以前的物理服务器,这是20几核,现在服务器要跑虚拟化的管理面,这个管理面首先要占掉一些内存,这个也转化到成本上。这是场景的应用。
容器怎么解决这个问题?Docker Image这样的打包模式,能快速的减少整个软件包的发布,从构建到发布到上线的整个流程,也就是Docker公司最早大家熟以为知的Docker build等的快速模式。既然业务可以快速上线,上线之后可以做到快速的迭代升级和在线的快速扩容,Docker是进程级的技术,可以做到秒级的弹性伸缩和上线,这是虚拟化达不到的。Docker本身是操作系统,OS层级的虚拟化,大大提升资源利用率。我们的收益也是基于华为公司客户反馈的情况来给大家做参考,基本可以做到持续发布,持续发布做到分钟级和秒级的弹性伸缩,估计大家使用过的都深有体会。交互系统的提升,减少虚拟化这层,一般平均1-2个月,***资源利用率也提高比较高,这是保守的估计,提升50%。
华为云容器引擎(CCE)、软件开发云(DevCloud)
介绍容器技术之后,看一下华为公司本身在里面服务布局的情况。这里是CNCF基金会提供的服务集的全景图,这个图里面大概分了7类,开发与集成、编排与管理、运行时、资源与镜像,包括云基础设施这层,我们看到还有平台层,平台层是完整的解决方案,还有监控分析。华为公司目前提供的服务已经在图表上覆盖了所有的部分,这里面最核心的就是今天介绍的最主要的。另外在开发和集成上提供中间件服务,主要聚焦数据相关的中间件,还有API网关的服务,还有软件开发与CICD、持续交付的服务。中间的编排层和基础设施层有IOS的编排服务,还有微服务引擎,面向微服务架构的服务。还有镜像层,提供容器镜像仓库的服务,平台层提供一站式的,整个DevOps流程在上面的平台整体解决方案,以及函数服务的,面向Severless的解决方案。应用监控分析这块提供了应用的管理APM。
重点看一下CCE,它的特点,最核心的特点是基于K8S,K8S这个组织,我们华为公司是在比较早期就参与,2014年。华为公司PaaS是2013年就开始研究容器和PaaS技术,最早是基于Cloud Foundry,当时Cloud Foundry也是比较火。我们也参与Cloud Foundry的基金会,后来2014年,上半年的时候,整体切换到K8S,原因比较复杂,这里就不再细讲。K8S之后,2015年CNCF基金会创立的时候,华为作为十三位创始成员之一参与CNCF社区。目前华为在K8S社区的投入也是比较大的,我们在国内基本排名***,在国际上是前五的社区贡献的位置。因此,我们最核心的特点是:完全开放的原生平台。Docker社区也是一样,虽然Docker社区现在不像原来开源开放的社区,毕竟商业化了。事实上接口相关和OCI相关也有华为的参与。
多元化的生态,Docker Image还有些门槛,虽然比较简单,但是对于真正的开发者,大部分开发者只是到语言,看到JAVA、C++等这样的语言层,并不一定说希望看到Docker Image,因为它的编写以及build的过程也是很复杂的,因此,我们可以构建多语言的自动构建的东西,可以让开发者更聚焦自己的开发语言。大家开发一个应用可能遇到很多中间件,中间件,如果自己从头构建一个Docker Image也是很复杂的,尤其数据类。我们本身会提供一些已经开箱即用的中间件应用市场,这样可以直接取用就可以,简化应用本身开发应用的复杂度。
既然华为在社区里面做贡献,必然有增强的商用级特性,商用这块,主要聚焦于它的自动化配置、上线的整个流程,比如说K8S集群创建,社区做K8S集群创建有很多工具,我们本身是自研的,社区的工具本身有很多问题,包括整个集群不是HA的,基本是单点为主,并没有考虑到在复杂场景下和大规模场景下,包括多集群管理也是比较薄弱,这块也构建了一些内容。
还有一个重点,华为公司的K8S跑在不同的异构资源之上,不只是虚机。主要的使用场景,包括亚马逊和Google都是把K8S跑在虚机上,而华为的K8S大量跑在裸金属之上,包括跑在X86裸金属和ARM服务器,华为公司的ARM服务器也是做得比较领先,我们充分利用硬件能力驱动我们上线的新业务。
关键特性的总结,这里不详细给大家介绍,大家可以看看,包括常见的、一站式DevOps,这是基础的能力。还有灵活弹性伸缩,弹性伸缩必然是容器最核心的使用场景,因为快速的水平扩展对于K8S是非常关键的。还有可定制化DevOps这块的能力,还有丰富的应用调度。应用调度这块,早期华为公司在K8S的贡献都是在调度这块,我们内部使用K8S最早就是改造华为电信级和企业级内部业务,内部业务场景对调度要求非常高,需要做一些独占,做一些资源与应用之间有关联关系的复杂的基于标签的调度的东西。
高可用,基本上是大家标配的内容。***面还有兼容原生的K8S,目前基本上是三个月会更新一次版本,目前的版本是1.7,计划12月份升到1.8。
CCE,我们上线CC2.0,之前1.2的版本,现在全部更新到2.0,2.0引入了几个新特性。
一是裸金属,很具有华为云特色。大家知道华为公司核心,很多机理在硬件上,包括网络设备,华为就是做网络设备发家的。包括现在IT的存储,存储设备也是比较好的,现在发展了5、6年,现在也算开始起步了。硬件的优势我们要利用起来,怎么利用起来?容器直接跑到裸金属上。包括华为公司的操作系统,大家可能也知道,华为的操作系统的能力在国内基本上是排名***,国际上是排名前五的,华为公司Linux内部有大量东西都在我们公司。我们有OS这层能力之后,通过OS的加强,我们其实可以保证在裸金属跑的容器足够的安全、足够的可靠、稳定,因此,虚拟化的这层对我们来讲,有些业务场景不必要,我们可以把这层给它剥掉,这样对高系统的场景非常有益。
本身华为公司的有一个服务可以做到急速物理机的创建,像创建虚机一样5分钟创造一套物理机的环境。这个场景非常适合垂直领域,尤其像AI、机器计算、深度学习这块,还有游戏的行业,因为这些行业对GPU加速,对硬件的要求很高。
我本来今天想做一个DEMO,但是时间有限,外面展台有我们一个DEMO,我们在裸金属服务器上搭了一套魔术世界,魔兽世界的引擎,可能有些同学玩过魔兽世界,魔兽世界可以run在我们的裸金属服务器上,大家可以看一下效果。
第二个亮点,我们做的容器网络,iCAN的容器网络,华为做网络发家,大量积累在网络这块。网络可以做到协议层,直接做到协议站,分包、解包的层次的优化。Flannel是K8S原生所带的网络管理的插件,原生性能可以提升20%以上。网络这块,大家做应用的,大家应该深有感悟,网络和微服务的交付都有受到网络性能的连累,这块影响非常大。我们本身扩展CNI接口,它本身可以做到灵活配置,包括社区现在做的网络的隔离,多租隔离是我们在贡献的。因此网络性能提升上来之后,一分钟之内可以创建大量的容器,这个速度非常快。
***是有状态应用的支持,其实包括两方面,大部分的业务都是有状态的,肯定会设立数据的处理,这需要做业务与数据的分离,数据怎么办?首先会想到存在存储里,持久化存储。它本身已经对接到华为云上,多种多样的存储,包括对象存储、块存储,还有文件存储,这是***方面存储云。另外数据也可以保存到数据的中间件,我们提供开箱即用的数据中间件的容器化的模板,可以直接启用。
***介绍华为软件开发云,重点打通端到端的DevOps,我们这个DevCloud是源自于公司内部软件的研发流程,这个已经开发了十几年,从比较早的敏捷到比较新的微服务架构,都是这样来的。这套现在在华为云开放出来,给我们的合作伙伴使用,整体不详细介绍,大家做开发比较清楚,从代码到流水线的发布。重点强调一下,我们现在已经提供容器化标准化的流程,从容器的代码仓库,结合本身的Build和部署,部署到CCE引擎上的流程,可以部署到开发、测试以及生产环节。
总结与案例
案例,这个案例本身也是我们一个客户,游戏的运营公司,它目前已经使用了裸金属容器这块业务,它本身实现的价值来讲,最主要的是提升整体的容器所带来的DevOps快速发布上线的流程,因为游戏这个东西是有很明显的高峰和低峰访问段,在高峰的时候,比如晚上访问量很大,会不会做自动的弹性伸缩,保证不会因为访问量太大而中断。而夜里,没有人玩游戏就会通过缩容记下来,这个非常好。
再总结一下华为的云服务在容器化服务的全景图,包括一站式云服务应用管理平台,比如我们提供ServiceStage,包括这些新的管理。企业级云中间件,目前主要用的都是数据类相关的服务,数据库还有队列的IPL。K8S容器平台是我们很关键的一个,还有Serverless相关的服务,大家可以试用一下,还是比较新的。
华为云PaaS理念来讲有两层,一是优化容器,所有的服务的设计都是围绕容器技术来的。第二方面是开放生态,现在做公有云的玩家越来越多,大家本身在云上要避免和厂商绑定的形式,这种开放生态,尤其Docker和K8S的生态是非常重要的。大家有兴趣的,可以在今天或者明天在展台做更详细的了解。
以上是51CTO.com记者从一线为您带来的精彩报道。后续我们还有更加精彩的独家报道,敬请关注。
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】