前言
我们正处于 2020 年代,研究已经向我们展示了超过 10 年的事实:拥有高级开发者表现的公司,不仅在速度和吞吐量上超越竞争对手,它们在质量、创新、安全性、员工满意度,最重要的是客户满意度方面也表现更好。
然而,除了少数独角兽公司,大多数传统企业在转型上仍然困难重重。传统的公司架构、缓慢的流程、单体应用架构以及传统产品的漫长发布周期使得公司很难发生变化。
然而,这并不是一种新的现象。变革性变动总是艰难的,成功往往需要多年,甚至有时公司根本无法成功。失败的可能性也非常高。这是因为转型需要在多个层面进行——如果这些变化没有得到协调,转型就注定会失败。本书将帮助你实现转型——不仅提供高开发者表现的研究成果,还通过实际案例展示如何加速软件交付。
本书是一本实用的 DevOps 指南。它帮助那些已经在 DevOps 之旅上的团队,进一步推进他们的 DevOps 实践,通过提供简单的解决方案来解决常见问题,提升软件交付性能。它将帮助团队找到合适的指标来衡量成功,并通过学习其他成功案例,而不仅仅是照搬这些团队所做的事情。本书以 GitHub 作为 DevOps 平台,展示了如何利用 GitHub 的力量进行 协作、精益管理,以及 安全、快速的软件交付。
到本书结束时,读者将了解影响软件交付性能的因素以及如何衡量交付能力。因此,他们将认识到自己所处的位置,以及如何在透明和简单解决方案的支持下推进跨团队协作的旅程。通过掌握常见问题的简单解决方案,他们将了解如何利用 GitHub 的力量加速交付:通过 GitHub Projects 使工作可见,通过 GitHub Insights 衡量正确的指标,通过 GitHub Actions 和高级安全功能使用坚实且经过验证的工程实践,并转向基于事件和松耦合的软件架构。
本书适合谁阅读
本书适合开发人员、解决方案架构师、DevOps 工程师、SRE(站点可靠性工程师),以及希望提升软件交付性能的工程或产品经理。无论是对 DevOps 不熟悉的新手,还是有经验但在实现最大性能时遇到困难的读者,都可以从本书中受益。读者可能已经使用过 GitHub Enterprise,或者来自于 Azure DevOps、Team Foundation Server、GitLab、Bitbucket、Puppet、Chef 或 Jenkins 等平台。
本书内容
第1章:重要的指标 本章解释了精益管理背后的理论,以及如何衡量性能和文化变革。它探讨了开发者生产力以及为何这一点对吸引人才和实现卓越的客户满意度至关重要。
第2章:规划、跟踪和可视化工作 本章关于工作洞察:通过应用精益原则加速软件交付性能。你将学习如何使用GitHub Issues、Labels、Milestones和Projects来规划、跟踪和可视化跨团队和产品的工作。
第3章:团队合作与协作开发 本章解释了协作开发的重要性,并讲解如何利用GitHub促进跨团队和跨学科的协作。
第4章:异步工作:随时随地协作 本章解释了异步工作方式的好处,以及如何利用这些方式来改善和共享责任、支持分布式团队、提高质量并促进跨团队协作。它展示了如何使用GitHub Mobile、Microsoft Teams、Slack,以及GitHub Pages、Wikis和Discussions等工具,从任何地点和任何设备上进行协作。
第5章:开放源代码和内源代码对软件交付性能的影响 本章描述了自由和开源软件的历史以及它在云计算背景下所获得的重要性。它将教你如何利用开源加速软件交付。此外,本章还解释了如何将开源实践应用到内源代码中,帮助你转型组织,并阐明开放源代码和内源代码对你的外包和内包战略的影响。
第6章:使用GitHub Actions进行自动化 本章讲解了自动化对质量和速度的重要性。它介绍了GitHub Actions及其在任何类型的自动化中的应用——不仅仅是持续交付。
第7章:运行你的工作流 本章讲解了如何利用不同的GitHub Actions工作流运行器托管选项来处理混合云场景或硬件在环测试。它展示了如何设置和管理自托管运行器。
第8章:使用GitHub Packages管理依赖 本章介绍了如何结合使用GitHub Packages和语义版本控制,以及如何通过GitHub Actions管理团队和产品之间的依赖关系。
第9章:部署到任何平台 本章展示了如何通过简单的实操示例,将应用部署到任何云平台,包括Microsoft Azure、AWS Elastic Container Service和Google Kubernetes Engine。它还展示了如何使用GitHub Actions进行分阶段部署,并介绍了如何使用基础设施即代码(IaC)自动化资源的配置。
第10章:特性标志与特性生命周期 本章解释了特性标志(Feature Flags)或特性开关(Feature Toggles)如何帮助你减少复杂性并管理软件和特性的生命周期。
第11章:基于主干的开发 本章解释了基于主干开发(Trunk-Based Development)的好处,并向你介绍了加速软件交付的最佳Git工作流。
第12章:左移测试以提高质量 本章深入探讨了质量保证和测试在开发者生产力中的作用,并展示了如何通过测试自动化实现左移测试。还介绍了生产环境中的测试和混沌工程(Chaos Engineering)。
第13章:左移安全性与DevSecOps 本章从更广泛的角度探讨了安全性在软件开发中的作用,如何将安全性融入开发流程,并实践DevSecOps、零信任(Zero Trust)安全模型,以及如何左移安全性。它还讨论了常见的攻击场景,如何通过攻击模拟和红队/蓝队演练来增强安全意识。此外,本章还介绍了GitHub Codespaces作为一种安全的云端开发环境。
第14章:保障你的代码安全 本章讲解了如何使用GitHub Advanced Security,通过使用CodeQL和其他工具进行静态代码分析,消除代码中的漏洞、安全和合规问题,成功管理软件供应链(通过Dependabot),以及如何通过Secret Scanning消除代码库中的敏感信息。
第15章:保障你的部署安全 本章介绍了如何确保部署到环境中的安全性,以及如何以安全、合规的方式自动化整个发布流水线,以满足监管要求。章节涵盖了软件材料清单(SBoM)、代码和提交签名、动态应用安全测试(DAST)以及如何强化发布流水线的安全性。
第16章:松耦合架构与微服务 本章解释了松耦合系统的重要性,以及如何通过演进的设计实现这一目标。章节还涵盖了微服务、演化设计和基于事件的架构。
第17章:赋能你的团队 本章讨论了组织的沟通结构与系统架构之间的关系(即康威定律),以及如何利用这一关系来改善架构、组织结构和软件交付性能。内容涵盖了“两披萨团队”(two-pizza team)、反向康威操控(Inverse Conway Maneuver)以及单一仓库与多仓库策略。
第18章:精益产品开发与精益创业 本章讲解了精益产品管理在产品和功能级别的重要性。它展示了如何将客户反馈融入到产品管理中,创建最小可行产品(MVP),以及如何管理企业级产品组合。
第19章:实验与A/B测试 本章介绍了如何通过进行实验,利用基于证据的DevOps实践(如A/B测试)来验证假设,并不断改进你的产品。它还解释了如何利用OKR(目标和关键结果)来赋能团队进行正确的实验,构建正确的产品。
第20章:GitHub:为所有开发者提供的家园 本章讲解了GitHub如何成为团队的整体开放平台。它介绍了不同的托管选项、定价方式,以及如何将GitHub集成到现有的工具链中。
第21章:迁移到GitHub 本章讨论了从不同平台迁移到GitHub的策略以及其他系统的集成点。它解释了如何找到合适的迁移策略,以及如何使用GitHub Enterprise Importer和Valet工具来完成迁移工作。
第22章:组织你的团队 本章讲解了如何将仓库和团队结构化为组织和企业,以促进协作并简化管理。内容涉及基于角色的访问控制、自定义角色以及外部协作者的管理。
第23章:转型你的企业 本章将所有内容串联起来。本书为你提供了许多工具,帮助你推动成功的转型,并提升开发者效率。但只有将这些工具和方法整合起来,转型才能成功。本章解释了为什么许多转型失败,以及你应该做什么来确保你的转型取得成功。