持续交付之应用标准化模型与实践

有标准化的自动化是平台,无标准化的自动化是工具!

标准化在多个场合的交流中,始终是大家关注的焦点,无非就是What/Why/How之类的问题。当然脱离标准化,自动化是否可以运行?答案不能否定,但这样的自动化成本和代价必须要更高。因为这样,意味着每一次应用的接入都需要重新Review之前的自动化实现。其实我们不妨可以想象一下:


我们提倡标准化的核心就是基于打破职能和产品的边界差异,实现规则的统一。我记得【持续交付:发布可靠软件的系统方法】中讲到反模式,都是破坏Dev/Test/Prod环境之间的一致性(Parity)。因此基于一个标准化的自动化持续交付过程是实现环境一致性的必要条件。由此我也想到Docker所讲的不可变基础设施,其实核心的目标也是讲如何基于不可变(Immutable)来确保环境一致性。殊途同归!


过去我在不同的公司也实现过标准化,但始终没有把他系统化和理论化的总结。借助这次平台落地的机会,我们对应用标准化进行系统化的整理,并付诸实践。

优维EasyOps总结的应用标准化模型叫EasyXY模型,模型大体思路如下:


其中横向为要标准化的实体,这个标准化的实体可以基于应用的某个OS内技术栈来进行梳理,比如说从操作系统到基础环境到中间件再到上层的应用,这是标准化的Y轴。然后在基于实体要进行的标准化属性进行识别,我们称之为X轴。最终形成如下的二维象限:


基于如上的标准化属性的划分和识别,同时需要建立相应的标准化规则,否则这些属性在使用过程中依然会混乱不堪。最终构建的规则如下:


这些规则非常重要,有些规则和Heroku的12factor是相对应的,比如说代码和配置、实体与数据隔离等规则等等。为什么要建立这样的规则?只有有效的隔离,方能做到环境的快速部署和切换。

其实从一个应用的代码包交付过程来说,无非就是其环境的交付、外部依赖的交付(运行时环境、公共库、容器等等)以及应用程序包的交付。形如:


这样的分解非常重要,实现应用交付过程的解耦,让上次的自动化过程任意的组合,实现弹性应用交付。

对于每一个层次,我们又详细的定义了其标准化的执行细则,就拿业务层的标准化来说,如下图:


接下来在系统层面上要实现应用的整个应用的标准化交付管理,核心就是基于这些资源的标准化管理。




在这个应用为中心的界面中,实现了其资源的管理、关联工具和流程的管理(动作管理)。另外我们还建议这个持续交付能力端不断往持续集成(Dev)和持续测试(Test)方向去走,打造真正的持续交付链。在每次持续构建完成之后,自动触发程序包(持续集成的后置任务)上传到持续部署流程中来,如下图:


基于标准化实现端到端的持续交付链之后,达到的收益非常明显。这套标准化和自动化平台落地之后,全环境部署效率提升224倍,应用部署升级效率提升120倍,关键是因为人为部署导致故障的产生大大降低,这个数据和2015年DevOps Report给出来的数据是类似的【效率提高200倍,故障恢复效率提升168倍】,原文如下:

High-performing IT organizations experience 60 times fewer failures and recover from failure 168 times faster than their lower-performing peers. They also deploy 30 times more frequently with 200 times shorter lead times。

本篇来源于优维EasyOps平台在一个实际客户落地实施后的经验总结。


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
满足使用者对美好生活的向往,构筑城市园区运营数字支座,实现“跨层级、跨系统、 跨部门、跨业务”的协同管理和服务,强化系统集成、整体提升,推动园区“经济、生活、 治理”全面数字化转型,推动“产、居、商、服、管” 协同、互为促进,整体推进园区与政府、社会等各类信息系统的业务直通、数据联动。着力解决“数字鸿沟”问题,倡导各类公共服务“进入园区无障碍”,打造可持续发展的园区发展理念。 在园区的智慧化建设过程中,围绕“产、居、商、服、管” ,致力于打造“五位一体”的智慧园区,即泛在感知智能园 区、科技赋能宜产园区、高效睿智精治园区、绿色节能生态园区、便捷创新亲民园区;实现对园区生产、生活、生态等方 面的精细化、智能化、动态化管理的智慧体系。 面向各种场景应用而打造的具备全方位数字能力的园区公共基础,面向重点场景应用而打造的园区集成场景基础,以及“一网通办、一网统管”接入基础三部分,为C端、G端、B端用户提供数字化服务。实 现南向连接标准化,北向应用服务化。 以AI、物联网、云计算、大数据等技术为基础,通过各种物联神经元节点的布设,以及基于数字孪生 模型的智能园区数字服务平台系统的建设,满足社区智能化应用的需求。 智能园区数字服务平台,实现AI、大数据、视频云、物联网、GIS等新ICT能力封装。 根据标杆项目成功实践沉淀园区业务资产、数据资产和集成资产,支持园区基线场景应用,包括:智 能运营中心、综合安防、便捷通行、资产管理、设施管理、能效管理、用户个性化定制服务等。 提供应用使能、集成使能、数据使能、开发使能等二次开发和集成交付能力,支持基线场景外的应用 定制。
 《.NET最佳实践》是.NET领域的集大成之作和公认经典。书中总结了大量.NET开发人员公认的最佳实践,并有针对性地阐明了如何恰当地在个人、小组、组织和行业中应用这些最佳实践。书中的最佳实践涵盖.NET开发的方方面面,从基础技术到核心技术,从开发方法到开发流程,从开发工具到团队协作,等等。所有最佳实践都辅之以实际的项目案例,并对案例代码进行了深入分析,实践性和可操作性极强。   《.NET最佳实践》可分为四个部分。第一部分(第1~5章)着重教授你如何选择和发现这些实践,如何提升团结度,如何量化这些实践等。第二部分(第6~9章)专注于开发人员个人的实践。第6章涵盖.NET规章制度标准和指南,识别并避免“代码异味”的技巧。第7章以非常规的方式来重新审视C#语言,带给你全新体验。第8章分享了多个符合高效开发原则的测试代码改进方法。第9章介绍生成自动化,以消除易错步骤,便于生成和部署。第三部分(第10~12章)重点介绍支持的工具、产品和技术。第10章介绍持续集成的流程和步骤,同时分析持续集成可利用的产品和工具。第11章推荐并分析诸多实用的代码分析(静态和动态)的工具、技术和方法。第12章综合介绍多种商业的及开源的测试框架和工具。第四部分(第13章)告诉你如何说服对采用最佳实践存在反感和偏见的组织和个人。本书还附有评估、跟踪最佳实践的记分卡。 译者序 前言 第1章 冷静待之 1.1 实践选择 1.1.1 可行性 1.1.2 认可度 1.1.3 价值 1.1.4 原型 1.2 关注需要改善的目标领域 1.2.1 产品交付 1.2.2 软件质量 1.2.3 团队关系 1.3 整体改善 1.3.1 均衡 1.3.2 面貌一新 1.3.3 可持续性 1.4 小结 第2章 .NET实践领域 2.1 从内部挖掘 2.1.1 技术债 2.1.2 缺陷跟踪系统 2.1.3 反思分析 2.1.4 前瞻性分析 2.2 应用程序生命周期管理 2.3 设计模式和开发指南 2.3.1 .NET设计规范 2.3.2 微软的模式和实践小组 2.3.3 显示界面层设计模式 2.3.4 对象-对象映射 2.3.5 依赖注入 2.4 研究和开发 2.4.1 自动化测试生成工具 2.4.2 契约式编码 2.5 微软安全开发生命周期 2.6 小结 第3章 实现预期目标 3.1 成功要素 3.1.1 项目启动阶段 3.1.2 超出范围 3.1.3 干扰和分心 3.1.4 学习与工作之间的平衡 3.2 共识 3.2.1 线框图 3.2.2 文档化架构 3.2.3 报表模型 3.2.4 细节化示例 3.2.5 创建原型 3.3 预期目标 3.3.1 交付 3.3.2 实际成果 3.3.3 趋势 3.4 小结 第4章 量化价值 4.1 价值 4.1.1 财务回报 4.1.2 提高可控性 4.1.3 提高质量品质 4.1.4 更加高效 4.2 数据来源 4.2.1 定量数据 4.2.2 定性数据 4.2.3 业界证据 4.3 小结 第5章 战略 5.1 认知 5.1.1 头脑风暴 5.1.2 规划 5.1.3 监控 5.1.4 沟通 5.2 个体过程 5.2.1 卓越的承诺 5.2.2 良性的纪律 5.2.3 效力和坚持 5.3 杠杆 5.3.1 自动化 5.3.2 警报系统 5.3.3 经验和专业知识 5.4 小结 第6章 .NET的规章制度 6.1 编码标准和指南 6.1.1 来源 6.1.2 异常 6.1.3 disposable模式 6.1.4 其他事项 6.2 代码异味 6.2.1 注释 6.2.2 过于复杂 6.2.3 未用到的、无法到达的和无效的代码 6.3 小结 第7章 强大的C#构造 7.1 扩展方法 7.2 隐式类型的局部变量 7.3 可以为null的类型 7.4 null合并运算符 7.5 可选参数 7.6 泛型 7.7 LINQ 7.8 小结 第8章 自动测试 8.1 案例研究 8.2 棕色地带的应用程序 8.3 绿色地带的应用程序 8.4 自动测试基础 8.5 测试代码的可维护性 8.5.1 命名约定 8.5.2 测试方法主体 8.6 单元测试 8.6.1 边界分析 8.6.2 无效参数 8.6.3 无效的前提条件 8.7 伪造、存根和模拟 8.7.1 隔离被测试代码 8.7.2 测试依赖交互 8.8 表面测试 8.9 自动集成测试 8.10 数据库注意事项 8.11 小结 第9章 生成自动化 9.1 生成工具 9.2 MSBuild基础 9.2.1 任务和目标 9.2.2 PropertyGroup和ItemGroup 9.2.3 基本任务 9.3 日志 9.4 参数和变量 9.5 库和扩展 9.6 导入和包含 9.7 内联任务 9.8 常见任务 9.8.1 日期和时间 9.8.2 程序集信息 9.8.3 XML的Peek和Poke 9.8.4 zip存档 9.9 自动部署 9.9.1 生成一次,部署多次 9.9.2 打包工具 9.9.3 部署工具 9.10 小结 第10章 持续集成 10.1 案例研究 10.2 CI服务器 10.2.1 CruiseControl.NET 10.2.2 Jenkins 10.2.3 TeamCity 10.2.4 Team Foundation Server 10.3 CI生命周期 10.3.1 重新生成 10.3.2 单元测试 10.3.3 分析 10.3.4 打包 10.3.5 部署 10.3.6 稳定性测试 10.3.7 生成报告 10.4 小结 第11章 代码分析 11.1 案例研究 11.2 静态分析 11.2.1 程序集分析 11.2.2 源代码分析 11.2.3 架构和设计 11.2.4 代码度量值 11.2.5 质量保证指标 11.3 动态分析 11.3.1 代码覆盖率 11.3.2 性能分析 11.3.3 查询分析 11.3.4 日志 11.4 小结 第12章 测试框架 12.1 单元测试框架 12.2 测试运行器 12.2.1 NUnit的GUI和控制台运行器 12.2.2 ReSharper测试运行器 12.2.3 Visual Studio测试运行器 12.2.4 Gallio测试运行器 12.2.5 xUnit.net测试运行器 12.3 xUnit测试模式 12.3.1 标识测试方法 12.3.2 标识测试类和夹具 12.3.3 断言 12.4 模拟对象框架 12.4.1 使用Rhino Mocks动态生成伪对象 12.4.2 使用Moles进行隔离测试 12.5 数据库测试框架 12.6 用户界面测试框架 12.6.1 Web应用程序测试框架 12.6.2 Windows窗体和其他用户界面测试框架 12.7 验收测试框架 12.7.1 测试规范和行为 12.7.2 业务逻辑验收测试 12.8 小结 第13章 反感和偏见 13.1 团体利益偏见 13.2 玫瑰色回顾 13.3 团体与个人的评价 13.4 维持现状和辩解机制 13.5 优势错觉 13.6 达克效应 13.7 鸵鸟效应 13.8 赌徒谬误 13.9 歧义效应 13.10 集中效应 13.11 双曲贴现 13.12 常态偏见 13.13 小结 附录A 参考资源 附录B 记分卡

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值