开发团队实现持续交付的三种实践与自动化持续交付过程本身一样,您应该分阶段进行,而不是一次更改所有内容。同时,还要有回滚计划,以防出现各种意外问题。虽然这个过程极具挑战性,但一旦成功实施,将使您能够更快地响应客户的各种需求,并最终使您的产品在市场上更具竞争力。自动化的好处自动化的许多好处包括:将上市时间从每周和每月缩短到每天或每小时。更少的软件错误意味着更少的市场风险。花在运维上的时间更少,也降低了软件开发的成本。更强大的开发团队。成功构建自动化管道后,您可以使用此处概述的一些最佳实践在切换整个开发环境之前微调您的管道。我们将此处的最佳实践分为三大类:软件架构——各种服务和产品的总体架构,它为您构建管道的方式以及您的团队如何与之交互奠定了基调。自动化模式-自动化和各种测试的策略。公司文化-团队组织、透明度和问责制。1.软件架构采用微服务为了实现真正敏捷和自动化的流水线,我们建议您将您的产品构建为各种微服务。如果您仍然对为什么需要微服务有疑问,请参阅:《什么是微服务?》和《从AWS角度介绍微服务》。除非您是从头开始创建应用程序,否则重建整个应用程序是一项艰巨的任务。如果您手头已有系统,最好逐渐切换到微服务。例如,您可以采用MartinFowler开发的strangler模式。这种模式保证了在单一架构向微服务提升的过程中,仍然可以使用共存的现有业务系统。在此模型中,您的关键任务系统不仅得到维护,而且围绕它构建新的体系结构。随着时间的推移,旧系统会逐渐被新架构取代,而不是一下子全部取代。2.以自动化模式实施GitOps为了优化平均恢复时间(MTTR,MeanTimetoRecovery),你应该实施GitOps。GitOps通过使用Git作为声明性基础架构和应用程序的“真实来源”来工作。当Git发生更改时,自动交付管道会将更改部署到您的基础架构。不仅您的基础设施和应用程序代码有数据源,而且在发生灾难时,您的开发团队可以从Git快速恢复基础设施,将MTTR从几小时缩短到几分钟。有关GitOps的更多信息,请参阅《用拉式请求的各种操作》和《GitOps:Kubernetes实现高速持续集成与持续交付(CI/CD)》。以安全为中心的自动化在与大型团队协作并将各种自动化管道连接到Kubernetes时,您需要考虑集群中的各种安全凭证。为了能够将更新部署到集群,您必须将证书保存在某个地方。理想情况下,这些证书应该存储在集群内部。但如果需要将它们放在外面,至少应该将它们保存在Vault之类的存储库中。推/拉自动化管道提供更好的安全性,因为您的持续集成可以与持续交付分离。今天大多数CI/CD工具都使用推送模型。Push-based是指代码从CI系统开始,经过管道,然后需要经过一系列编码脚本,或者手动使用'kubectl'将更改推送到Kubernetes集群。总的来说,如果不小心使用,CI可以成为您系统的入口点。像WeaveCloud这样的拉模式依赖于两个关键组件:一个是部署自动化器(DeployAutomator),用于监控镜像注册表,另一个是位于集群中用于维护其状态的部署同步器(DeploySynchronizer)。pull方式更安全,因为WeaveCloud部署针对以下几个方面:基于角色的访问控制(RBAC)相关策略和安全,只执行Kubernetes允许的操作。信任关系由集群共享,而不是单独持有。在本地绑定所有Kubernetes对象,并在操作已完成或需要重试时收到通知。您不必每次都从头开始重建映像。为了在通过管道运行各种更新时节省宝贵的时间,您不必每次都重建映像。您只需要构建容器的镜像一次,然后通过每个测试序列/环境“推出”它。如果您使用的是GitOps,您可以在Git中更改各种声明性配置文件,或者直接使用Wea??veCloud部署的各种操作。发布的解耦部署在向客户发布产品之前,添加一个部署阶段进行冒烟测试,甚至更多类型的测试,例如:蓝绿部署、金丝雀测试或A/B测试。值得注意的是:我们应该从概念上理解“部署”和“发布”的区别。部署意味着该软件已经在特定环境中进行了测试和安装;而release意味着这些改变最终被实现并推送给最终用户。要衡量管道的成功,请建立并跟踪管道中的那些关键指标。可以对比开启自动化前后的结果,主要包括以下几个方面:部署频率——每天完成的部署数量。变更提前期-部署变更所需的提前期。平均恢复时间(MTTR)-在发生灾难时恢复应用程序所需的时间。更改失败率-停机时间占正常运行时间的百分比。3.持续交付的企业文化营造开放和不抱怨的文化请围绕自动化流程提高企业透明度。通过允许开发人员犯错,鼓励他们解决和纠正各种流程中的偏差。一旦建立了自动化,开发人员需要拥有管道的完全所有权,以便在发生测试失败时能够及时回滚代码更改。每个人都对构建负责。在完全自动化的管道中,任何人都应该能够诊断和修复构建过程中出现的问题。这不仅导致更多的本土软件开发流程,而且还促进了整个组织更好的团队合作。***建议众所周知,容易出错的手动部署往往会增加软件发布的风险和成本,同时降低公司在其业务领域的竞争力。因此,尽管实施自动化的持续交付管道将是一项艰巨的任务,但它最终将证明对企业来说是一种值得的痛苦。原标题:持续交付的最佳实践,作者:AnitaBuehrle
