【云驻共创】DevOps全栈实践训练营——六星教育专场 从码农到码神,你只差一个DevOps提升技能
一、DevOps 简介
1.1 什么是 DevOps
DevOps(Development 和 Operations):是一组过程、方法与系统的名称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
它是一种重视“软件开发人员(Dev)“和”IT 运维技术员(Ops)“之间沟通合作的文化、运动或惯例。透过自动化”软件交付“和”架构变更“的流程,来使得构建、测试、发布软件能够更加快捷、频繁和可靠。它的出现是由于软件行业日益清晰地认识到:为了按时交付产品和服务,开发和运维工作必须紧密合作。
1.2 DevOps 来源
DevOps 基于精益、约束理论、丰田生产系统、柔性工程、学习型组织、安全文化、人员优化因素等知识体系,并参考了高信任管理文化、服务型领导、组织变动管理方法论。
所有这些最可信的原则综合地应用到 IT 价值流中,产生出 DevOps 这样的结果。
DevOps 涵盖了测试、编译代码、构建、部署、运维,再通过和客户的沟通得到反馈,监控,最后回到做计划、编码。上述的整个过程中,是一个不断循环的过程。
1.3 关键得方法论
1.3.1 精益生产方式
精益生产方式,也就是我们常说的丰田生产系统,来自于生产制造企业的思想。它的背景是,二战后,美国制造业逐渐成为品质保障的标志,而不久后日本制造大量的进入到了美国市场,包括汽车和电子产品等。这个时候,比较美国质量和日本质量的优劣成为了热门话题。相比美国制造,日本制造主要是物美价廉、品种多样、交货期也比较短。物美价廉就意味着可以用更低的成本成产同等质量的产品。对于制造业来说,控制成本至关重要。品种多样就意味着,可以快速的响应市场的需求,能够定制化的满足各类需求。对于传统制造业来说,大批量才能降低成本,但是大批量就意味着不能同时做到品种多样和满足个性化的需求。交货期短意味着,可以给经销商更靠谱的承诺,因为通常只有临近销售日期销售商才能给出给更准确的销售额,因此销售商总是希望交货期越短越好。经过美国学者的研究,得出一个结论日本制造企业使用了精益的生产方式。
1.3.2 价值流
价值流是将用户需求转变为可以工作的软件,并提供给用户使用,当用户提出一个需求,多久可以上线,对于竞争对手的 APP 上线一个大受欢迎的功能上线,我们自己的 APP 多久能上线类似的功能。
精益中列出了很多浪费的情形,其中,质量问题导致返工或者等待是两个最容易被忽视的却又最值得被关注的浪费。以软件交付为例,比如没有做好测试,系统上线有缺陷,导致紧急修复缺陷,不仅会导致企业声誉受损,还会导致客户流失,其实者也是一种浪费。在开发过程中,编译构建速度太慢,开发人员不得不等待编译构建完成才能继续工作,其实这也是一种浪费。测试人员在开发人员手工打版之前的等待也是一种浪费。
1.3.3约束理论(ToC)
软件开发过程中遇到问题的时候,可以时常看一看,也许可以帮我们解决一些问题。
- 人都是好的。
- 所有冲突都是可以被解决的。
- 无论问题最初看起来做么复杂,其实是非常简单的。
- 问题总是可以被大幅度改善,即使天空也不是极限。
- 每个人都可以拥有完整的人生。
- 总是可以找到双赢的解决方案。
1.3.4 敏捷(Agile)
我们一直在实践中探寻更好的软件开发方法,身体力行,同时也帮助他人。由此我们建立了如下价值观:
- 个体和互动 高于 流程和工具
- 工作的软件 高于 详尽的文档
- 客户合作 高于 合同谈判
- 响应变化 高于 遵循计划
也就是说,尽管右项有其价值,我们更重视左项的价值。
在软件开发的敏捷管理当中,有一些实践动作,比如,组件,跨职能团队,集中办公,看板,每日站会,迭代计划会议,迭代回顾会议。燃尽图,用户故事,同行评估和同行评审。
Backlog:待办任务项集合。
Ready(cool,warm,hot):将任务按照紧急重要性进行分级。
Doing:根据情况,将正在做的任务转移到该区域。
Done:当任务完成就将任务从 Doing 的区域放到 Done 的区域。
任务在看板上流动起来,这样就可以直观的看到任务的完成情况。
每日站会,每天面对面的沟通,昨天完成的任务,即将要做的任务,每个人要总结自己的问题和风险,尽可能的简短发言,控制在一分半钟以内。
二、DevOps 实践
2.1 软件研发模式
回顾软件行业的研发模式,可以发现大致有三个阶段:瀑布式开发、敏捷开发、DevOps。
下图通过四种颜色,把整个软件开发过程中比较重要的四个步骤(设计、开发、测试、部署)标出来。
瀑布式是一部分设计,然后开发时间集中在一个大的整块的时间里,再进行一次测试和一次部署。在敏捷开发过程中,也是一部分设计,再经过多次的开发测试,最终进行一次部署。DevOps 的过程中也是一部分设计,然后不断的进行开发测试部署,也是一种小步快跑的方式,这样可以更早的发现,开发测试部署中间产生的问题,尽早的发现并解决问题。
2.2 DevOps 好处
可以高效交付,这也正好是它的初衷。改善公司组织文化、提高员工的参与感。快速部署同时提高 IT 稳定性。
2.3 实现 DevOps 需要什么
硬性要求:工具上的准备。
软性要求:文化和人。公司文化支持,人更愿意突破自己。
代码管理 |
GitHub、GitLab、BitBucket、SubVersion |
构建工具 |
Ant、Gradle、maven |
自动部署 |
Capistrano、CodeDeploy |
持续集成 |
Bamboo、Hudson、Jenkins |
容器 |
Docker、LXC |
服务注册与发现 |
Zookeeper、etcd、Consul |
日志管理 |
ELK、Logentries |
三、DevCloud 介绍
3.1 功能介绍
全生命周期的一站式软件开发服务,开发更加简单高效,质量提升,效率倍增。
3.2 项目管理 ProjectMan
为软件开发团队提供敏捷高效的开发协作服务,包含项目空间、Scrum 需求模型、敏捷迭代、看板协作、需求管理、缺陷跟踪、文档管理、知识协同、在线协作、仪表盘自定制报表等功能。
Epic:一个大的目标,比如要做一个什么样的系统。
Feature:系统下面大的模块。
Story:模块下具体的功能。
Task:基于 Story 更细分的,可以完成的任务。
Bug:测试出来的功能缺陷。
3.3 代码托管 CodeHub
源自华为迁移代码管理经验,基于 Git,提供企业级安全可信、端到端可追溯的代码托管服务。
也提供了根据不同开发语言,创建不同的代码仓库的模板。
3.4 代码检查
多语言代码静态检查和安全检查,覆盖风格、质量、安全的 5000+ 检查规则,并提供缺陷改进建议,有效管控代码质量。
执行完代码检查,可以根据检查出的问题,给出一些修改建议。
3.5 编译构建 CloudBuild
提供高速、低成本、配置简单的混合语言构建能力,帮助客户缩短构建时间,提升构建效率。
支持主流的源代码管理平台作为源代码。
3.5.1 编辑编译构建
根据需要,在建立空白模板之后,选择需要的构建步骤。
选中需要构建的项目,在右侧列表选择需要的操作,比如,开始构建。
查看构建的时候,可以看到每个构建步骤花费的时间,还可以看到具体构建的日志。
3.6 部署 CloudDeploy
多形态、多技术栈的专业应用程序部署服务,支持并行部署和流水线无缝集成,支持多种类部署类型和多种技术栈,实现部署环境标准化,部署过程自动化。
编辑部署任务,选择已经执行过构建的任务。
执行部署任务,也可以查看部署任务的花费时间,以及详细的日志输出。
3.7 流水线 CloudPipeline
灵活编排调度,分层分级,串并行,MR 触发,质量门禁,人工卡点,大幅提升软件生产的自动化。
3.7.1 创建流水线
通过空白流水线建立新的流水线,流线中选择不同的任务。
3.7.2 配置流水线
在流水线的阶段配置中,配置是自动执行还是手动执行,是串行还是并行,以及知否总是运行。也可以根据质量门禁增加限制条件。
3.7.3 执行流水线
执行流水线,可以查看流水线中执行花费的时间
3.7.4 流水线日志
执行流水线日志
经过这一套流水线后,变更的代码后,我们只需要点击一下按钮,执行流水线,就可以得到变更代码之后的结果,代码有没有问题,编译构建有没有问题,测试用例是否通过,部署是否成功。不需要人工的再去每一个步骤里面执行一遍。
四、总结
DevOps 不仅需要团队有 DevOps 文化或者 DevOps 文化的布道者,还需要有相对完备的 DevOps 工具链,这样才能把 DevOps 推行起来。
本文参与华为云社区【内容共创】活动第20期。
https://bbs.huaweicloud.com/blogs/374925
任务17:DevOps 全 栈实践训练营——六星教育专场 从码农到码神,你只差一个DevOps提升技能!
- 点赞
- 收藏
- 关注作者
评论(0)