微服务云平台及DEVOPS培训_第1页
微服务云平台及DEVOPS培训_第2页
微服务云平台及DEVOPS培训_第3页
微服务云平台及DEVOPS培训_第4页
微服务云平台及DEVOPS培训_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

4、ing boot专注于快速、方便集成的单个个体,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:封

5、装了consul操作,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分布式开发五

6、大神兽,eureka服务注册,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 03 devops介绍,1、微服务一般一个功能2-3天开发完毕,微服务的应用改动部署后,并且频繁的改动,测试的工作量很大,测试人员压力较大; 2、微服务的应用很多,很多运维环境需要搭建,运维人员部署1000台/10w台机器,监控1000台/10w台机器,难度加大; 3、其他问题;

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

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

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

12、服务组件、例如zookeeper注册中心、dockerregistry镜像仓库、数据库等; b)为子项目编写在git上打分支的脚本,便于测试发版的时候打分支; c)编写各类型应用发布部署成镜像的dockerfile; d)制作或者在网上找到现成的开发所需环境的docker镜像,并且push到项目开发使用的私有镜像库中; e)编写shell脚本实现将子项目打包成docker镜像,并且push到镜像仓库中。 f)在jenkins上配置自动编译或者部署任务,实现持续集成和部署,容器管理平台整体架构,开发运维集群流程变化,容器编排工具的一些关键能力概括如下: 集群管理:将虚拟机和物理机器的集群管理为一

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

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

15、离。因此,即使应用程序不是容器化的,也可以实现资源隔离。,什么容器编排工具,容器的编排管理工具k8s,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 03 devops介绍,传统软件开发模式,移动互联网时代的特征就是

17、快,产品的决策快、推出快、迭代快、变革快,快能抓住机遇、掌握主动。,案例分析:支撑系统有2000多万行代码,代码构建一次需要40多分钟;由于各个应用之间错综复杂,在集中提交代码模式下构建发布失败率超过20%;一次产品发布需要2周以上的时间,互联网业务的变化,需求提出,需求分析,功能设计,代码开发,测试验证,发布上线,运维监控,1-2个月长周期交付 无法及时响应需求变化 需求从提出到上线反馈时间长,1-2周短周期交付 快速响应需求变化 自动化测试保证质量,瀑布式开发,敏捷 开发,瀑布式开发和敏捷开发,devops理念,基本原则,项目不停、需求不断,持续迭代、持续交付,devops的基本定义,敏捷

18、开发,ci/cd,自动化测试,代码扫描工具,成果展示,建立融合型的敏捷开发团队,业务,po,master,团队,运维,提供业务需求及相关素材、负责需求澄清说明及验收确认,需求转化拆分为用户故事、面向团队代表客户进行需求跟踪,协助团队完成迭代任务、排除团队面临的障碍、确保团队遵守敏捷开发规则,根据需求实现迭代承诺并交付、完成迭代开发中的各项工程实践任务,在团队实现需求时提出运维建议并在迭代评审时进行确认,迭代启动会,迭代计划会,每日立会,迭代评审,迭代回顾,迭代开始前3天进行,评估分析可以进入迭代的需求范围,后续进行需求分析,时长1小时,迭代开始前1天进行,根据完成分析的需求进行迭代任务拆分,估

19、算任务工作量,时长1小时,迭代中每天早上9点40分准时开始,团队成员讲述任务完成情况,时长15分钟,迭代结束后进行迭代评审,演示并验证交付的需求,展示单元测试和自动化测试结果,时长1小时,迭代评审后进行迭代回顾,总结迭代中的经验教训,确定下迭代的改进内容,时长30分钟,敏捷团队与会议,敏捷宣言的价值观(四大宣言) 个体和交互重于过程和工具 工作的软件重于详尽的文档 客户合作重于合同谈判 响应变化重于遵循计划,三 种 角 色,五 大 会 议,敏捷的进度管理看板,每日工作围绕用户故事展开,什么是用户故事 描述高级的功能 代表一小部分终端用户功能 是合作书写的结果 是对未来的承诺,是“更为详细的”语

20、言 包含书面文字、口头叙述、图片等 包含了用户故事的验收标准的边界,用户故事和看板的使用,为什么使用看板? 看板促进流动的概念,以持续为客户/最终用户提供价值 通过可视化工作流程,我们可以为每个人都看到任务,活动和瓶颈 正在进行中的工作(wip)确保我们专注于提高质量,增加对任务的关注,并确保我们停止启动并开始整理 主要原则: 可视化工作 限制正在进行的工作 管理流程 明确制定流程政策 实施反馈回路 协同改进,实验演变,sonar效果: 1) 阻断级违规: 405 - 20 2) 严重级违规: 2307-2291 3) 代码变更行数: 190 - 360+,devops实施落地 代码扫描工具,

21、代码扫描工具,ci/cd整体流程,开发活动、测试活动、生产交付活动通过cicd系统串联自动化并全领域覆盖,流程节点 可定制,devops实施落地 ci/cd整体流程图,代码扫描工具,多业务环境的处理,按交付领域不同的环境进行分领域多维度的统一管理,代码扫描工具,devops实施落地 ci/cd按环境管理,开发人员直观视角,开发人员提交代码时,ci根据任务单号自动捕获、自动编译、自动测试环境部署,ci/cd任务单提交变更流程,代码扫描工具,其他对接系统,用户,ha/lvs,安全,认证,api gateway,消息中心,消息总线,消息路由,探测微服务,性能测试微服务,任务调度微服务,仿真微服务,7

22、*24小时业务监控,ui及接口自动化测试,对压力性能测试进行管理,代码审查微服务,对源码进行 编码审查,安全扫描微服务,对系统进行 安全扫描,web服务器集群,测试过程管理,数据存储,测试案例管理,测试任务管理,缺陷管理,服务注册,服务发现,共享缓存,日志管理,配置管理,测试计划管理,运维管理,自动化测试微服务,测试流程管控,数据存储,iaas(测试资源管理),可持续集成,敏捷开发,ci/cd,自动化测试,成果展示,devops实施落地 自动测试平台(atp),代码扫描工具,接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送

23、给客户端,客户端接收应答报文这一个过程。,测试接口的正确性和稳定性(持续集成是接口测试的核心)。,1)loadrunner:一款商业性能测试工具,用来做接口测试,很好很强大 2)jmeter:一款开源的性能测试工具,操作简单,方便,既有jdbc request操作数据库数据,也有http request和soap request应对测试 3)poster:火狐浏览器自带接口测试工具,插件中安装即可,界面简单明了,容易上手。 4)postman:谷歌浏览器的扩展工具,谷歌商店中选中安装,界面同poster差别不大,界面简洁 5)soapui:开源测试工具,通过soap/http来检查、调用、实现

24、web service的功能/负载/符合性测试;该工具既可作为一个单独的接口测试工具使用,也可利用插件集成到eclipse,maven2.x,netbeans 和intellij中使用。,代码扫描工具,devops实施落地 接口自动化测试工具介绍,自动化测试工具有很多,如qtp,selenium,rft,monkey test,jmeter等。五花八门,有开源的也有商业的,但主流的测试工具还是qtp和selenium,由于selenium的开源和强大的浏览器兼容性和跨平台性,正在被越来越多的人使用; selenium 测试直接在浏览器中运行,就像真实用户所做的一样。selenium 测试可以在

25、 windows、linux 和 macintosh上的 internet explorer、mozilla 和 firefox 中运行。其他测试工具都不能覆盖如此多的平台。使用 selenium 和在浏览器中运行测试还有很多其他好处。 通过编写模仿用户操作的 selenium 测试脚本,可以从终端用户的角度来测试应用程序。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。selenium 的核心,也称browser bot,是用 javascript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令,测试脚本或者是用 html 的

26、表布局编写的,或者是使用一种受支持的编程语言编写的。编程语言可以实现复杂的逻辑,从而实现一些较复杂的测试任务。,技术预研,需求分析,编写方案与计划,搭建测试框架,脚本,用例,数据编写,脚本调试,devops实施落地 ui自动化测试工具: selenium,另外开发了快速验证channel、commission、app-web-console等多平台发布状态的冒烟测试案例,用于日常发布环境验证。 ui自动化测试计划已经可以从持续集成(ci)调用 同步开展crm和boss侧ui自动化测试工作,代码扫描工具,流程自动化,过程可视化,反馈及时化,测试常态化,解放人力,促进协同,增强沟通,保证质量,问题

27、及早发现,结果持续可见,过程自动提效,持续集成部署综合效率提升超过300%,8月份共编译92次,部署48次,devops实施成果展示 ci/cd过程提效,代码扫描工具,团队进行需求分解,快速完成并行任务,迭代交付完整需求,团队合作取代单打独斗,知识技能团队共享,团队能力和士气快速提升,通过站会、评审、讨论、任务完成奖励等方式提高团队熟悉程度和信任 成员之间自动产生了提前完成任务的比较心理 新技术手段的引入,带来了成员新的学习热情,以团队合作取代单打独斗的工作方式,团队内形成了良好的知识分享和技能提升的氛围,大家可以积极领取任务并保质完成,在迭代结束时可以看到完成的成果,士气得到了很好的提升。,代码扫描工具,devops实施成果展示 团队能力提升,devops体系全景图,整体流程,用户故事,未认领,未开始,执行中,阻塞,完成,1.需求敏捷 开发模式,2.敏捷活动 与看板,3.团队,4.cicd,某公司devops成果展示,敏捷成熟度模型和devops成熟度模型参考cmmi成熟度模型及行业经验制定,devops实施成果展示 devops成熟度,某单位devops试点实施计划与完成情况,某单位devops试点实施计划与完成情况(续),试点经验,经验总结 紧急需求:预留10-15%的产能,或预留不纳入敏捷流程的支撑人员 代码

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论