. 本文先从软件产业的现状、发展趋势及挑战,说明敏捷和DevOps必将成为业界主流的研发模式。接着介绍和阐述了敏捷和DevOps的关系,相关理念、价值和主要工程方法。最后重点介绍了某著名公司端到端DevOps的实施框架及其主要内容。
本文的目的,主要有三点:(1)了解软件产业发展趋势、挑战及软件研发模式演进方向。(2)理解敏捷、DevOps相关理念、价值和常用工程方法。(3)初步学握某著名公司端到端DevOps框架及其主要服务。
一、软件产业和交付模式的发展趋势
1、软件产业的发展趋势
重点的四个大字:云、大、物、智,即云计算、大数据、物联网、智能。
企业在数据化转型过程中,不断积累的数据,用于智能分析和精准控制,以提升企业的运行效率。举两个例子:(1)飞机引擎传感器每次飞行产生1TB的数据,可以根据这些数据,判断引擎的健康度。(2)给奶牛戴上项圈,读取奶牛的生物特征,可以及时发现奶牛发情期,可以及时配种,增加奶牛产量。
两个不同行业的例子,表明生产不同产品的企业,都可以通过数字化来获取商业利益。
企业要数字化转型,才能具备“创新和敏捷”的业务能力,才能应对技术、需求和商业模式的变化,这是所有行业的企业发展的必经之路。只是不同行业的数字化转型处于不同阶段,这里根据业界咨询公司的报告汇总了各行业数字化现状,互联网和电信运营商等信息服务提供商处于引领阶段,紧随其后的是金融/政府等社会服务单位;汽车等机电企业处于爆发阶段,如车联网和自动驾驶;其他企业刚好处于起步阶段。OTT是“Over The Top的缩写,即互联网公司越过运营商,发展基于开放互联网的各种视频及数据服务业务,强调服务与物理网络的无关性。
企业在数字化转型过程中,必将面临海量的数据,如何有效地提取有效数据分析和处理,是大家面临的一个重要课题,针对这个课题,唯一解决方案就是软件。 从中国软件行业的成长和发展趋势来看,数字化转型为软件行业孕育除了巨大的市场机遇,中国软件及信息技术服务业总产值将从201 6年的5万亿增长到2020年的8万亿,年增长13%以上。就业人员将达到900万人,软件出口超过680亿美元。
软件产业面临巨大的市场机遇,它的发展方向和趋势是服务化。
2、新形势下企业面临的挑战
软件服务化和云化后,企业面对的客户群体的差异化需求呈现出爆炸式增长。随着移动、社交、云计算、大数据、AI的快速发展和深度应用,颠覆式创新和跨界竞争不断加剧。对企业来说,既是机遇又是挑战,不管是颠覆别人还是被颠覆,企业都面临交付、协同、安全等多方面挑战、都要具备快速持续的创新和交付能力。
新形势下, 企业必须快速高效地交付价值产品,才能抢占蓝海,获取最佳的商业回报,其次,软件系统复杂度不断增加、跨地域高效协作和多环境部署也是企业需要解决的重要问题。软件服务化对可靠性和安全性也提出了更高的要求,特别是核心数据更是企业的重要资产,不容闪失。
MVP (最小可行产品)。
可以借用VUCA来归纳企业面临的挑战:
(1)Volatility (易变性)是变化的本质和动力,也是由变化驱使和催化产生的;
(2)Uncertainty (不确定性)缺少预见性缺乏对意外的预期和对事情的理解和意识;
(3)Complexity (复杂性)企业为各种力量, 各种因素,各种事情所困扰;
(4)Ambiguity (模糊性)对现实的模糊, 是误解的根源,各种条件和因果关系的混杂;
3、敏捷和devops逐渐成为主流交付模式
从传统组织部]的职责和目标也能发现敏捷和DevOps产生的根本原因,那就是价值
交付过程中的混乱之墙。
首先,客户最关心的是获取价值,并且成本越低越好。业务部门希望能够满足客户的
诉求,能够拿单来获取更大的营收。开发的目标就是能够尽快尽量多地交付新的功能或者特性,并且在现网上线,从而体现自己的价值。对运维部门来说,最大的目标就是保障应用运行稳定,希望越少变化越好,可以看出,各部门不仅存在如何保证价值有效传递的问题,也要解决目标和价值存在差异,如何有效协同的问题,敏捷和DevOps就是为解决这种混乱之墙而产生的。
敏捷主要解决客户、业务部门、开发部门之间的混乱之墙。DevOps进-一步延伸, 解决了开发部门和运维部门之间的混乱之墙。
二、新兴软件技术及交付模式简介
1、云原生简介
云原生是指在云环境下构建、运行、管理软件的新的系统实践范式,充分利用云基础设施与平台服务,适应云环境,具备(微)服务化、弹性伸缩、分布式、高可用、多租户、自动化等关键特征的架构实践,建立全功能团队、发展全栈工程师并高度协作的组织,采用DevOps研发模式、自动化工具,实现微服务持续交付,是支撑Cloud Native架构的最佳组织和工程实践。
云原生的三大特征:第一,容器化封装,以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护,在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。第二,动态管理,通过集中式的编排调度系统来动态地管理和调度。
第三,面向微服务,明确服务间的依赖,相互解耦。
第一基准代码,-份代码库对应多份部署, 所有部署的基准代码相同,但每份部署可 199
以使用不同的版本。
第二,依赖显示声明依赖关系,通过依赖清单确切的声明所有依赖项,这一-做法会统
一应用到生产和开发环境。
第三,配置在环境中存储配置、推荐,将应用的配置存储于环境变量中,环境变量02022
可以非常方便地在不同的部署间做修改,却不动一行代码。与配置文件不同,不小心把它们迁入代码库的概率微乎其微,与一些传统的解决配置问题的机制,比如ava的属性配置文件相比,环境变量、语言和统计无关。
第四,后端服务把后端服务当作附加资源,每个不同的后端服务是一 份资源,例如一个mysq|数据库是一个资源, 两个mysql数据库被当做两个不同的资源,云原生应用将这些数据库都视作附加资源,这些资源和他们附属的部署保持松耦合。
第五,构建发布运行云原生应用,需严格区分构建发布运行、这三个步骤。举例来说,直接修改处于运行状态的代码是非常不可取的做法,因为这些修改很难再同步回构建步骤。
2、微服务简介
单体架构的优点:部署简单,技术单一、用人成本低。
缺点:复杂性高、技术债务逐渐上升、部署速度逐渐变慢、扩展能力受限、阻碍技术创新、单体应用。
3、敏捷简介
敏捷开发有十二要素,主要说明两个:(1)最重要目标是,通过持续不断地及早交互有价值的产品,使客户满意;(2)可工作的软件,是进度的度量标准。
4、devops简介
DevOps它不仅仅体现在流程 上打通了软件开发的整个生命周期,它还包括以下五个
要素: CALMS。
首先是文化,DevOps与传统职能型团队不同,它的前提是建立一体化的全功能团队,打破开发(Dev)与技术运营(Ops)隔阂, 形成DevOps的协同合作的文化氛围。
第二是自动化,自动化一切可以自动化的,通过自动化的工具或脚本实现软件工程从
构建到运维过程的自动化流水线作业。
第三是精益,以精益的方式小步快跑,持续改善。
第四是度量,建立有效的监控与度量手段快速获得反馈,推动产品和团队的持续改进,测试驱动开发、增量式开发这些实践都是为了获得有效反馈并作用于下一次迭代周期中。
第五是分享,不同职能、不同产品之间经验分享能够促进DevOps的文化沉淀,促进产品迭代和更新。
DevOps是敏捷理念从开发领域向运维领域的延伸 。计划阶段:运维人员为开发人员提供需求,并制定发布计划。编码/构建/验证阶段,Scrum、 极限编程和精益生产,持续集成、自动化测试等。部署阶段:开发团队负责部署、监控部署过程,以及部署后的运行。
5、敏捷和devops简介
EXIN (国际信息科学考试学会)的DevOps Master白皮书,白皮书将DevOps诠释为如下四个部分:
(1)敏捷管理:包含计划、需求、设计、开发。
(2)持续交付:包括开发、部署、运营。
(3)T服务管理:包括运营、周期终止。
(4)精益管理:从计划到周期终止的全程。
从中我们可以看出,DevOps不是对敏捷的否定,而是融合了敏捷和精益的思想和方法,并在其基础上的进一步发展。
三、某著名公司devops项目
企业进行DevOps变革,离不开方法与框架的指导。
在业界Lean、Agile、 Kanban、 CI/CD、 DevOps等理念的基础上,结合某著名公司30年研发
经验与实践,某著名公司云DevCloud形成了HE2E DevOps实施框架,为企业提供一套可操作可落地的敏捷开发方法论;并在某著名公司云DevCloud工具链上进行承载。
HE2E DevOps框架以产品研发生命周期划分为四个大的阶段:规划设计,迭代开发,
持续测试,持续交付。
规划设计:基于对市场和行业的洞察,引用影响地图和用户故事地图进需求分析,基于Scrum和Kanban进行需求梳理以及迭代计划、评审、回顾等会议。
持续开发:服务设计与编码之后,进入到持续集成环节,代码进行本地或云端的构建,
代码进行自查和互检,并基于分支模型进行代码提交。
持续测试:在各级环节进行分层分级的测试验证,从开发环境的静态检查、单元测试,通过自动化部署到alphha/beta/gamma环境, 根据各级质量门禁进行质量检查。
持续交付:测试转生产之前,会在自用环境吃狗粮,再基于发布决策,进行灰度环境验证,通过的进入签发决策,进行全网的发布,随后持续进行运维监控,以及线上各类测试,通过运营及反馈进行完整的闭环。
某著名公司云DevCloud是一个端到端工具链服务,涵盖软件生命周期。
在需求与计划环节:
DevCloud支持Scrum和看板等2种项目流程;支持以思维导图,1图形化的方式辅助团队进行需求分析、分解、讨论;
提供软件全生命周期管理,包括需求规划、迭代交付、缺陷跟踪、wiki/文档协作、统
计回顾、实时分析等特性。
支持基于编排引擎的作业流定制,提供基于Widget技术的14种度量看板,此外,Wiki百科支持6种某公司优秀研发实践模板。
在开发环节,某著名公司云DevCloud提供代码开发、代码托管、代码检查、编译构建等服务。
基于CloudIDE的代码开发,c提供全云化的开发体验,云端资源一键式获取和配置;
代码托管,提供安全高效,提供基于Git的安全代码托管服务,支持基于特性分支的Code Review开发模式;提供海量代码模板,让开发工作始于80%。
代码检查,提供可协作的一站式深度代码检查服务,及时深度发现代码缺陷,持续看护代码质量。
编译构建,基于云端大规模并发加速,提供高速、低成本、配置简单的混合语言编译构建能力。