软件交付指导
我使用术语“软件交付”来表示从开发人员完成一个新特性的工作到该特性在生产中使用的步骤。在我年轻的时候,这样做的时间通常以月为单位。在过去的二十年里,软件开发的一个巨大进步就是缩短这个时间,华体会登录网址有时缩短到几分钟。这意味着功能被用来更快地产生价值,既增加了构建功能的投资回报,又为未来的开发提供了快速的反馈。
有许多举措促成了这一变化。的心态敏捷软件开发华体会登录网址他提出了短周期和快速反馈的理由。的极限编程的做法持续集成鼓励开发团队的所有成员每天集成他们的工作,而不是花几天或几周的时间单独开发功能。的Devops移动鼓励软件开发人员、操作人员和参与交付的所有人一起工作——避免增加延迟和脆弱性的交接。Infrastructure-As-Code利用我们的云时代能力快速部署和提供新服务器。把这些组合在一起就是实践持续交付:它总是使软件产品处于可发布的状态,允许特性的快速发布和对任何故障的快速响应。
www.rodiba.com上关于软件交付和devops的材料指南。
持续集成
持续集成是一种软件开发实践,其中团队成员经常集成他们的工华体会登录网址作,通常每个人至少每天集成—导致每天进行多次集成。每个集成都通过自动构建(包括测试)进行验证,以尽可能快地检测集成错误。许多团队发现这种方法大大减少了集成问题,并允许团队更快地开发内聚软件。本文是持续集成的快速概述,总结了该技术及其当前的使用。
开发运维文化
敏捷软件开发华体会登录网址打破了需求分析、测试和开发之间的一些竖井。部署、操作和维护是其他与软件开发过程的其他部分类似分离的活动。华体会登录网址DevOps运动旨在消除这些竖井,鼓励开发和运营之间的协作。
持续交付
持续交付是一种软件开发规程,在这种规程中,您构建的华体会登录网址软件可以在任何时候发布到生产中。
当你在进行连续交付时:
- 您的软件在整个生命周期中都是可部署的
- 您的团队优先考虑保持软件的可部署性,而不是开发新特性
- 任何人都可以在任何人对其系统进行更改时,快速地获得关于其系统的生产准备情况的自动反馈
- 您可以按需将软件的任何版本部署到任何环境
持续集成认证
持续集成是软件开发中的一种流行技术。华体会登录网址在会议上,许多开发人员谈论他们如何使用它,持续集成工具在大多数开发组织中是常见的。但我们都知道,任何像样的技术都需要一个认证项目——幸运的是,认证项目确实存在。它是由持续交付和devops领域最重要的专家之一开发的,以管理速度非常快而闻名,但其结果非常有见地。尽管它相当成熟,但它并没有像它应该的那样广为人知,所以作为一名技术爱好者,我认为与我的读者分享这个认证程序对我来说很重要。您准备好获得持续集成认证了吗?你将如何面对考试将揭示的令人震惊的真相?
部署管道
自动化构建和测试环境的挑战之一是您希望您的构建是快速的,这样您就可以得到快速的反馈,但是全面的测试需要很长时间才能运行。部署管道是一种通过将构建分解为多个阶段来处理此问题的方法。每一个阶段都会增加信心,通常是以额外的时间为代价。早期阶段可以找到大多数问题,得到更快的反馈,而后期阶段提供的反馈速度较慢,需要更多的探索。的中心部分是部署管道ContinuousDelivery.
QA在生产
传统上,QA专注于在发布到生产环境之前测试软件,看它是否已经为发布做好了准备。但是,越来越多的现代QA组织也开始关注在生产环境中运行的软件。通过分析日志和其他监视工具,他们发现质量问题并向开发组织强调。这种方法特别适用于那些使用持续交付快速可靠地将软件的新版本投入生产的组织。
持续交付
关于持续交付的权威书籍,概述了将代码快速、安全地投入生产所需的实践。关键的方面是参与发布过程的每个人之间的协作,以及尽可能多地自动化该过程的各个方面。本书介绍了配置管理、自动化测试和持续集成的基础知识——在这些基础上,它展示了如何构建部署管道来实现集成的、经过测试的实时代码。这本书详细介绍了交付生态系统、管理基础设施、环境和数据。
谈话:持续交付
持续交付现在正成为有效软件交付组织的核心实践。本演讲将解释部署管道的工作原理、部署管道的作用、持续交付和持续部署之间的区别,以及一些重要的组成部分。它还涵盖了持续交付的三个主要好处:减少部署风险、可信的进展和用户反馈。
有用的模式
虽然持续交付是一个有效的软件开发组织的基本实践,但它需要时间来学习。华体会登录网址团队需要学习将新的模式放入代码库中,以实现自动化和可观察性需求。虽然我没有对这些模式做一个全面的列表,但我在这个网站上收集了一些重要的模式
功能切换(又名功能标志)
特性切换(通常也称为特性标志)是一种强大的技术,允许团队在不更改代码的情况下修改系统行为。它们属于不同的使用类别,在实现和管理切换时,考虑到这种分类是很重要的。切换引入了复杂性。通过使用智能切换实现实践和适当的工具来管理切换配置,我们可以控制这种复杂性,但我们还应该致力于限制系统中切换的数量。
管理源代码分支的模式
现代的源代码控制系统提供了功能强大的工具,可以轻松地在源代码中创建分支。但最终这些分支必须合并到一起,许多团队要花费大量的时间来处理错综复杂的分支。有几种模式可以让团队有效地使用分支,集中精力集成多个开发人员的工作,并组织到生产版本的路径。最重要的主题是,应该频繁地集成分支,并将精力集中在一个健康的主线上,该主线可以以最小的努力部署到生产中。
分支的抽象
“抽象分支”是一种以渐进的方式对软件系统进行大规模更改的技术,它允许您在更改仍在进行时定期发布系统。
发布/展示/询问
Ship/Show/Ask是一种分支策略,它将Pull Requests的特性与保持发送更改的能力相结合。更改分为Ship(合并到主线中而不进行评审)、Show(打开一个拉请求进行评审,但立即合并到主线中)或Ask(在合并之前打开一个拉请求进行讨论)。
综合监测
合成监视(也称为语义监视)定期针对实时生产系统运行应用程序的自动化测试的一个子集。结果被推送到监视服务中,在发生故障时触发警报。该技术将自动化测试与监视相结合,以检测生产中失败的业务需求。
面向领域的可观测性
在我们的软件系统中,可观察性一直是有价值的,在这个云计算和微服务的时代更是如此。然而,我们添加到系统中的可观察性在本质上往往是相当低级别和技术性的,而且往往需要用各种日志记录、检测和分析框架的繁琐、冗长的调用来丢弃我们的代码库。本文描述了一种模式,它可以清理这些混乱,并允许我们以一种干净、可测试的方式添加与业务相关的可观察性。
金丝雀释放
金丝雀释放是一种降低在生产中引入新软件版本风险的技术,方法是在将更改推出到整个基础架构并使每个人都可以使用之前,将更改缓慢地推出给一小部分用户。
频率可以降低难度
我最喜欢的一句话是:如果疼,那就多做几次.它有一个令人高兴的特性,表面上看起来毫无意义,但当你深入挖掘时,会产生一些有价值的含义
黑启动
暗启动一个特性意味着采用一个新的或更改的后端行为,并从现有用户那里调用它,而用户无法知道它正在被调用。这样做是为了在公开宣布新功能之前评估额外的负载和对系统的性能影响。
梯形接口
华体会登录网址软件开发团队发现,如果尽可能频繁地集成他们的工作,生活会变得容易得多。他们还发现频繁地发布到生产环境中是很有价值的。但是团队不希望向用户公开开发了一半的功能。处理这种紧张关系的一种有用的技术是构建所有后端代码,进行集成,但不要构建用户界面。功能可以被集成和测试,但是UI被保留到最后,直到像keystone一样添加它来完成功能,向用户展示它。
增量迁移
就像任何职业一样,软件开发也有经常被遗忘的华体会登录网址活动,这些活动通常被忽视,但却有在错误的时刻反咬一口的习惯。其中之一就是数据迁移。
灾难性的故障转移
现代应用程序服务器经常宣传的特性之一是,它们在集群中提供故障转移。集群可以提高应用程序的可靠性,如果其中一台服务器宕机,还可以用更多的服务器来服务客户。故障转移可以增加更多的可靠性,如果一台服务器在交互过程中发生故障,集群可以将该交互转移到另一台服务器。
然而,这可能是一个问题。
云时代的基础设施
持续交付的一个核心特性是应用程序构建过程的自动化,允许将系统快速部署到任何环境中。但是,如果很难创建和修改计算基础设施,那么这种能力的价值是有限的。云计算的兴起打开了一个世界,我们可以通过命令行调用创建和提供新的服务器。使用Infrastructure-As-Code利用基础设施从铁器时代到新的云时代的转变,既可以实现持续交付,也可以将持续交付的原则应用到我们对基础设施建设的思考中。
基础设施代码
作为代码的基础设施是一种通过源代码定义计算和网络基础设施的方法,然后可以像对待任何软件系统一样对待源代码。这样的代码可以保存在源代码控制中,以允许审计和ReproducibleBuilds,受测试实践和完整的纪律ContinuousDelivery.这是过去十年来处理经济增长的一种方法CloudComputing平台将成为未来处理计算基础设施的主要方式。
配置同步
自动化配置工具(例如CFEngine,木偶,或厨师)允许你避免SnowflakeServers通过提供菜谱来描述服务器元素的配置。配置同步在服务器实例的整个生命周期内不断地将这些规范应用于服务器实例,或者定期地应用,或者在其更改时应用。如果有人对工具外部的服务器进行了更改,那么在下次同步服务器时,它将恢复到集中指定的配置。如果需要进行某些配置更改,则在配置规范中进行更改(菜谱、清单或任何特定配置工具调用的内容),然后应用于整个基础设施中的所有相关服务器。
不可变的服务器
自动化配置工具(例如CFEngine,木偶,或厨师)允许您指定应该如何配置服务器,并使新的和现有的机器符合规定。这有助于避免易碎的问题SnowflakeServers.这样的工具可以创建PhoenixServers可以随意拆除和重建。不可变服务器是这种方法的逻辑结论,服务器一旦部署,就永远不会修改,只是用新的更新实例替换。
云计算
在过去几年里,“云”已经成为一个被过度炒作的术语。过度炒作的词汇的一个特点是,它们几乎没有定义(是的NosqlDefinition我在看你)。
事实证明,云计算有一个很好的定义,而不是其他的定义NIST.它有一个非常简短和容易理解的版本标准文档(不,我没开玩笑)。
雪花服务器
保持生产服务器的运行是一件非常繁琐的事情。您必须确保操作系统和任何其他依赖软件都打了适当的补丁,以保持更新。托管应用程序需要定期升级。经常需要更改配置来调整环境,以使其高效运行并与其他系统正确通信。这需要混合使用命令行调用、在GUI屏幕之间跳转和编辑文本文件。
其结果是一种独特的雪花——对滑雪胜地有利,对数据中心不利。
凤凰服务器
有一天,我有了这样一个幻想:开始为运营提供认证服务。认证评估包括我和一个同事出现在公司数据中心,用棒球棒、链锯和水枪设置关键的生产服务器。评估将基于操作团队重新启动并运行所有应用程序所需的时间。