打开网易新闻 查看精彩图片

作者:Vishal Biyani 翻译:灵雀云

在2000前后的十年里,软件行业发生了很多变化。丰田的精益运动(lean movement)已被证明在汽车生产制造中具有至关重要价值。在制造业之外的许多行业,尤其是软件行业注意到了“精益”在他们世界中的相似之处。软件行业中的早期创新者也尝试过“持续集成”的想法,这可以从 CruiseControl (2001)和 Hudson (2005)这样的工具的诞生有所体现——其中一个分支被命名为 Jenkins (2011) ,被 OSS 社区采用,并成为实现 CI/CD 最流行的工具之一!2009年,在 O’Reilly Velocity 会议上,官方术语 DevOps 被创造出来,Flickr 工程师在会上发表了他们著名的演讲: “超过10次的每日部署: Flickr开发和运维的协同合作”,并设立了DevOpsDays大会 。

打开网易新闻 查看精彩图片

(摘自知名话题“超过10次的每日部署: Flickr开发和运维的协同合作“)

DevOps的基本思想是将“开发”和“运维”团队联合起来,以更快的速度交付软件。到2010年的十年里,技术、流程和人员的协同过程占用了大量的时间。

打开网易新闻 查看精彩图片

云、规模和复杂性的增长: 2010年的十年

2010年的十年见证了云、 SaaS 和容器等技术的巨大增长,请感受一下增长的趋势,AWS 的用户从2010年的10万增加到2015年的100万,2013年推出的 Docker 在2014年有10万家企业正在使用或评估,到了2015年,已有100万家公司在使用Docker的容器!

打开网易新闻 查看精彩图片

(资料来源: Docker 使用率研究,Datadog)

云和技术的发展确实改变了一些事情,比如:

  • 一整套用于构建、运维和扩展软件的新工具应运而生。例如 Terraform-一种在 HCL 中定义基础设施的方法。或者说, 当Docker 成为主流——容器编排成为了创新的新领域,最终,Kubernetes 应运而生,并围绕它形成了一个名为 "云原生技术"(Cloud Native Technologies)的庞大生态系统。

打开网易新闻 查看精彩图片

早年,Mesos、Docker Swarm、Kubernetes 或 Rancher Cattle 等编排工具的增长。资料来源: 2017年 Datadog 的 Docker 使用率研究

  • 软件即服务(SaaS)——许多新业务现在都以SaaS的形式交付。这意味着现在大部分应用的需求可以通过SaaS服务所完成,而你则可以专注于你的核心业务。在这个过程中,运维的关注点不仅仅是部署和管理基础设施。现在的运维操作旨在更高的可靠性,或以安全为重点进行构建,因为您的服务正在跨越组织的网络边界!

随着 SaaS 变得越来越主流——可靠性、安全性、成本等都占据了主要地位。“运维”的范围比以前扩大了很多!

左移 + “你构建,你运行”(YBYRI)

在运维的范围不断扩大的同时,开发方面的工作也同样在增加。很多与安全性或可靠性有关的问题都被定义为 "代码"。因此,开发人员必须意识到这些问题,即使只是表面上的了解。左移也是由敏捷运动推动的,这样就可以在尽可能靠近内部开发的环节下进行修复,而不是将代码一直推到需要修改的阶段,然后再流经整个流水线。

一些大型组织也在尝试 YBYRI ——你构建,你运行!这意味着开发团队必须意识到除了编写代码之外更多得事情。开发团队最终面临着要承担从与业务相关的代码编写,到可靠性、安全性等一切责任。

开发 + + + : 定义和混淆!

因此,DevOps 运动的出发点是好的,也确实解决了许多问题。然而,云、 SaaS 和应用程序的复杂性的增长很快就模糊了界限——导致几乎每个人的认知负荷都增加了!

所以,除了编写代码之外,开发人员还应该知道 Terraform 如何构建所有东西,或者如何为 Kubernetes 编写所有的manifests 和charts吗?同样的,运维团队是否应该编写代码,如果是,应该在哪里划定界限?这不是一个增加壁垒的问题,但肯定的是,在每个人身上压这么多的事情是降低生产力的。因此,如果我们回到最初开发和运营的关系,现在则有更多的功能需要协同,如安全性,可靠性,成本,当然,开发和运维!

打开网易新闻 查看精彩图片

平台工程的兴起

所有这些都促使人们重新思考团队的结构,以减少认知负荷,增加流动状态和更快的反馈。一些快速扩展并且率先采用 DevOps 的企业很快就认识到了这种情况,并且改进了团队结构、工具和流程,从而建立了支持开发人员的平台。

所以什么是平台工程?企业内部平台工程的目标是使交付团队获得他们需要的支持,并专注在应用的快速交付上。随着应用程序的复杂性和广泛性的增加,开发人员不可能深入地了解所有事情。这时,平台可以让开发人员使用他们想要的标准工具,并可以在之后调整这些工具以适应开发人员的需求。(随着时间的推移,该平台将成为一个能够交付软件的成熟产品,但这并不一定是开始的目标。

参考资料:

【1】CruiseControl (2001) :

https://en.wikipedia.org/wiki/CruiseControl

【2】Hudson (2005) :

https://en.wikipedia.org/wiki/Hudson_(software)

【3】Jenkins (2011) :

https://en.wikipedia.org/wiki/Jenkins_(software)

【4】 implement CI/CD :

https://www.infracloud.io/ci-cd-consulting/

【5】“10+ Deploys per Day: Dev and Ops Cooperation at Flickr” :

https://www.youtube.com/watch?v=LdOe18KhtT4

【6】Source: Docker Adoption Research by Datadog:

https://www.datadoghq.com/docker-adoption-2017/

【7】Docker Adoption Research by Datadog 2017:

https://www.datadoghq.com/docker-adoption-2017/

【8】detailed blog post on Platform Engineering

https://www.infracloud.io/blogs/platform-engineering-101/

【9】Backstage and the need for IDPs

https://www.infracloud.io/blogs/starting-platform-engineering-journey-backstage/