给DevOps下个定义
大概从年开始,DevOps这个词语在软件工程领域出现的频率越来越高,虽然这个概念十几年前就有了,但是确实最近几年才开始真正普及,国内外均如此。在三年前,你说DevOps,大多数人指的是CI/CD,两年前开始有一站式的概念,DevOps包含了从项目管理开始的一整套,而最近又开始提DevSecOps,DevBizOps,层出不穷。现在很少有人在纠结DevOps这个概念了,严格意义上DevOps是指让开发可以干运维的工作,但实际应用中这个词语大体可以理解为现代化的软件工具和工程方法。
工具和工程是两个维度的东西,我们讲敏捷开发,瀑布开发是一种工程方法论,跟实际使用的工具无关,你用Excel也可以实现敏捷。但实践中,特定的工程方法论往往依赖一些特定的工具,比如敏捷依赖看板。从我们的观察来看,目前各行各业的软件开发团队使用的工程方法论依然有很大的不一样,有敏捷的,瀑布的,双轮驱动的,还有中国式敏捷等等,但是使用的工具正在逐步趋同,普遍都在往新的生产力工具上迁移。
我们对国内外近个工具做了一些研究和分析,有一些总结记录下来跟大家分享。值得一提的是这些工具的涵盖范围包含了整个软件的基础设施Infra,而不仅仅是DevOps。
Infra工具地图
市面上的工具五花八门,我们需要寻找一个维度来对工具进行抽象的分类,合并同类项才能更好的理解这个行业和市场。抽象的维度有很多,比如可以根据面向客户的规模分会显的太粗,按照工具的类型分会显的太细。最后我们决定根据软件工程的阶段和层次来分,制作了下面这张地图。
这个分类的逻辑是:
最底下是云,包括AWS、腾讯云、阿里云等等,还有一些跟资源相关的产品,比如ServiceNow、CloudFlare等等。
最上面是软件设计相关,包括UI设计和需求设计,也就是软件看得见的部分,比如Figma、Adobe等等。
中间部分是真正构建软件的部分,首先是软件的开发,质检,交付,这是所有生产必不可少的三个步骤,这里包含了日常开发者打交道最多的IDE、代码管理、需求管理、CI/CD、自动化测试等等。
Runtime和Middleware是每个软件都依赖的部分,可以理解为软件的底座,比如容器、数据库、编程语言SDK等等。
最右边是Telemetry和Security,这两块是保证软件正常运行必不可少的,比如监控日志报警、安全扫描、入侵检测等等。
这里每个色块的大小代表了我们认为目前这个领域的市场空间,我们相信这里的面积会随着行业的发展而变化。这样的分类基本涵盖了软件工程的所有方面,当然一个产品可能会跨多个色块,特别是平台类产品。很多新产品的边界很模糊,比如一个类Serverless产品,同时会提供IDE和部分中间件。但也有一些产品是非常专注在某一个具体的领域,比如基于AI的UI自动化测试。这里会涉及到一个经常被提及的问题:一站式工具和单点工具最终会是什么关系?我们将在文章的最后部分来讨论。
我们在制作这个地图的时候,深深的意识到中国跟美国相比,在这个领域的差距真的是令人汗颜,国产化“信创”路漫漫啊。
Runtime
我们跳过最下面的Cloud部分,因为云这部分跟大多数公司没有关系,这个底层基础设施类似于电信运营商,注定只能是少数大公司的生意。我们先来看Runtime这个部分。
目前专注于做RuntimeContainer(我这里用container是泛指运行程序的程序,serverless也算container的一种)的产品不算多,跟整个技术体系的发展阶段有关。事实上数量级的工程效能提升往往是Runtime发生了变化,例如Java当年带来的变革,还有最近容器化带来的变革。下一个可以预见的Runtime变革是Serverless。虽然Serverless已经存在了很多年,但发展的并不好,究其原因是因为程序结构和新的运行环境不匹配,所以我认为Serverless要能发展起来,必须是从程序结构开始的变革。目前有一些公司在这个方向上努力,例如Netlify、Platform9,以及新晋创业公司Inngest、Koyeb。这里的新东西都比较小众,因为适用面有限,解决了极致的效率,但不能解决规模化应用的问题。
另外一类是相对兼容现有的应用结构,提供更好的工具来帮助开发管理运行环境,RuntimeManagement典型的比如k8s、Terraform,也有一些做的很大的创业公司,例如Pulumi.
转载请注明:http://www.0431gb208.com/sjslczl/3577.html