金丝雀发布的本质

金丝雀发布的本质,第1张

“人类生存于一个虚拟的、数字化的生存活动空间,在这个空间里人们应用数字技术从事信息传播、交流、学习、工作等活动,这便是数字化生存。”--尼葛洛庞帝!

21年前,尼葛洛庞帝在写下《数字化生存》一书时,谁都不会想到,书中所描绘的未来生活方式与今天如此相似,预言已然成真。

如今,数字化转型已经成为席卷全球的新趋势,人人都在讨论数字化转型,因为数字化转型并非是一种选择,而是唯一出路。

据Gartner的预测,到2017年25%的公司将因数字化能力不足而丢失业务。IDC的预测,到2027年,标准普尔500公司中将有75%被顶替出局。普华永道在调研了全球350位CEO后发现,80%的CEO认为企业数字化转型是第一考虑要务。

当年诺基亚在最风光时期市值高达2540亿美元,让人大跌眼镜的是,最终却被微软以70亿美元左右的价格收购。究其原因,只因为这个世界在变,它却没有紧跟数字化转型的脚步。

显然,企业必须确保比竞争对手更加敏捷、快速地响应迅速变化的数字化市场,才能赶上或者超过竞争对手,才可以在新时代下的市场中称雄。如果企业忽视数字化的作用,那么它将不可避免的陷入被淘汰的命运。

敏捷和DevOps是数字化转型的关键

什么才是“数字化转型”的正确姿势CA Technologies的一项最新全球调查结果显示,89%的中国大陆受访企业同意敏捷及DevOps方案是致胜数字化转型的关键。

当前,数字化大时代下企业面对的商业环境瞬息万变,各种新技术突飞猛进的同时,新业务形态越来越复杂、需求变化越来越快、软件规模越来越大、交付周期越来越短、开发和维护成本越来越高,产品交付的风险急剧增加,传统研发模式无法适应快速变化的市场需求。

为了应对这些挑战,业界软件开发模式经历了持续的改进和变迁,从20世纪60年代作坊式开发,到80年代过程控制模型,到2001年敏捷、DevOps模式探索。

敏捷开发就是最适合应对转变的最优软件方法论,并被微软、华为、BAT等公司的开发人员广泛使用。而整合企业IT部门的软件开发与运维,实现开发与运维的一体化DevOps,则变得比以往任何时候都来得重要。

敏捷和DevOps落地需要成熟工具的帮助

虽然敏捷和DevOps是近几年来软件开发领域最火的词,但网上搜索,其实真正成功的案例并不多。显然大多数企业还徘徊在外,不得其门而入。

总结各种失败的原因,要推动敏捷和DevOps的落地生根,不仅要有相融的企业文化、领导支持、客户配合,还需要一系列成熟的工具平台来帮助企业的转变,否则数字化转型就只能是空中楼阁。

目前,网上敏捷和DevOps工具非常多,但大都比较分散单一,缺乏统一的一站式解决方案。不过,好在去年开始,国内企业终于不再缺席这个领域了。华为软件开发云(DevCloud)>

众所周知,作为排名第129位的世界500强公司,华为在研发管理方面非常领先,而DevCloud正是基于华为近30年的研发实践,结合敏捷、精益、DevOps等先进研发理念,面向中小软件企业、软件外包企业、双创企业、互联网企业、高校和广大的软件开发者提供的一站式云端DevOps平台。这套工具可以大幅度提升软件研发的效率:以前华为每个月1亿行代码的编译时间,由原来的25分钟缩短到75分钟,版本级的编译速度也由94分钟缩短到31分钟。

从产品层面来看,软件开发云提供了“项目管理-配置管理-代码检查-编译构建-部署-测试-发布”等全生命周期服务,不仅能帮助企业实现一次开发、快速部署、快速迭代、快速反馈、持续开发集成与发布、多版本共享等数字化转型需要的敏捷开发能力,还能让企业获得开发与运维的高效融合,从而实现真正的开发与运维一体化,即DevOps,是真正的一站式服务。

DevCloud上敏捷和Devops特性的具体表现

说了这么多,DevCloud到底提供了哪些手段来保证企业能够实现敏捷/Devops开发这是个关键性的问题,而回答这个问题需要从华为敏捷项目管理实践说起。

(注:PD,是Project Director的缩写,项目负责人)

通常我们熟知的敏捷开发流程可划分为准备、计划、开发、反馈四个阶段。

一、准备阶段(可选敏捷模式):使用软件开发云为敏捷项目管理工具,项目的开发流程可选创建“Scrum流程”项目或“精简流程”项目两种。精简流程项目是比敏捷模式更简洁的模式,适合小、微团队和个体开发者。

二、规划阶段(Story划分):Story划分是敏捷开发的标志之一,一个需求的接收,就是从Story的划分开始。Story划分并不是告诉开发人员一个需求怎么做更多的是告诉开发人员一个需求为什么要做需要做成什么样实现什么样的价值。

软件开发云支持“Story” 创建,“项目规划”下创建的“Story”会同步到“Backlog”的需求列表中。在每个Spring启动前,按照优先级排序的Story制定迭代计划。

三、开发阶段(代码质检、自动化持续交付):软件开发云可在线进行多种语言的代码静态检查、代码安全检查(如未授信访问)、编码问题(如空指针引用)、圈复杂度、重复率、编程风格,只有在问题清零才允许构建出包。

与传统敏捷模式强调持续构建CI不同的是,融合了DevOps理念的新型敏捷模式,通过云端自动化的持续交付流水线,实现持续构建、持续测试(功能、接口、性能、可靠性等,据说能实现100%自动化)、持续部署(包括脚本自动下发、比对、蓝绿部署)、持续发布(灰度发布)、持续反馈,可将Ops端手工 *** 作的时间减少80%,全功能团队可以聚焦于业务分析、开发交付及运营上,显著提升效率和产品质量。

代码提交时按照规范备注Story ID,即可将代码关联到对应需求上。创建测试用例和缺陷时,也需关联需求,这样就实现了“需求-代码-用例-缺陷”的双向追溯。

四、反馈阶段(质量回溯):通常反馈阶段主要开展验收和回顾活动。这里需要重点提到质量回溯会议,对应于敏捷迭代回顾会议,是华为持续改进的实践精华。

质量回溯,这个词,在华为是一个高频的词汇,华为为了持续改进质量管理体系、提高客户的满意度,在公司内部提出了质量回溯的概念。

质量回溯重点在于分析问题根因,并识别出管理、流程、技术、工具上可落地的改进点。这些改进点每一个都必须符合Smart原则,是可落地、可执行的,不能出现大话空话套话。而且这些问题都要求最晚在下一个迭代中,执行落地,以避免问题再次出现。

小结

总的来说,企业数字化转型,关键就在于敏捷和DevOps的落地。在工具平台选择上,相比企业基于开源工具或者商业工具建立工具平台,不仅成本高昂,可靠性难以保障,还存在安全的隐患。DevCloud对中小企业而言,显然会是一种更好的选择。

不过,虽然软件开发云是华为基于本身长期实践的成功结晶,是神器级工具平台。但是,并不是使用了平台,就可以期待奇迹的发生,它毕竟只是个工具。

敏捷和DevOps的落地是需要企业做出真正的组织变革。否则敏捷和DevOps也就无法实现。

据悉,未来几年,华为将重点推进软件开发云3个“1”工程落地,3个“1”指的是服务100万个软件开发者、服务于10万家软件企业来使用软件开发云、服务1000家院校、培训机构。

就华为实力及影响力而言,这显然并非太困难的事儿。也许未来某一天,华为软件开发云真会成为国内企业级主流软件开发工具。

配置文件是用来存储相关软件的一些信息,如初始化的信息,初始路径和帐号等等,方便程序的移植。

硬编码型

(用开发语言来说就是hard code)即:将软件中配置的数据直接写死在代码中,例如:路径,IP,等待时间等。这种方式不利于数据的修改,但是另一方面来说如果某些数据比较重要且固定,用硬编码的方式可以保护这类的数据不被修改。

文件类型

也就是目前单体应用架构中常用的方式,将源代码与配置文件分开管理,程序在启动时读取指定目录下的文件内容来加载配置信息。这种方式十分有利于制品的晋升,即程序在不同环境中运行时,无须修改代码,只需变更配置文件即可,例如在测试环境需要连接19216811:3306数据库,而在生产环境运行时,需要连接19216812:3306数据库,这时只需要变更配置文件即可。

数据库类型

我们一般会将非文本形式的配置的信息存放在数据库中,这种配置一般为功能和业务上的配置,可以动态变更,例如功能开关(新功能上线后,先隐藏起来,等待可以发布时,修改数据库中的数据,即可将功能页面开放出来)。

远程调用型

即所有的配置集中管理起来,所有服务启动或运行时通过接口加载配置,也就是我们所熟知的配置中心的方式。

单次加载类型

程序启动时读取的初始化配置,一般不会变化,例如连接数据库的凭据信息等。

动态加载类型

程序运行时,根据业务需求变更的配置信息,例如功能开关,日志级别等。

随着数字化转型的发展,线下业务逐渐线上化,应用数量与日俱增,应用架构也趋于多样化和复杂化,这对于应用的配置也提出了越来越高的要求。

最初配置信息硬编码在代码中,与代码一起放在源代码仓库中;为了安全性与管理的方便,将配置以文件的形式从代码中分离出来管理,有的方式是将配置文件分发到目标机器的目录上,程序启动时直接读取。有的方式是CI打包时,在不同环境晋升时将配置文件打入程序包内,程序解压运行时从相对目录读取配置。

这些方式的特点是,配置变化慢,配置变更后需要重启服务,所以在应用数量少,架构简单的单体应用阶段,是完全可以满足业务的需求的。但是随着微服务阶段,尤其是容器化应用的到来,服务节点数量指数级增长,按照上述的方式来管理配置就无法满足业务的需求了,这时候,配置中心应运而生。

简单的来说就是将配置信息集中管控,当然随着业务的发展和应用架构的复杂度,对于配置中心的功能要求也非常的多,但总的来讲至少需要满足下面几个需求:

高可用

所有的配置信息集中管理,配置中心的重要性不言而喻。

实时性:

业务的需求需要配置的更新尽快通知到客户端,比如说蓝绿发布,主备切换等场景。

多环境多集群管理:

配置文件的主要场景还是在不同环境下支持同一个程序的运行,所以针对于环境的管理需要保证隔离与统一管理。很多应用还需要多集群部署,所以对于多集群的管理也是十分必要的。

治理:

配置的版本控制,配置的审计,配置权限的控制,配置的灰度发布等。

有人可能会问:热加载也是配置中心非常常用的功能场景呀,其实配置的热加载取决于应用是否支持配置的热加载,如果这个应用在将配置加载在内存后,除了重启进程,没有任何方法能变更内存里的配置,那么对于配置中心来说它也无能为力,配置中心核心的职责是快速将配置的变更通知到目标客户端。

在应用架构日益复杂的时代,对于配置中心需求会越来越旺盛,一个功能强大,稳定的配置中心将会是企业必需的系统。嘉为蓝鲸应用配置中心是一款优秀的配置管理产品,基于CMDB进行扩展,面向应用运维,能以服务树的形式展示应用拓扑,纳管应用相关联的信息,提供应用配置管理、程序包管理、配置文件管理、SQL文件管理、进程管理等功能,并可对接第三方制品库。应用配置中心为上层的应用运维场景提供了配置数据,可以满足应用发布、应用监控、智能运维等各种运维场景对数据消费的需求,是应用运维自动化的基础。

嘉为蓝鲸将持续不断发力、快速迭代,为用户应用和业务运维自动化持续提供强大动能。如果您的企业有相应需求,欢迎联系嘉为蓝鲸!

以上就是关于金丝雀发布的本质全部的内容,包括:金丝雀发布的本质、Service Mesh 浅析:从概念、产品到实践、为什么说DevCloud是敏捷和DevOps落地神器等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9835141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存