TOC
强调业务目标,以用户的价值为唯一的评判标准,团队的考核评价机制也要改变,个体和团队的成功都要放在整个开发-运维生命周期内来进行评价,开发完成了很多用户需求不一定是成功,运维保障系统不down机也不一定是成功!只有用户想要的功能被及时实现了,被成功部署了,被稳定使用了才算成功。 就是把敏捷开发部门和运维部门之间的围墙打通,形成闭环
1、配置管理
很多应用程序需要一些配置通过组合的配置文件,命令行参数和环境变量。 这些配置应该与镜像内容分离以保持容器化应用程序的可移植性。
方案一、第三方产品 携程apollo
方案二、k8s的configmap+ansible ConfigMap API资源提供了将配置数据注入容器的机制,同时保持容器不受kubernetes的影响。ConfigMap可用于存储细粒度信息如单个属性,或粗粒度信息如整个配置文件或JSON对象。
视频介绍 ansible来了
2、发布管理
Spinnaker 是 Netflix 开源出来的持续交付工具,目的是为研发团队提供灵活的持续交付流水线,并且支持部署到测试/生产环境。Netflix 目前通过 Spinnaker 实现每天4000次的发布。
它的优势在于:
- 支持多种云平台。
- 自动化发布。
- 发布原子化。
- 预置了软件发布的最佳实践。
- 社区强大。
3&4、CI、CD
CI(Continuous Integration),持续集成。开发完成代码开发后,能自动地进行代码检查、单元测试、打包部署到测试环境,进行集成测试,跑自动化测试用例。
CD(Continuous Deploy),持续部署。代码测试通过后,能自动部署到类生产环境中进行集成测试,测试通过后再进行小流量的灰度验证,验证通过后代码就达到线上发布的要求了,就可以把代码自动部署到线上。
有 jenkins / gitlab 两种方案
5、自动化测试
- 静态代码分析 findbugs
- 单元测试 junit
- 覆盖率统计 。 jenkins插件 Cobertura
- api测试
- doclever 、eolinker 专业版收费
- jmeter 完全开源,但是没有mock数据
- soapUI 商业软件
6、APM
APM解决方案严格支持实施DevOps的许多目标。APM系统可以通过提供预测性分析来识别异常情况,并在服务受到影响之前向DevOps团队发出警报通过使用APM,开发人员可以专注于编写代码,而不是花时间与部署灾难作斗争,并在Dev和Ops之间建立健康的协作工作环境.
APM是开发人员需要确保DevOps不仅在功能上敏捷,而且在操作上非常出色的反馈循环。
什么是分布式调用追踪系统? 它有什么作用? 为什么我们需要它?
我们在最初开发web服务的时候,通常使用两层(web 服务器和数据库)或三层(web服务器,应用服务器和数据库) 架构。然而随着业务的发展,我们的系统会变得越来越庞大,对性能的要求会更高,这个时候我们会把系统进行横向、纵向扩展。准确的说,原先的三层架构可能会变成n层架构,SOA(面向服务) 或者微服务架构成为现实。
系统的复杂度因此提升。系统越复杂,越难解决问题,例如系统失败或者性能问题。在三层架构中找到解决方案还不是太 难,仅仅需要分析3个组件比如web服务器,应用服务器和数据库,而服务器数量也不多。但是,如果问题发生在n层架构中, 就需要调查大量的组件和服务器。另一个问题是仅仅分析单个组件很难看到大局;当发生一个低可见度的问题时,系统复杂 度越高,就需要更长的时间来查找原因。最糟糕的是,某些情况下我们甚至可能无法查找出来。
为了解决这些问题,我们需要一个组件,它可以追踪到每个请求的完整调用链路,收集调用链路上每个服务的性能数据, 计算性能数据和比对性能指标,甚至在更远的未来能够再反馈到服务治理中,那么这就是分布式调用追踪的目标了。
APM工具
- Zipkin 是一个开源的分布式追踪系统。在微服务架构下,它用于帮助收集排查潜在问题的时序数据。它同时管理数据收集和数据查询。
- Jaeger 是Uber开发的一套分布式追踪系统支持opentracing协议和键-值日志API,以及用更为通用的有向无环图 (https://segmentfault.com/a/1190000011636957)
7、基础设施即代码 (Infrastructure As Code)
“基础设施即代码”是一种通过代码来定义计算和网络基础设施的方法,它可以应用于任何软件系统中。这样的代码放在代码版本控制系统中,具有可审查性、可重用性,并且符合测试惯例,还完全遵从持续交付的原则。 使用定义文件。如Ansible Playbook, Chef cookbook等。 一切版本化。所有的配置管理文件都用CVS工具如git管理起来。 让服务持续可用。
Ansible :一个配置管理和IT自动化工具
Terraform :一个 IT 基础架构自动化编排工具,它的口号是 “Write, Plan, and create Infrastructure as Code”, 基础架构即代码。
具体的说就是可以用代码来管理维护 IT 资源,比如针对 AWS,我们可以用它创建,修改,删除 S3 Bucket, Lambda, EC2 实例,Kinesis, VPC 等各种资源。并且在真正运行之前可以看到执行计划(即干运行-dryrun)。由于状态保存到文件中,因此能够离线方式查看资源情况 – 当然,前提是不要在 Terraform 之外对资源进行修改。
放两个链接: https://www.youtube.com/watch?v=wgzgVm7Sqlk&t=208s
https://opencredo.com/kubernetes-aws-terraform-ansible-1/