🌻

软件交付的基本认识

Created
Dec 4, 2022 01:19 PM
Tags
 
我们使用术语 “软件交付” 来表示开发人员完成新功能的开发,并部署到生产环境。
 
在我年轻的时候,软件交付可能需要几个月甚至上年。软件开发的伟大进步之一就是一直在缩短这个时间,现在甚至缩短到了几分钟。这意味着产品功能可以更快地产生价值,这不仅提高了软件研发的投资回报率,也为用户快速提供反馈来适应未来发展。
 
有许多举措促成了这一变化。
 
  1.  敏捷软件开发的思维方式, 已经证明了短周期时间和快速反馈的可能性。
  1. 极限编程实践和持续集成鼓励开发团队的所有成员每天集成他们的工作,而不是孤立地开发功能,将部署工作推迟数天或数周。
  1. DevOps运动鼓励软件开发人员、运营人员和其他人一起参与交付,促进协同 - 避免增加延迟的交接和脆弱性。
  1. 基础设设即代码在云时代提供了快速部署和配置新服务器的能力。
  1. 将这一切结合在一起就是持续交付的做法:始终保持软件产品处于可发布状态,允许快速发布功能并快速对任何故障做出响应。
 
软件交付的实践
 
  1. 持续集成
  1. DevOps 文化
  1. 持续交付
  1. 持续验证
  1. 部署流水线
  1. 测试右移 - 生产环境测试
 
为了达到更有效和快速的持续交付目标,很多企业和团队已经总结出了很好的经验,形成了一定模式,可以被其他人复用。
 
  1. 功能开关
  1. 源代码分支管理模型
  1. 蓝绿部署
  1. 分支抽象
  1. 交付,展示,反馈
  1. 合成监控
  1. 可观测性
  1. 金丝雀发布
  1. 频繁发布
  1. 灰度发布
  1. Keystone Interface
  1. 增量迁移
  1. 可重现的编译
  1. 灾难故障转移
 
在云原生时代,也有不少值得去探索的软件交付方式。
 
  1. 基础设施即代码
  1. 配置同步
  1. 不可变服务器
  1. 云计算
  1. Snowflake 集群
  1. Phoenix 服务器