我们如何确保全球超过1亿用户在始终可用、安全和可访问的平台上不间断地访问GitHub的产品和服务?从我们最初作为开源平台到现在也支持90%的财富100,这是我们面临的持续挑战,并要求我们对整个工程组织的交付负责。
建立工程治理
为了满足我们越来越多的企业客户的需求以及我们在GitHub平台上的持续创新,我们需要解决技术债务,提高可靠性,并增强我们工程系统的可观察性。这导致了GitHub的工程治理计划(称为Fundamentals计划)的诞生。我们的目标是跨职能工作,以定义、衡量和维持卓越的工程设计确保我们的产品和服务适合所有用户.
什么是基础课程?
为了使这样一个大规模的项目取得成功,我们不仅需要处理这些过程,还需要影响GitHub的工程文化。Fundamentals计划通过确保明确优先考虑所需工作,以确保我们的平台和您喜爱的产品取得成功,从而帮助公司继续建立信任并在卓越工程方面领导行业。
我们通过三个项目支柱来实现这一点,这有助于我们的组织理解我们今天强调的重点领域:
- 无障碍(A11Y):真正成为所有开发者的家
- 安全性:为开发人员提供最值得信赖的平台
- 可用性:始终对开发人员可用
为了取得成功,我们既依赖于各个团队的基层支持,也依赖于我们工程领导层的大力支持。此外,它需要在工具和过程上进行有意义的投资,以便于工程师根据其目标衡量进度。这个行业中没有人喜欢手动流程,在GitHub,我们知道任何多次完成的工作都必须尽我们最大的能力实现自动化。
我们如何衡量进展?
我们使用基本记分卡来衡量整个工程组织的可用性、安全性和可访问性目标的进度。记分卡旨在让我们知道GitHub中的特定服务或功能已经达到了我们标准的预期性能水平。记分卡与基础支柱一致。例如,秘密扫描记分卡与安全支柱相一致,持久所有权与可用性相一致等。这些都是通过增强或添加需求来迭代发展的,以确保我们的服务满足客户不断变化的需求。我们预计,一些记分卡最终将成为具体的技术控制,从而将任何偏差视为事件,并可能采取其他自动安全和安保措施,例如冻结特定服务的部署,直到问题得到解决。
每个服务都有一组在YAML文件中捕获并严格维护的属性,例如服务层(基于对业务的重要性的第0层到第3层)、服务质量(QoS值包括基于服务层的关键、尽力、维护等),以及服务回购中的服务类型。此外,此文件还包含服务的所有权信息,例如赞助商、团队名称和联系信息。基本记分卡读取服务的YAML文件,并根据其属性开始监视适用的服务。如果服务不符合适用的基本功记分卡的要求,则会生成一个带有SLA的行动项,以有效解决问题。在服务的存储库中会自动生成相应的问题,以无缝地连接到开发人员的工作流中,并在他们所在的位置满足他们,从而轻松查找和解决未满足的基本操作项。
通过成功实施Fundamentals计划,我们有效地管理了几个符合可用性、安全性和可访问性目标的记分卡,包括:
- 持久所有权:维护软件资产的所有权并确保定义了通信渠道。坚持这一基本原则支持GitHub的可用性和安全性。
- 代码扫描:跟踪GitHub软件中的安全漏洞,并在开发期间使用CodeQL检测漏洞。坚持这一基本原则支持GitHub的安全性。
- 秘密扫描:跟踪GitHub存储库中的机密以降低风险。坚持这一基本原则支持GitHub的安全性。
- 事件准备:确保将服务配置为向所有者发出警报、确定事故原因和指导待命工程师。坚持这一基本原则支持GitHub的可用性。
- 无障碍:确保产品和服务符合我们的无障碍标准。遵循这一基本原则,使残疾开发人员能够在GitHub上构建。
责任文化
正如我们对基本原理的强调一样,这并不是我们唯一要做的事情:我们也运送产品!
我们称之为基础课程,因为我们还确保:
- 我们在战略计划中包括基本要素。这意味着我们的组织会优先考虑这项工作,并分配资源来实现我们每个季度的基本目标。我们每周跟踪目标并解决障碍。
- 我们向领导者揭示并管理所有服务中的风险,以便他们能够在风险变成实际问题之前积极应对。
- 我们为团队提供支持,帮助他们缓解基本行动项目。
- 很明显,所有服务,无论团队如何,都有一组来自Fundamentals的一致需求。
规划、管理和执行基础知识是一项团队事务,需要一个项目管理伞。
指定的基础知识拥护者和代表有助于保持记分卡合规性,我们与工程负责人的定期检查有助于我们识别高风险服务,并承诺采取行动,使其恢复合规性。这包括:
- 执行赞助商。执行赞助商是通过提供资源、指导和战略方向来支持项目的高级领导。
- 支柱赞助商。支柱赞助商是一名工程主管,负责监督整个组织中给定支柱的总体重点,如可用性、安全性和可访问性。
- 直接负责人(DRI)。DRI是负责推动项目的个人,通过在整个组织内进行协作,做出正确的决策,确定重点,并设定项目的节奏。
- 记分卡冠军。记分卡冠军是负责维护记分卡的个人。他们添加、更新和否决记分卡要求,以保持记分卡的相关性。
- 服务赞助商。赞助商负责监督维护服务的团队,并对服务的健康负责。
- 基础知识代表。该代表负责与组织内的服务所有者协调基础工作,支持赞助商确保工作的优先级,并承诺资源以完成工作。
结果驱动的执行
使数据随时可用是这个难题的关键部分。我们创建了一个Fundamentals仪表板,其中显示了按服务层和类型排序并按服务所有者和团队筛选的所有未满足记分卡的服务。这使得我们的工程领导和代表能够更容易地监控和采取行动,以实现基本功记分卡在其组织内的遵守情况。
因此:
- 我们的服务符合持久所有权要求。例如,作为需求的一部分,服务必须在Slack上有一个执行赞助商、一个团队和一个沟通渠道。
- 我们解决了GitHub组织中与服务相关的存储库中的活动秘密扫描警报。一些存储库已有15年历史,作为这项工作的一部分,我们确保这些存储库是永久拥有的。
- 业务关键型服务遵循更高的事件准备标准,这些标准不断发展,以支持我们的客户。
- 对服务层进行审核和准确更新,以便将关键服务保持在最高标准。
Fundamentals仪表板的布局和内容示例
第1层服务不合规[数量:2] |
服务名称 |
服务层 |
未达标记分卡 |
执行赞助商 |
团队 |
服务_a |
1 |
应急准备 |
john_doe公司 |
github/team_a |
服务_x |
1 |
代码扫描 |
简·杜 |
github/team_x |
持续监控和迭代增强以实现长期成功
GitHub的Fundamentals计划通过制定卓越工程标准,并通过文化和流程提供满足标准的途径,在工程组织内实现了关键业务改进,并作为一种副产品提供给GitHup平台。通过设定正确的组织优先事项并致力于这些优先事项,这一成功是可能的。我们保持组织的各级参与。最重要的是,我们公开庆祝胜利,无论胜利看起来多么渺小。建立协作、支持和真正合作的文化是保持组织范围内工程治理计划持续势头的关键,也是监控我们平台可用性、安全性和可访问性的记分卡的关键,因此您可以始终依赖我们来实现您的目标。
想了解更多关于我们如何设计GitHub的信息吗?结账我们如何建立集装箱服务,我们如何缩放我们的CI使用GitHub Actions大型跑步者,每小时增加15000个工作,以及我们如何有效沟通跨越时区、团队和工具。