专家观察 | 景韵:“云在DevOps中的典型运维场景与实践”(2)
这里可以看到整个交付的生命周期的过程,整个过程映射到不同的环节,这块一定是训练有素的敏捷,包括现在有很多同事专门在做校验,包括之前在用友也有专门校验的团队.持续交付就是我之前在用友重点攻破的内容,由于会使用全开源的技术,去打造一条持续交付的链条出来,为了让我们的问题更快的去暴露,更快的去把一个质量跟高的包打出来. 在之前没有做这块,很多时候由我们手工去做的.很多时候在做现场的时候,完全是由我们的开发人员自己把这个包打出来,大家可以想象这个质量会有严重的问题. 下面是整个的知识基础,精益还有TPS这块,包括自动化的内容. 用心的同学可能会看到上面缺了一块,开发之后直接是部署,为什么没有测试,当时我们在学习的时候,明确强调了,我们的测试是一种能力,要嵌到每一个环节,要把测试融入到整个开发过程当中去,不仅仅是到最终部署然后测试这么一个过程. 我们现在的流程是,因为我们做智能硬件,大家可能说这个过程是比较复杂的,我们的一次编译可能都需要一个半小时的时间,而且在过程当中可能会产生大概200G左右的文件,打出来包也在10G以上.对我们来说失败的成本是非常高的,所以我们要用内建质量的方式. 在编译的环节,我们要把很多的质量检查的东西做进去,包括我们后来做一些扫描,还有编译过程当中做的findowner的机制.在做需求的时候,可能测试也要帮助产品经理去分析一些问题. DevOps能力模型,研发运营一体化.核心的要有能力共享,要有内建质量,自动化,还有反馈.这里面要提一下责任共淡. 开发和测试,质量非常重要,一定要把它做起来,而不是说仅仅是CM的工作、测试的工作或者开发的工作而已,大家共同承担.可视化. 整个你在做的过程中,一定要把你整个的过程还有你的质量都要可视化出来,过程比如说使用看板,看板接入到运维的环节,可以把很多东西和整个的交付链条清晰的看出来.包括质量,度量代码质量,还有通过专门的报告去度量代码的功能和质量.敏捷研发大家很熟悉,持续交付,技术运营,比如做监控预警,去做日志的管理,去做自动化部署. 前面把DevOps的一些基础的东西给大家做了一个简单的介绍,DevOps本身是一个比较大的概念,涉及到的东西也非常多,让大家有一个整体的了解,知道它有什么内容.这块还是想跟大家提,DevOps虽然非常大,但是大家可以从自己手上的工作开始做起. 过两天会去深圳GOPS大会,通过绞杀者的模式,为什么叫绞杀者,热带植物有一种绞杀的现象,种子落在树上,它可以逐渐长出寄生根,把原来的树咬死,形成新的树木.核心的意思是从大家的工作当中入手,从持续交付去做,更多的往我们的运维侧做一些工作,能把一些包括我们的质量和编译的信息,更多的延伸,让我们开发更多的了解. 后面讲一下从DevOps角度怎么看云计算.从我的角度认为,云能带来的对DevOps的两个维度. 一个是快速构建应用,因为DevOps核心的是要帮助我们的业务实现,尤其是中小企业或者刚刚初建的企业,可以开素构建一个应用,build完之后去做度量,知道客户到底买不买账,然后我们再反过来做学习的过程. 快速构建应用,之前在用友做的时候,大家刚开始用阿里云的时候习惯的使用他的ECS,直接使用他虚拟机,包括数据库都搭载在虚拟机上.其实我不赞同这种方式,需要更多使用云服务,包括也有很多研发云这样的内容,可以很快定制出来一个移动端的App,包括像腾讯里做云服务的测试.还有持续交付这块也有很多的云服务. 运维这块也有很多云服务,大家都知道做DevOps这块有个叫老王的人,非常厉害,他们自己开发的DevOps的产品,也有云上的服务,很容易帮助我们做快速的构建应用,包括运维的过程都会有. 规模化,有个例子,滴滴在做了一段时间之后,尤其是在打价格战的时候,当时预估只有10%的用户增长,后来500%,整整50倍的增长.现有的这种技术能力已经没有办法做支撑,联系到阿里云做了一个7天7夜快速的重构,把整个滴滴的架构搬到了云上,实现了非常快的规模化. 包括新浪微博做Docker和阿里云集成的时候,也是基于这样的考虑,因为现有的机器已经没有办法再做,甚至我们的机房已经没有任何的位置,这时候需要去使用云的一些能力去做到快速的规模化. 这是我自己结合我们的经验总结出来的DevOps与云典型实践,并不成体系,我基于传统的IaaS、CaaS、PaaS、SaaS的模式. 第一个,在IaaS层或者CaaS,我们有一个非常基础的实践,基础设施即代码.在美国有一个竞争对手,《纸牌屋》就是他们出的,他们云计算用得是炉火纯青的一家公司,DevOps也是用得炉火纯青,交付速度非常快.他们就是使用阿里云,在每一次应用部署的时候,他不是在他的CaaS当中重新再去部署一个应用,而是完整的替换,这里面节使用到了基础设施即代码这块,他使用了亚马逊的AMI这样的技术,通过文件去定义镜像是什么样的. 包括之前看过基于AWS其他的一些实践.包括我们现在研发,安卓编译的效率对机器的性能要求非常高,我们在提供这种虚拟化的研发环境,在虚拟化的研发环境当中,我们通过OpenStack的基础镜像,加上ansible,把整个开发环境定义出来.整个安卓系统要基于芯片,类似于高通芯片有很多型号,这样我们完全把它版本化,可以很容易研发出来任何版本的开发环境 同时,刚刚提到不可变基础设施,他不会在一个虚拟机里部署应用,是把虚拟机直接砍掉,然后直接部署一个新的. PaaS这块,后面有一个云原生应用,包括12-Factor.SaaS刚提到了,这里可以快速帮我们实现业务的交付,包括研发云、测试运、运维云还有持续交付云.这里要提到后端即服务,为了快速帮助研发,帮助产品去定义出来一个他们自己的产品,包括即时通讯这样的服务,还有其他的一些消息服务之类的.后面是Serverless. (编辑:ASP站长网) |