微服务云平台及DEVOPS培训.ppt

上传人:牧羊曲112 文档编号:6284398 上传时间:2023-10-13 格式:PPT 页数:58 大小:6.18MB
返回 下载 相关 举报
微服务云平台及DEVOPS培训.ppt_第1页
第1页 / 共58页
微服务云平台及DEVOPS培训.ppt_第2页
第2页 / 共58页
微服务云平台及DEVOPS培训.ppt_第3页
第3页 / 共58页
微服务云平台及DEVOPS培训.ppt_第4页
第4页 / 共58页
微服务云平台及DEVOPS培训.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《微服务云平台及DEVOPS培训.ppt》由会员分享,可在线阅读,更多相关《微服务云平台及DEVOPS培训.ppt(58页珍藏版)》请在三一办公上搜索。

1、,微服务及DEVOPS 杨鹏 2020年02月,PART 01微服务介绍,PART 02 持续集成持续构建,PART 03Devops介绍,5,微服务简介,单体服务架构,用户模块,订单模块,产品模块,财务模块,公共模块,优点:,缺点:,可用性低,宕机全死,服务器要求高,项目臃肿,代码量飙升,耦合性过大,系统架构、业务架构简单,容易理解,集中部署,运维容易,微服务架构,用户,订单,财务,产品,邮件,配置,优点:,缺点:,业务架构复杂,拆分粒度难以界定,部署维护困难,高可用,硬件配置低,水平扩展,业务简单,快速响应,耦合性低,支持异构,业务内聚,分布式,单体架构的访问,用户模块,订单模块,产品模块

2、,财务模块,公共模块,微服务架构的访问,订单,财务,产品,邮件,10.0.0.6:8001,10.0.0.1:8002,10.0.0.2:8003,10.0.0.3:8004,10.0.0.4:8005,10.0.0.5:8006,访问关系复杂,用户1模块,用户2,用户n,10.0.0.7:8002,10.0.0.8:8002,每个服务足够内聚,足够小,代码容易理解、开发效率提高服务之间可以独立部署,微服务架构让持续部署成为可能;每个服务可以各自进行x扩展和z扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上;容易扩大开发团队,可以针对每个服务(service)组件开发团队;提高容

3、错性(fault isolation),一个服务的内存泄露并不会让整个系统瘫痪;系统不会被长期限制在某个技术栈上。1、同一功能的微服务部署多个,怎么访问配置?配置管理;2、服务是否正常,怎么监控?即:服务的注册和发现;3、怎么判断服务压力,压力大时怎么进行熔断?服务容错;4、多态服务器的服务,怎么进行负载均衡;负载均衡,服务网关;,Spring cloud与Spring Boot的关系,Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring b

4、oot专注于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架;spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring boot来实现,Spring Cloud组件 一,Spring Cloud组件 二,2,4,6,5,3,1,Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。,Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。,Spring Cloud Consul:封装了Cons

5、ul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。,Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。,Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。,Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。,7,Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。,SpringCloud分布式开发五大神兽,Eu

6、reka服务注册,1,2,3,5,Eureka的高级架构图,Ribbon负载均衡,1,2,3,Ribbon架构图,Eureka Server,服务消费者,服务提供者1,服务提供者2,服务提供者3,Ribbon,注册,注册,注册,注册,可用服务列表,负载均衡请求,Hystrix熔断器,1,2,3,Hystrix架构图,ZUUL网关,1,2,3,ZUUL架构图,4,5,6,7,Spring Cloud Config配置中心,Spring Cloud Config 架构图,Spring Cloud Config提供基于以下3个维度的配置管理:,应用,这个比较好理解,每个配置都是属于某一个应用的,环境

7、,每个配置都是区分环境的,如dev,test,uat,prod等,版本,这个可能是一般的配置中心所缺乏的,就是对同一份配置的不同版本管理Spring Cloud Config提供版本的支持,也就是说对于一个应用的不同部署实例,可以从服务端获取到不同版本的配置,这对于一些特殊场景如:灰度发布,A/B测试等提供了很好的支持,产出于spring大家族,spring在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善。比如dubbo现在就差不多死了有spring Boot 这个独立干将可以省很多事,大大小小的活spring boot都搞的挺不错。作为一个微服务治理的大家伙,考虑的很全面,几乎

8、服务治理的方方面面都考虑到了,方便开发开箱即用。Spring Cloud 活跃度很高,教程很丰富,遇到问题很容易找到解决方案轻轻松松几行代码就完成了熔断、均衡负责、服务中心的各种平台功能,Spring Cloud 的优势,PART 01微服务介绍,PART 02 持续集成持续构建,PART 03Devops介绍,1、微服务一般一个功能2-3天开发完毕,微服务的应用改动部署后,并且频繁的改动,测试的工作量很大,测试人员压力较大;2、微服务的应用很多,很多运维环境需要搭建,运维人员部署1000台/10w台机器,监控1000台/10w台机器,难度加大;3、其他问题;,微服务带来的测试、集成、构建、部

9、署问题,微服务带来的测试、集成、构建、部署问题,TDD(测试驱动开发),TDD得原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD得基本思路就是通过测试来推动整个开发得进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。优点:在任意一个开发节点都可以拿出一个可以使用,含少量bug并具一定功能的产品。缺点:增加代码量。测试代码是系统代码的两倍或更多。,FDD(特征驱动开发),敏捷测试的方法,CI/CD全过程管理,容器Container,镜像images,仓库Repositories,执行,构建,分发,Docker 的镜像类

10、似虚拟机的模板,但是更轻量例如:一个镜像可以包含一个完整的 Linux 操作系统环境,里面仅安装了 Tomcat或用户需要的其它应用程序镜像可以用来创建容器,等同于从模板中创建虚拟机容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。,JAVA项目如何通过Docker实现持续部署(只需简单四步),全程无需运维人员参与即:1、开发人员通过git push上传代码2、经Git和Jenkins配合3、自动完成程序部署4、发布,存

11、放镜像的集合。仓库会包含不同软件的不同版本的镜像,通过:存储。分层存储不同软件的镜像。,容器管理技术Docker三大核心概念,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。即:隔离空间。,一次执行,处处运行,基于容器构筑具备完全一致性的开发测试环境,我们项目最初的系统配置管理工作是由架构师来做的,主要需要做如下这些事:a)部署运行项目组开发需要用到公共的服务组件、例如zookeeper注册中心、DockerRegistry

12、镜像仓库、数据库等;b)为子项目编写在git上打分支的脚本,便于测试发版的时候打分支;c)编写各类型应用发布部署成镜像的Dockerfile;d)制作或者在网上找到现成的开发所需环境的Docker镜像,并且Push到项目开发使用的私有镜像库中;e)编写Shell脚本实现将子项目打包成Docker镜像,并且Push到镜像仓库中。f)在Jenkins上配置自动编译或者部署任务,实现持续集成和部署,容器管理平台整体架构,开发运维集群流程变化,容器编排工具的一些关键能力概括如下:集群管理:将虚拟机和物理机器的集群管理为一台大型机器。这些机器在资源能力方面可能有些差异,但大体上都是以Linux作为操作系

13、统的机器。这些虚拟集群可以建立在云上、本地或两者的混合。部署:能处理有大量机器的应用程序和容器的自动部署。支持多个版本的应用程序容器,并且还支持跨越大量集群机器的滚动升级。这些工具还能够处理故障回滚。可伸缩性:支持应用实例的自动和手动伸缩,以性能优化为主要目标。健康:它管理集群、节点和应用程序的健康。可以从集群中移除异常的机器和应用程序实例。基础结构抽象化:开发人员不必担心机器、容量等问题。完全是容器编排工具来决定如何调度和运行应用程序。这些工具也抽象化机器的细节、能力、使用和位置。对于应用程序所有者来说,它们相当于一个容量几乎无限的大型机器。资源优化:这些工具以有效的方式在一组可用机器上分配

14、容器工作负载,从而降低成本,通过从简单的到复杂的算法可有效地提高利用率。资源分配:基于应用程序开发人员设置的资源可用性和约束来分配服务器。资源分配将基于约束、规则、端口要求、应用依赖性、健康等等。服务可用性:确保服务在集群中正常运行。在机器故障的情况下,容器编排会自动通过在集群中的其他机器上重新启动这些服务来处理故障。敏捷性:敏捷性工具能够快速分配工作负载到可用资源,或者在资源需求发生变化时跨机器移动工作量。此外,可以根据业务临界性、业务优先级等来设置约束重新调整资源。隔离:一些工具提供了资源隔离。因此,即使应用程序不是容器化的,也可以实现资源隔离。,什么容器编排工具,容器的编排管理工具K8S

15、,2017年docker官方宣布支持K8s;现在国内大多数公司都可使用k8s进行传统IT服务转换,以实现高效管理等;harbor镜像仓库是由VMware开源的一款企业级镜像仓库,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制等诸多功能。,K8s集群搭建,K8s集群,K8s-存储,K8s-网络,镜像仓库,业务部署,负载均衡,弹性伸缩,灰度发布,打包,二进制包+dockerfile,LB,负载均衡,灰度发布典型流程:可部分更新服务,并选择更新的实例数如果更新成功,更新会暂停可将部分流量引导至新实例,进行测试如果测试通过,可继续更新剩余实例如果测试失败,可将服务回滚至旧

16、版本在任何阶段如果更新发生错误,可将服务回滚到旧版本,真正的灰度发布需要实现应用容器化、数据库分布化以及负载均衡的无状态切换,灰度发布与容器化(基于K8s或Mesos),DevOps与云平台的关系,DevOps在大Paas规划中的定位,DevOps是大Paas平台规划中的核心组成部分,有了DevOps能力才使快速交付、热修复和灰度发布成为可能,PART 01微服务介绍,PART 02持续集成持续构建,PART 03Devops介绍,传统软件开发模式,移动互联网时代的特征就是快,产品的决策快、推出快、迭代快、变革快,快能抓住机遇、掌握主动。,案例分析:支撑系统有2000多万行代码,代码构建一次需

17、要40多分钟;由于各个应用之间错综复杂,在集中提交代码模式下构建发布失败率超过20%;一次产品发布需要2周以上的时间,互联网业务的变化,需求提出,需求分析,功能设计,代码开发,测试验证,发布上线,运维监控,1-2个月长周期交付无法及时响应需求变化需求从提出到上线反馈时间长,1-2周短周期交付快速响应需求变化自动化测试保证质量,瀑布式开发,敏捷开发,瀑布式开发和敏捷开发,DevOps理念,基本原则,项目不停、需求不断,持续迭代、持续交付,Devops的基本定义,敏捷开发,CI/CD,自动化测试,代码扫描工具,成果展示,建立融合型的敏捷开发团队,业务,PO,Master,团队,运维,提供业务需求及

18、相关素材、负责需求澄清说明及验收确认,需求转化拆分为用户故事、面向团队代表客户进行需求跟踪,协助团队完成迭代任务、排除团队面临的障碍、确保团队遵守敏捷开发规则,根据需求实现迭代承诺并交付、完成迭代开发中的各项工程实践任务,在团队实现需求时提出运维建议并在迭代评审时进行确认,迭代启动会,迭代计划会,每日立会,迭代评审,迭代回顾,迭代开始前3天进行,评估分析可以进入迭代的需求范围,后续进行需求分析,时长1小时,迭代开始前1天进行,根据完成分析的需求进行迭代任务拆分,估算任务工作量,时长1小时,迭代中每天早上9点40分准时开始,团队成员讲述任务完成情况,时长15分钟,迭代结束后进行迭代评审,演示并验

19、证交付的需求,展示单元测试和自动化测试结果,时长1小时,迭代评审后进行迭代回顾,总结迭代中的经验教训,确定下迭代的改进内容,时长30分钟,敏捷团队与会议,敏捷宣言的价值观(四大宣言)个体和交互重于过程和工具工作的软件重于详尽的文档客户合作重于合同谈判响应变化重于遵循计划,三种角色,五大会议,敏捷的进度管理看板,每日工作围绕用户故事展开,什么是用户故事描述高级的功能代表一小部分终端用户功能是合作书写的结果是对未来的承诺,是“更为详细的”语言包含书面文字、口头叙述、图片等包含了用户故事的验收标准的边界,用户故事和看板的使用,为什么使用看板?看板促进流动的概念,以持续为客户/最终用户提供价值通过可视

20、化工作流程,我们可以为每个人都看到任务,活动和瓶颈正在进行中的工作(WIP)确保我们专注于提高质量,增加对任务的关注,并确保我们停止启动并开始整理主要原则:可视化工作 限制正在进行的工作管理流程 明确制定流程政策 实施反馈回路 协同改进,实验演变,Sonar效果:1)阻断级违规:405-202)严重级违规:2307-22913)代码变更行数:190-360+,DevOps实施落地 代码扫描工具,代码扫描工具,CI/CD整体流程,开发活动、测试活动、生产交付活动通过CICD系统串联自动化并全领域覆盖,流程节点可定制,DevOps实施落地 CI/CD整体流程图,代码扫描工具,多业务环境的处理,按交

21、付领域不同的环境进行分领域多维度的统一管理,代码扫描工具,DevOps实施落地 CI/CD按环境管理,开发人员直观视角,开发人员提交代码时,CI根据任务单号自动捕获、自动编译、自动测试环境部署,CI/CD任务单提交变更流程,代码扫描工具,其他对接系统,用户,HA/LVS,安全,认证,API Gateway,消息中心,消息总线,消息路由,探测微服务,性能测试微服务,任务调度微服务,仿真微服务,7*24小时业务监控,UI及接口自动化测试,对压力性能测试进行管理,代码审查微服务,对源码进行编码审查,安全扫描微服务,对系统进行安全扫描,Web服务器集群,测试过程管理,数据存储,测试案例管理,测试任务管

22、理,缺陷管理,服务注册,服务发现,共享缓存,日志管理,配置管理,测试计划管理,运维管理,自动化测试微服务,测试流程管控,数据存储,Iaas(测试资源管理),可持续集成,敏捷开发,CI/CD,自动化测试,成果展示,DevOps实施落地 自动测试平台(ATP),代码扫描工具,接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。,测试接口的正确性和稳定性(持续集成是接口测试的核心)。,1)LoadRunner:一款商业性能测试工具,用来做接口测试,很好很强大 2)Jmeter:一款开源的性能测

23、试工具,操作简单,方便,既有jdbc request操作数据库数据,也有http request和soap request应对测试3)poster:火狐浏览器自带接口测试工具,插件中安装即可,界面简单明了,容易上手。4)postman:谷歌浏览器的扩展工具,谷歌商店中选中安装,界面同poster差别不大,界面简洁 5)SoapUI:开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试;该工具既可作为一个单独的接口测试工具使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。,代码扫描工具,DevOp

24、s实施落地 接口自动化测试工具介绍,自动化测试工具有很多,如QTP,Selenium,RFT,Monkey Test,Jmeter等。五花八门,有开源的也有商业的,但主流的测试工具还是QTP和Selenium,由于Selenium的开源和强大的浏览器兼容性和跨平台性,正在被越来越多的人使用;Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Mozilla 和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。使用 Selenium 和在浏览器中运行

25、测试还有很多其他好处。通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。Selenium 的核心,也称browser bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令,测试脚本或者是用 HTML 的表布局编写的,或者是使用一种受支持的编程语言编写的。编程语言可以实现复杂的逻辑,从而实现一些较复杂的测试任务。,技术预研,需求分析,编写方案与计划,搭建测试框架,脚本,用例,数据编写,脚本调试,DevOps实施落地

26、UI自动化测试工具:Selenium,另外开发了快速验证channel、commission、app-web-console等多平台发布状态的冒烟测试案例,用于日常发布环境验证。UI自动化测试计划已经可以从持续集成(CI)调用同步开展CRM和BOSS侧UI自动化测试工作,代码扫描工具,流程自动化,过程可视化,反馈及时化,测试常态化,解放人力,促进协同,增强沟通,保证质量,问题及早发现,结果持续可见,过程自动提效,持续集成部署综合效率提升超过300%,8月份共编译92次,部署48次,DevOps实施成果展示 CI/CD过程提效,代码扫描工具,团队进行需求分解,快速完成并行任务,迭代交付完整需求,

27、团队合作取代单打独斗,知识技能团队共享,团队能力和士气快速提升,通过站会、评审、讨论、任务完成奖励等方式提高团队熟悉程度和信任成员之间自动产生了提前完成任务的比较心理新技术手段的引入,带来了成员新的学习热情,以团队合作取代单打独斗的工作方式,团队内形成了良好的知识分享和技能提升的氛围,大家可以积极领取任务并保质完成,在迭代结束时可以看到完成的成果,士气得到了很好的提升。,代码扫描工具,DevOps实施成果展示 团队能力提升,DevOps体系全景图,整体流程,用户故事,未认领,未开始,执行中,阻塞,完成,1.需求敏捷 开发模式,2.敏捷活动 与看板,3.团队,4.CICD,某公司DEVOPS成果

28、展示,敏捷成熟度模型和DevOps成熟度模型参考CMMI成熟度模型及行业经验制定,DevOps实施成果展示 DevOps成熟度,某单位DevOps试点实施计划与完成情况,某单位DevOps试点实施计划与完成情况(续),试点经验,经验总结紧急需求:预留10-15%的产能,或预留不纳入敏捷流程的支撑人员代码版本:使用持续集成工具(CI)自动进行代码分支合并,不再人工管理自组织团队建设:培养团队综合能力,从功能型团队转为产品团队迭代实施原则:每1-2个迭代增加一个节点流程,减少转型阻力激励机制:按时或提前完成任务,给团队成员一定的奖励,鼓励更好的协作与承诺因地制宜:根据应用系统的实际情况对DevOp

29、s各个环节进行相应裁减,并充分利用已有资源系统高ROI原则:先进行最高性价比的节点实践,如先上接口自动化测试工具。不足之处缺少对运维运营侧工作的整体融合方案灰度发布需要系统架构的同步升级,达成成果,3.取得的成果,需求交付时间,团队开发效率,代码提交频率,集成频率,部署流程,代码质量,自动化测试,发布次数,正常排期需求交付时间从实施敏捷开发前的2周到缩短为1周,团队开发效率从实施敏捷开发前的7人时/功能点提升到3.94人时/功能点(行业均值7.2人时),从实施敏捷开发前的不固定到每天50次以上的提交,测试环境从实施敏捷开发前的每天1次到每小时1次,从实施敏捷开发前的手工部署到自动化部署,测试环

30、境从每天1次到每天4次,生产环境由每月2次到可以随需要立即发布,从实施敏捷开发前的空白到单元测试、Sonar扫描、代码评审工具全支持,从实施敏捷开发前的空白到接口自动化测试、UI自动化测试全覆盖,目标达成,DevOps实施的关键特性总结,版本控制:开发、测试、部署等各种版本分支策略:双分支或三分支管控代码质量扫描:基于Sonar单元测试覆盖:核心模块80%以上漏洞扫描:结合安全测试(待实施)开源工具扫描:优选可靠开源工具,及时修补漏洞制品(工件)版本控制:Nexus制品仓库,CI统一管理环境自动创建:需调用DCOS或其他云平台功能(待实施)不可变服务器:需容器化(待实施)性能测试:自动化的性能测试和必要的手工测试(待实施)每次提交都触发自动构建、自动部署、自动化测试:基于CMP实现自动化变更请求:每次关键变更自动处理零停机发布:灰度发布、应用无状态化 功能开关:业务服务功能可以由开关控制,而无需更新版本统一视图门户:基于CMP实现,打造兼具战略支撑力和全球竞争力的中国特色世界一流的网信企业,感谢聆听!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号