看谷歌的 DevOps 文化
本帖最后由 adminlily 于 2018-9-14 17:38 编辑背景
谷歌云平台的高级研发总监 Melody Meckfessel 在 JFrog SwampUp 2017用户大会上为大家介绍了谷歌的 DevOps 工程师文化。
Melody Meckfessel 的团队主要负责为谷歌的工程师提供 DevOps 的工具链,让工程师们能够快速的构建,测试,发布产品。已经支持的团队包括安卓,Chrome,谷歌云平台等等。
和其他公司一样,谷歌的工程师也会在构建失败,测试不通过,调试线上环境部署失败的问题上花费大量时间,Melody 一直致力于软件交付效率的提升,因此她认为谷歌 DevOps 团队的任务,是让广大的谷歌工程师团队从这些繁琐的软件发布的工作中解放出来,去快速的上线业务需求。
谷歌工程师 DevOps 文化
[*]Diverse Development
业务团队的大小,产品规模的大小,团队的组织结构等等都成为开发多元化的因素。从很多方面来看,这些都是非常混乱的,所以 Melody 的 DevOps 团队就是提供统一的工具链来支持团队交付的流程。业务团队具备开发的独立性,DevOps 团队负责收集交付过程中产生的数据,并且定位开发中的障碍点,供业务团队参考,评估,总结,并且改进。
[*]不责怪团队
谷歌曾经发布了一个改进测试性能的产品,产品处于试水阶段,开放给用户体验之后,访问量暴增,但用户的使用方式并不是团队期望的方式,并且占用了大量的服务器资源,团队并没有预测到会消耗这么大规模的资源,于是团队不得不暂停此功能,并且寻求外部的人员进行帮助,重新设计这个功能。DevOps 团队认为这次发布是”Successful failure”。
所以团队成员如果意识到开发一个新功能即使失败,也不会被问责的时候,他就会更愿意承担有风险的任务。
公司文化是让一群人愿意和公司一起打拼的基石,如果公司的战略很好,但公司不能构建良好的公司文化,那么公司很难将事情做得好。
[*]支持谷歌工程师的平台
谷歌工程师的一天:下载依赖,写代码,生成变更集。随后放入整个谷歌的代码库进行测试,测试通过后,提交代码审核。支持谷歌工程师轻松上线的,是底层的 DevOps 平台。平台的功能是让开发者能够重用已有的库,集成所有复杂的工具,使得开发者不再为上线运维的流程所困扰。
[*]文化和工具
谷歌每天有45000个提交,如何保证这么多次提交是可靠的?谷歌依赖于自动化的工具做代码审查,包括格式,样式,linters 进行合规检查。当然也进行人工代码审查。
每个员工都可以搜索整个谷歌的代码库,这就意味着大量优秀的组件可以被发现和复用,谷歌鼓励工程师复用其他人的组件,而不是重复造车轮。
[*]智能构建和智能测试
在测试方面依赖于自动化测试,而不是 QA,谷歌会将对所有 commit 进行持续的测试,测试用例只有在被 commit 影响到时进行触发,并且将测试结果进行缓存,本次提交未被影响到的测试结果,不会被执行。
以上图为例,如果开发者只修改了 Login.java,那么谷歌的测试系统只会跑这个文件相关的测试用例,而不会跑认证相关的634个测试用例,这得益于谷歌的开源工具 Bazel。谷歌,Netflix等公司都在使用 Bazel 做智能的构建。
[*]DogFooding
谷歌的大部分产品,是出自于谷歌内部使用的产品,例如 Kubernetes 来自于谷歌内部的 Borg 系统,Bazel 构建系统等等。自己使用自己的工具,能够为开发者带来更好的用户体验,同时也能够接受社区的反馈,将产品做得更好。
[*]挑战
永远不够快,即使工程师当时觉得平台很快,包括构建,测试等等,过两个月之后,他一定会抱怨平台的速度不够快。
技术发展一直在变化,团队也在变化,DevOps 团队需要不断的学习,支持新的技术,新的开发方式。
在互联网安全漏洞日益增大的情况下,如何有效的为产品进行自动的漏洞扫描?代码扫描?
[*]最后:DevOps 应该是什么样的?
1.生产力
通过统一的平台集中管理代码,代码审查,构建,测试,部署,最大化的减少上线的复杂度,加快上线的频率,任何开发者都能自己上线。
2.安全
为公司执行严格的安全检查机制,包括代码扫描,包漏洞扫描,攻击性测试等等。
3.可扩展性
应用在平台上具备自动扩容的能力,来应对越来越大的用户请求。
原创:王青
页:
[1]