兼听则明,偏信则暗。
一、背景介绍
对google、amazon、microsoft等大厂软件工程能力的发展洞察看看是否有最新的理论、技术创新。
二、洞察内容
2.1 零信任架构(Zero trust architecture, ZTA)
企业过度依赖“安全”的网络边界会导致安全性收到严重损害。一旦外部边界被攻破,内部系统就会变得欠缺保护。
零信任是一种设计安全防护架构的方法,它的核心思路是:默认情况下,所有交互都是不可信的。
安全策略即代码、服务网络实际是零信任架构的落地应用表现形式之一。
2.2 安全策略即代码(security policy as code)
随着技术格局逐渐复杂化,诸如安全性的问题需要引入更多的自动化和工程实践。在系统构建过程中,我们需要将安全策略——即保护系统免受威胁和破坏的规则和程序,纳入考虑中。例如,访问控制策略定义,并强制谁在什么情况下可以访问哪些服务和资源;相反,网络安全策略应动态限制特定服务的流量速率。 我们的一些团队在 安全策略即代码 上有着丰富的经验。当我们说…即代码时,不仅意味着将这些安全策略写入文件中,还需要将其应用到诸如在代码中采用版本控制、在流水线中引入自动验证、在环境中自动部署并观察监控其性能等实践中。基于我们的经验以及现有工具(包括开放策略代理)和平台(如提供了灵活策略定义和实施机制,以支持安全策略即代码实践的 Istio)的成熟度,我们强烈建议在你的环境中使用此技术。
2.3 度量工程效率
随着组织规模的增长,沟通成本也会呈现二次曲线增长。这个问题可以通过提高每个人的生产效率来提高。
我们需要了解是什么让他们富有成效,找出我们工程流程中的低效之处,并解决所发现的问题。
谷歌组件了一支工程生产效率研究团队来权衡这些问题,研究人员包括软件工程研究人员、软件工程师,也有不同领域的社会学家,包括认知心理学和行为经济学。
自社会科学的人员的加入使我们不仅可以研究工程师生产的软件构件,还可以了解软件开发过程中人的一面,包括个人动机、激励结构和管理复杂任务的策略。该团队的目标是采用数据驱动的方法来度量和提高工程生产效率。
谷歌定义了目标/信号/指标(GSM)框架来指导指标创建。
- 目标:期望的最终目标,是在高层次上理解的表述,不应包含对具体度量方法的引用;
- 信号:是你已经实现了最终结果,信号是我们想要度量的东西,但它们本身不可度量;
- 指标:是信号的代表,是我们实际上可以度量的东西。
软件研发过程一般会经历三个阶段或者说接手三种类型的项目:绿地项目、棕地(黄地)项目、红地项目。可以通过识别项目类型来找到此类型合适的度量指标,这可能是一个快速高效的方案。
- 绿地:一个全新的项目可能是为一个全新的环境开发一个系统,而不用关心与其他系统的集成,尤其是与遗留系统的集成;
- 黄地:在现有(遗留)软件程序/系统之下开发和部署新的软件系统。 这意味着任何新的软件架构都必须考虑并与已运行的软件系统共存;
- 红地:软件系统进入维护期,并且不再开发新功能,只修复终端用户所发现的Bug,维护一段时间后,可能从此进入消亡期,不久后会被新系统所取代。
2.4 代码搜索
理解代码是开发和维护代码的关键,这意味着投资在理解代码上将产生可能难以衡量但实实在在的红利。我们添加到代码搜索中的每个功能都被开发人员用来帮助他们完成日常工作(诚然,其中一些功能比其他功能更多)。Kyth使用构建工作流从源代码中提取语义节点和边缘。这个提取过程为每个单独的生成规则收集部分交叉引用图。在随后的阶段中,这些局部图合并为一个全局图,并针对最常见的查询对其表示进行优化(转到定义,查找所有用法,获取文件的所有修饰)。
三、参考文献
- 《谷歌的软件工程》
- 《研发效能度量指标(3)》
- 《安全策略即代码》
- 《ThoughtWorks 雷达图》
- 《ThoughtWorks 雷达图-零信任架构》
- 《ThoughtWorks 雷达图-软件物料清单》
- 《什么是零信任?》
- 《读懂零信任:起源、发展与架构》
- 《为什么 Google 将数十亿行代码存储在一个存储库中》
- 《AWS:什么是 DevSecOps?》
- 《Stanford Seminar - Google's Steve Yegge on GROK》
- oracle opengrok
- 《Security as Code: DevSecOps Patterns with AWS 1st Edition》
- 《Announcing the 2022 Accelerate State of DevOps Report: A deep dive into security》