1、 微服务及DEVOPS 杨鹏 2020年02月PART 01微服务介绍PART 02 持续集成持续构建PART 03Devops介绍”微”即是小由一系列小服务组成独立运行每个服务运行于自己的独立进程业务建模围绕着业务功能进行建模独立部署每个服务独立部署5分散式管理最低限度的集中管理微服务更小更强更快微服务简介单体服务架构单体服务架构用户模块订单模块产品模块财务模块公共模块可用性低,宕机全死服务器要求高项目臃肿,代码量飙升,耦合性过大系统架构、业务架构简单,容易理解集中部署,运维容易微服务架构微服务架构用户订单财务产品邮件配置业务架构复杂拆分粒度难以界定部署维护困难高可用硬件配置低水平扩展业务简
2、单快速响应耦合性低支持异构业务内聚分布式单体架构的访问单体架构的访问用户模块订单模块产品模块财务模块公共模块微服务架构的访问微服务架构的访问订单财务产品邮件10.0.0.6:800110.0.0.1:800210.0.0.2:800310.0.0.3:800410.0.0.4:800510.0.0.5:8006访问关系复杂用户1模块用户2用户n10.0.0.7:800210.0.0.8:8002每个服务足够内聚,足够小,代码容易理解、开每个服务足够内聚,足够小,代码容易理解、开发效率提高发效率提高服务之间可以独立部署,微服务架构让持续部署服务之间可以独立部署,微服务架构让持续部署成为可能成为可
3、能;每个服务可以各自进行每个服务可以各自进行x扩展和扩展和z扩展,而且,每扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服个服务可以根据自己的需要部署到合适的硬件服务器上务器上;容易扩大开发团队,可以针对每个服务容易扩大开发团队,可以针对每个服务(service)组件开发团队组件开发团队;提高容错性提高容错性(fault isolation),一个服务的内存,一个服务的内存泄露并不会让整个系统瘫痪泄露并不会让整个系统瘫痪;系统不会被长期限制在某个技术栈上。系统不会被长期限制在某个技术栈上。1、同一功能的微服务部署多个,怎么访问配置?、同一功能的微服务部署多个,怎么访问配置?配配置管理;
4、置管理;2、服务是否正常,怎么监控?即:、服务是否正常,怎么监控?即:服务的注册和发服务的注册和发现;现;3、怎么判断服务压力,压力大时怎么进行熔断?、怎么判断服务压力,压力大时怎么进行熔断?服服务容错;务容错;4、多态服务器的服务,怎么进行负载均衡;、多态服务器的服务,怎么进行负载均衡;负载均负载均衡,服务网关;衡,服务网关;Spring cloud与与Spring Boot的关系的关系 Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具; Sprin
5、g boot专注于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架; spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring boot来实现Spring Cloud组件组件 一一Spring Cloud Config配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。Spring Cloud Bus事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。Netf
6、lix Hystrix容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Spring Cloud for Cloud Foundry通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。Spring Cloud Netflix针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。Netflix Eureka云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。Netflix Zuul边缘服
7、务工具,是提供动态路由,监控,弹性,安全等的边缘服务。Netflix Archaius配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。Spring Cloud组件组件 二二经验总结246531Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。Spring Clou
8、d Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。7Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。服务发现Netflix Eureka客服端负载均衡Netflix Ribbon断路器Netflix Hystrix服务网关Netflix Zuul分布式配置Sp
9、ring Cloud ConfigSpringCloud分布式开发五大神兽分布式开发五大神兽Eureka服务注册服务注册123Register:服务注册当Eureka客户端向Eureka Server注册时,它提供自身的元数据,比如IP地址、端口,运行状况指示符URL,主页等。Renew:服务续约Eureka客户会每隔30秒发送一次心跳来续约。 通过续约来告知Eureka Server该Eureka客户仍然存在,没有出现问题。 正常情况下,如果Eureka Server在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。Fetch Registries:获取注册列表信息Eure
10、ka客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息可能与Eureka客户端的缓存信息不同, Eureka客户端自动处理。Cancel:服务下线Eureka客户端在程序关闭时向Eureka服务器发送取消请求。 发送请求后,该客户端实例信息将从服务器的实例注册表中删除。该下线请求不会自动完成,它需要调用以下内容:DiscoveryManager.getInstance().shutdownComponent();5Eviction 服务剔除在默认的情况下,当Eureka客户端连续90秒
11、没有向Eureka服务器发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注册列表删除,即服务剔除。Eureka的高级架构图Ribbon负载均衡负载均衡123Ribbon的工作第一步有限选择Eureka Server,它优先选择在同一个Zone且负载较少的Server,第二步在根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。其中Ribbon提供了多重策略,例如轮询round robin、随机Random、根据相应时间加权等。负载均衡策略l 简单轮询负载均衡l 加权响应时间负载均衡l 区域感知轮询负载均衡l 随机负载均衡Ribbon中还包括以下功能:l 易于与服务
12、发现组件(比如Netflix的Eureka)集成l 使用Archaius完成运行时配置l 使用JMX暴露运维指标,使用Servo发布l 多种可插拔的序列化选择Ribbon架构图Eureka Server服务消费者服务提供者1服务提供者2服务提供者3Ribbon注册注册注册注册可用服务列表负载均衡请求Hystrix熔断器熔断器123服务雪崩效应形成的原因l服务提供者不可用l重试加大流量l服务调用者不可用Hystrix的设计原则包括:l资源隔离l熔断器l命令模式熔断器的概念熔断器即断路器,断路器(Cricuit Breaker)是一种能够在远程服务不可用时自动熔断(打开开关),并在远程服务恢复时自
13、动恢复(闭合开关)的设施,Spring Cloud通过Netflix的Hystrix组件提供断路器、资源隔离与自我修复功能。Hystrix架构图ZUUL网关网关123验证与安全保障识别面向各类资源的验证要求并拒绝那些与要求不符的请求。审查与监控在边缘位置追踪有意义数据及统计结果,从而为我们带来准确的生产状态结论。动态路由以动态方式根据需要将请求路由至不同后端集群处。ZUUL架构图4压力测试逐渐增加指向集群的负载流量,从而计算性能水平。5负载分配为每一种负载类型分配对应容量,并弃用超出限定值的请求。6静态响应处理在边缘位置直接建立部分响应,从而避免其流入内部集群。7多区域弹性跨越AWS区域进行请
14、求路由,旨在实现ELB使用多样化并保证边缘位置与使用者尽可能接近。Spring Cloud Config配置中心配置中心Spring Cloud Config 架构图Spring Cloud Config提供基于以下3个维度的配置管理:应用这个比较好理解,每个配置都是属于某一个应用的环境每个配置都是区分环境的,如dev, test,uat, prod等版本l 这个可能是一般的配置中心所缺乏的,就是对同一份配置的不同版本管理l Spring Cloud Config提供版本的支持,也就是说对于一个应用的不同部署实例,可以从服务端获取到不同版本的配置,这对于一些特殊场景如:灰度发布,A/B测试等提
15、供了很好的支持 产出于spring大家族,spring在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善。比如dubbo现在就差不多死了有spring Boot 这个独立干将可以省很多事,大大小小的活spring boot都搞的挺不错。作为一个微服务治理的大家伙,考虑的很全面,几乎服务治理的方方面面都考虑到了,方便开发开箱即用。Spring Cloud 活跃度很高,教程很丰富,遇到问题很容易找到解决方案轻轻松松几行代码就完成了熔断、均衡负责、服务中心的各种平台功能Spring Cloud 的优势的优势PART 01微服务介绍PART 02 持续集成持续构建PART 03Devops
16、介绍1、微服务一般一个功能、微服务一般一个功能2-3天开发完毕,微服务的应用改动部署后,并且频繁天开发完毕,微服务的应用改动部署后,并且频繁的改动,测试的工作量很大,测试人员压力较大;的改动,测试的工作量很大,测试人员压力较大;2、微服务的应用很多,很多运维环境需要搭建,运维人员部署、微服务的应用很多,很多运维环境需要搭建,运维人员部署1000台台/10w台机器,监控台机器,监控1000台台/10w台机器,难度加大;台机器,难度加大;3、其他问题;、其他问题;微服务带来的测试、集成、构建、部署问题微服务带来的测试、集成、构建、部署问题TDD(测试驱动开发) TDD得原理是在开发功能代码之前,先
17、编写单元测试用例代码,测试代码确定需要编写什么产品代码。 TDD得基本思路就是通过测试来推动整个开发得进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。 优点:在任意一个开发节点都可以拿出一个可以使用,含少量bug并具一定功能的产品。 缺点:增加代码量。测试代码是系统代码的两倍或更多。FDD (特征驱动开发)敏捷测试的方法CI/CD全过程管理容器Container镜像images仓库Repositories执行构建分发Docker 的镜像类似虚拟机的模板,但是更轻量例如:一个镜像可以包含一个完整的 Linux 操作系统环境,里面仅安装了 Tomcat或用户需
18、要的其它应用程序镜像可以用来创建容器等同于从模板中创建虚拟机容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。JAVA项目如何通过Docker实现持续部署(只需简单四步),全程无需运维人员参与,全程无需运维人员参与即:1 1、开发人员通过、开发人员通过git pushgit push上传代码上传代码2 2、经、经GitGit和和JenkinsJenkins配合配合3 3、自动完成程序部署、自动完成程序部署4 4、发布、发
19、布存放镜像的集合。仓库会包含不同软件的不同版本的镜像,通过:存储。分层存储不同软件的镜像。容器管理技术Docker三大核心概念Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。即:隔离空间隔离空间。一次执行,处处运行一次执行,处处运行基于容器构筑具备完全一致性的开发测试环境Docker开发环境Docker功能测试环境Docker集成测试环境Docker生产环境开发构建部署发布镜像仓库代码库变更时手动或自动触发代码构建代码构建
20、自动形成开发环境自动形成测试环境自动部署到生产环境测试集成我们项目最初的系统配置管理工作是由架构师来做的,主要需要做如下这些事:a)部署运行项目组开发需要用到公共的服务组件、例如zookeeper注册中心、DockerRegistry镜像仓库、数据库等;b)为子项目编写在git上打分支的脚本,便于测试发版的时候打分支;c)编写各类型应用发布部署成镜像的Dockerfile;d)制作或者在网上找到现成的开发所需环境的Docker镜像,并且Push到项目开发使用的私有镜像库中;e)编写Shell脚本实现将子项目打包成Docker镜像,并且Push到镜像仓库中。f)在Jenkins上配置自动编译或者
21、部署任务,实现持续集成和部署容器管理平台整体架构开发运维集群流程变化容器编排工具的一些关键能力概括如下:集群管理:集群管理:将虚拟机和物理机器的集群管理为一台大型机器。这些机器在资源能力方面可能有些差异,但大体上都是以Linux作为操作系统的机器。这些虚拟集群可以建立在云上、本地或两者的混合。部署:部署:能处理有大量机器的应用程序和容器的自动部署。支持多个版本的应用程序容器,并且还支持跨越大量集群机器的滚动升级。这些工具还能够处理故障回滚。可伸缩性:可伸缩性:支持应用实例的自动和手动伸缩,以性能优化为主要目标。健康:健康:它管理集群、节点和应用程序的健康。可以从集群中移除异常的机器和应用程序实
22、例。基础结构抽象化:基础结构抽象化:开发人员不必担心机器、容量等问题。完全是容器编排工具来决定如何调度和运行应用程序。这些工具也抽象化机器的细节、能力、使用和位置。对于应用程序所有者来说,它们相当于一个容量几乎无限的大型机器。资源优化:资源优化:这些工具以有效的方式在一组可用机器上分配容器工作负载,从而降低成本,通过从简单的到复杂的算法可有效地提高利用率。资源分配:资源分配:基于应用程序开发人员设置的资源可用性和约束来分配服务器。资源分配将基于约束、规则、端口要求、应用依赖性、健康等等。服务可用性:服务可用性:确保服务在集群中正常运行。在机器故障的情况下,容器编排会自动通过在集群中的其他机器上
23、重新启动这些服务来处理故障。敏捷性:敏捷性:敏捷性工具能够快速分配工作负载到可用资源,或者在资源需求发生变化时跨机器移动工作量。此外,可以根据业务临界性、业务优先级等来设置约束重新调整资源。隔离:隔离:一些工具提供了资源隔离。因此,即使应用程序不是容器化的,也可以实现资源隔离。什么容器编排工具容器的编排管理工具K8S2017年docker官方宣布支持K8s;现在国内大多数公司都可使用k8s进行传统IT服务转换,以实现高效管理等;harbor镜像仓库是由VMware开源的一款企业级镜像仓库,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制等诸多功能。K8s集群搭建K8
24、s集群集群K8s-存存储储K8s-网网络络镜像仓镜像仓库库业务部业务部署署负载均负载均衡衡弹性伸弹性伸缩缩灰度发灰度发布布打包打包二进制包+dockerfileLB负载均衡CD云平台灰度发布典型流程:可部分更新服务,并选择更新的实例数如果更新成功,更新会暂停可将部分流量引导至新实例,进行测试如果测试通过,可继续更新剩余实例如果测试失败,可将服务回滚至旧版本在任何阶段如果更新发生错误,可将服务回滚到旧版本真正的灰度发布需要实现应用容器化、数据库分布化以及负载均衡的无状态切换灰度发布与容器化(基于K8s或Mesos)DevOps与云平台的关系DevOps在大Paas规划中的定位DevOps是大Pa
25、as平台规划中的核心组成部分,有了DevOps能力才使快速交付、热修复和灰度发布成为可能SaaSPaaSIaaS通用fuwuX86服务器DockerVMPower网络存储网络存储基础设施业务能力渠道中心客户中心营销中心产品中心客服中心资源中心订单中心支付中心开通中心合作伙伴计费中心结算中心账务中心信用中心账单中心策略中心IDE开发工具开发需求BUG管理版本管理发布管理开发流水线 企业内部应用CRMECSESOP对外能力提供数据共享电信接口社会服务IPSDocker引擎多租户管理资源管理组件超市集群管理系统管理服务管理软件资产管理业务服务技术服务COMFRAMECSFDADBLog4XAmber
26、AICache关系数据库AMBER规则引擎负载均衡负载均衡MSGFS弹性计算服务大数据服务规则中心统一事件中心日志处理框架二维码权限管理框架消息处理中心资源调度与编排应用生命周期管理技术能力服务与管理仓库技术组件统一异常处理灰度发布热修复平台调用连分析日志分析配置管理审批管理系统配置Paas平台门户运营方OP使用方OP提供方OPDevOps CloudPART 01微服务介绍PART 02持续集成持续构建PART 03Devops介绍传统软件开发模式移动互联网时代的特征就是快,产品的决策快、推出快、迭代快、变革快,快能抓住机遇、掌握主动。快DevOps开发运维QA阶段要求开发业务架构:多中心、
27、能力开放技术架构:SOA、微服务、技术组件标准化/服务化QA持续集成自动化测试运维快速发布、滚动升级、灰度发布、弹性伸缩开发、测试、生成环境的标准化案例分析:支撑系统有2000多万行代码,代码构建一次需要40多分钟;由于各个应用之间错综复杂,在集中提交代码模式下构建发布失败率超过20%;一次产品发布需要2周以上的时间流程方法工具互联网业务的变化需求提出需求分析功能设计代码开发测试验证发布上线运维监控1-2个月长周期交付无法及时响应需求变化需求从提出到上线反馈时间长1-2周短周期交付快速响应需求变化自动化测试保证质量瀑布式开发敏捷开发瀑布式开发和敏捷开发业务人员开发测试人员运维人员 最终用户想法
28、市场计划和需求开发和测试发布和部署反馈和优化持续业务计划和需求分析协作式开发持续测试持续监控持续发布和部署DevOps精益和敏捷原理持续改进、持续反馈、持续优化DevOps理念基本原则项目不停、需求不断 持续迭代、持续交付Devops的基本定义敏捷开发CI/CD自动化测试代码扫描工具成果展示建立融合型的敏捷开发团队业务POMaster团队运维提供业务需求及相关素材、负责需求澄清说明及验收确认需求转化拆分为用户故事、面向团队代表客户进行需求跟踪协助团队完成迭代任务、排除团队面临的障碍、确保团队遵守敏捷开发规则根据需求实现迭代承诺并交付、完成迭代开发中的各项工程实践任务在团队实现需求时提出运维建议
29、并在迭代评审时进行确认迭代启动会迭代计划会每日立会迭代评审迭代回顾迭代开始前3 3天进行,评估分析可以进入迭代的需求范围,后续进行需求分析,时长1 1小时迭代开始前1 1天进行,根据完成分析的需求进行迭代任务拆分,估算任务工作量,时长1 1小时迭代中每天早上9 9点点4040分准时开始,团队成员讲述任务完成情况,时长1515分钟迭代结束后进行迭代评审,演示并验证交付的需求,展示单元测试和自动化测试结果,时长1 1小时迭代评审后进行迭代回顾,总结迭代中的经验教训,确定下迭代的改进内容,时长3030分钟敏捷团队与会议敏捷宣言的价值观(四敏捷宣言的价值观(四大宣言)大宣言) u 个体和交互个体和交互
30、重于重于过程过程和工具和工具u 工作的软件工作的软件重于重于详尽详尽的文档的文档u 客户合作客户合作重于重于合同谈合同谈判判u 响应变化响应变化重于重于遵循计遵循计划划三三种种角角色色五五大大会会议议敏捷的进度管理看板每日工作围绕用户故事展开 什么是用户故事什么是用户故事描述高级的功能代表一小部分终端用户功能是合作书写的结果是对未来的承诺,是“更为详细的”语言包含书面文字、口头叙述、图片等包含了用户故事的验收标准的边界用户故事和看板的使用例子例子 :叙述:叙述:作为一个作为一个手机银行的用户我想要我想要查看我的账户信息所以所以我可以了解我的账户活动情况验收标准验收标准:给定给定我已经登录系统我
31、已经登录系统当当我选择在我的手机银我选择在我的手机银行账户查看账户信息时行账户查看账户信息时然后然后我能根据所选择的我能根据所选择的账户(账户名称、投资理财账户(账户名称、投资理财方案、外汇购买等)查看账方案、外汇购买等)查看账户细节户细节为什么使用看板?为什么使用看板?看板促进流动的概念,以持续为客户/最终用户提供价值通过可视化工作流程,我们可以为每个人都看到任务,活动和瓶颈正在进行中的工作(WIP)确保我们专注于提高质量,增加对任务的关注,并确保我们停止启动并开始整理主要原则:主要原则:可视化工作 限制正在进行的工作管理流程 明确制定流程政策 实施反馈回路 协同改进,实验演变Sonar效果
32、:1) 阻断级违规: 405 - 202) 严重级违规: 2307-22913) 代码变更行数: 190 - 360+敏捷开发CI/CD自动化测试成果展示DevOps实施落地 代码扫描工具代码扫描工具开发活动、测试活动、生产交付活动通过开发活动、测试活动、生产交付活动通过CICICDCD系统串联自系统串联自动化并全领域覆盖动化并全领域覆盖Agile-敏捷活动CI-持续集成CD-持续交付设计开发需求软件构建(代码&SQL)代码扫描单元测试Junit应用部署(测试环境)自动化测试(接口&UI)集成测试版本交付应用部署(准生产环境)验收测试应用部署(生产环境)系统运营敏捷开发CI/CD自动化测试成果
33、展示流程节点可定制DevOps实施落地 CI/CD整体流程图代码扫描工具 按交付领域不同的环境进行分领域多维度的按交付领域不同的环境进行分领域多维度的统一管理统一管理开发环境测试环境准生产环境生产环境分领域集成预处理软件构建部署发布在线测试多维度敏捷开发CI/CD自动化测试成果展示代码扫描工具DevOps实施落地 CI/CD按环境管理 开发人员提交代码时,开发人员提交代码时,CICI根据任务单号自动捕获、自动编译、根据任务单号自动捕获、自动编译、自动测试环境部署自动测试环境部署需求单提交测试分支构建版本生成部署版本生成测试环境部署交付分支构建版本生成准生产环境部署生产环境部署交付使用敏捷开发C
34、I/CD自动化测试成果展示CI/CD任务单提交变更流程代码扫描工具其他对接系统用户HA/LVS安全认证API Gateway消息中心消息总线消息路由探测微服务性能测试微服务任务调度微服务仿真微服务7*24小时业务监控UI及接口自动化测试对压力性能测试进行管理代码审查微服务对源码进行编码审查安全扫描微服务对系统进行安全扫描Web服务器集群测试过程管理数据存储测试案例管理测试任务管理缺陷管理服务注册服务发现共享缓存日志管理配置管理测试计划管理运维管理自动化测试微服务测试流程管控数据存储Iaas(测试资源管理)可持续集成敏捷开发CI/CD自动化测试成果展示DevOps实施落地 自动测试平台(ATP)
35、代码扫描工具原理接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。目的测试接口的正确性和稳定性(持续集成是接口测试的核心)。 1)LoadRunner:一款商业性能测试工具,用来做接口测试,很好很强大 2)Jmeter:一款开源的性能测试工具,操作简单,方便,既有jdbc request操作数据库数据,也有http request和soap request应对测试 3)poster:火狐浏览器自带接口测试工具,插件中安装即可,界面简单明了,容易上手。 4)postman:谷歌浏览器的扩
36、展工具,谷歌商店中选中安装,界面同poster差别不大,界面简洁 5)SoapUI:开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试;该工具既可作为一个单独的接口测试工具使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。敏捷开发CI/CD自动化测试成果展示代码扫描工具DevOps实施落地 接口自动化测试工具介绍l 自动化测试工具有很多,如QTP,Selenium,RFT,Monkey Test,Jmeter等。五花八门,有开源的也有商业的,但主流的测试工具还是QTP和Selenium,由于S
37、elenium的开源和强大的浏览器兼容性和跨平台性,正在被越来越多的人使用;l Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Mozilla 和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。使用 Selenium 和在浏览器中运行测试还有很多其他好处。l 通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。Selenium 的核心,也称browse
38、r bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令,测试脚本或者是用 HTML 的表布局编写的,或者是使用一种受支持的编程语言编写的。编程语言可以实现复杂的逻辑,从而实现一些较复杂的测试任务。技术预研需求分析编写方案与计划搭建测试框架脚本,用例,数据编写脚本调试DevOps实施落地 UI自动化测试工具: Selenium 1.另外开发了快速验证channel、commission、app-web-console等多平台发布状态的冒烟测试案例,用于日常发布环境验证。2.UI自动化测试计划已经可以从持续集
39、成(CI)调用3.同步开展CRM和BOSS侧UI自动化测试工作敏捷开发CI/CD自动化测试成果展示代码扫描工具代码编译频率编译时长部署时长编译问题处理测试环境部署频率SQL合并&执行自动化测试持续集成(编译、部署、接口&UI自动化)实施前1次/天20分钟30分钟人工分析&口头协调1次/天人工收集执行无各环节人工触发实施后大于5次4分钟7分钟自动定位&自动邮件=4次/天自动收集执行应用部署后自动触发约23分钟流程自动化过程可视化反馈及时化测试常态化解放人力促进协同增强沟通保证质量问题及早发现结果持续可见过程自动提效持续集成部署综合效率提升超过持续集成部署综合效率提升超过3 30000% %,8
40、8月份共编译月份共编译9292次次,部署,部署4848次次敏捷开发CI/CD自动化测试成果展示DevOps实施成果展示 CI/CD过程提效代码扫描工具团队进行需求分解快速完成并行任务迭代交付完整需求团队合作取代单打独斗知识技能团队共享团队能力和士气快速提升 通过站会、评审、讨论、任务完成奖励等方式提高团队熟悉程度和信任 成员之间自动产生了提前完成任务的比较心理 新技术手段的引入,带来了成员新的学习热情以团队合作取代单打独斗的工作方式,团队内形成了良好的知识分享和技能提升的氛围,大家可以积极领取任务并保质完成,在迭代结束时可以看到完成的成果,士气得到了很好的提升。敏捷开发CI/CD自动化测试成果
41、展示代码扫描工具DevOps实施成果展示 团队能力提升DevOps体系全景图BACKLOG用户需求用户故事用户故事用户需求用户故事用户故事用户需求用户故事用户故事开发任务测试任务设计任务单元测试验证测试开发任务开发任务BACKLOG障碍问题计划会议:PO主持创建Sprint backlog评审会议:PO主持验收用户故事回顾会议:只有团队成员参与好的、待改进、如何改进看板+每日例会:可视化流程鼓励团队沟通产品backlog:条目化用户故事优先级排序按用户故事组织开发和交付Sprint Backlog:经任务分解和估算的用户故事经设计的测试用例可以迭代完成的周期持续集成:自动化随需的软件构建、静态
42、代码扫描、单元测试、部署任务领取编码&单元测试测试用例&自动化测试脚本集成测试环境准生产环境生产环境开发分支测试分支交付(生产)分支持续集成版本发布集成自动化测试UAT测试应用上线UAT测试组织者缺陷反馈开发测试环境自动化部署执行测试+自动化测试Scrum团队组成:干系人 PO ScrumMaster团队(跨职能,开发,测试等)DevOps平台系统(工具集)用户故事未认领未开始执行中阻塞完成1.1.需求敏捷需求敏捷 开发模式开发模式2 2. .敏捷活动敏捷活动 与看板与看板3 3. .团队团队4 4.CI.CICDCD某公司DEVOPS成果展示 敏捷成熟度模型和DevOps成熟度模型参考CMM
43、I成熟度模型及行业经验制定DevOps实施成果展示 DevOps成熟度某单位DevOps试点实施计划与完成情况某单位DevOps试点实施计划与完成情况(续)试点经验1. 经验总结 紧急需求:预留10-15%的产能,或预留不纳入敏捷流程的支撑人员 代码版本:使用持续集成工具(CI)自动进行代码分支合并,不再人工管理 自组织团队建设:培养团队综合能力,从功能型团队转为产品团队 迭代实施原则:每1-2个迭代增加一个节点流程,减少转型阻力 激励机制:按时或提前完成任务,给团队成员一定的奖励,鼓励更好的协作与承诺 因地制宜:根据应用系统的实际情况对DevOps各个环节进行相应裁减,并充分利用已有资源系统
44、 高ROI原则:先进行最高性价比的节点实践,如先上接口自动化测试工具。2. 不足之处 缺少对运维运营侧工作的整体融合方案 灰度发布需要系统架构的同步升级达成成果3. 取得的成果需求交付时间团队开发效率代码提交频率集成频率部署流程代码质量自动化测试发布次数正常排期需求交付时间从实施敏捷开发前的2周到缩短为缩短为1 1周周团队开发效率从实施敏捷开发前的7人时/功能点提升到提升到3.943.94人时人时/ /功功能点能点(行业均值7.2人时)从实施敏捷开发前的不固定到每天每天5050次以上的提交次以上的提交测试环境从实施敏捷开发前的每天1次到每小时1次从实施敏捷开发前的手工部署到自动化部署测试环境从
45、每天1次到每天4次,生产环境由每月2次到可以随需要立即发布从实施敏捷开发前的空白到单元测试、Sonar扫描、代码评审工具全支持从实施敏捷开发前的空白到接口自动化测试、UI自动化测试全覆盖目标达成DevOps实施的关键特性总结1.版本控制:开发、测试、部署等各种版本2.分支策略:双分支或三分支管控3.代码质量扫描:基于Sonar4.单元测试覆盖:核心模块80%以上5.漏洞扫描:结合安全测试(待实施)6.开源工具扫描:优选可靠开源工具,及时修补漏洞7.制品(工件)版本控制:Nexus制品仓库,CI统一管理8.环境自动创建:需调用DCOS或其他云平台功能(待实施)9.不可变服务器:需容器化(待实施)10. 性能测试:自动化的性能测试和必要的手工测试(待实施)11. 每次提交都触发自动构建、自动部署、自动化测试:基于CMP实现12. 自动化变更请求:每次关键变更自动处理13. 零停机发布:灰度发布、应用无状态化 14. 功能开关:业务服务功能可以由开关控制,而无需更新版本15. 统一视图门户:基于CMP实现打造兼具战略支撑力和全球竞争力的中国特色世界一流的网信企业感谢聆听!