目录
原文:DevOps 工具有哪些?全球 DevOps 工具格局
1 理解
早期研发角色只负责开发,部署和系统运维由运维操作,虽然业务膨胀、单体服务逐渐演变成成千上万个微服务,所以引入了DevOPs机制:研发通过平台化工具,实现代码版本管理、研发、部署、运维(监控、日志、报警、trace等)。即 开发运维一体化。
从 2019 年开始,DevOps 这个词语在软件工程领域出现的频率越来越高,虽然这个概念十几年前就有了,但是确实最近几年才开始真正普及,国内外均如此。在三年前,你说 DevOps,大多数人指的是 CI/CD,两年前开始有一站式的概念,DevOps 包含了从项目管理开始的一整套,而最近又开始提 DevSecOps,DevBizOps,层出不穷。现在很少有人在纠结 DevOps 这个概念了,严格意义上 DevOps 是指让开发可以干运维的工作,但实际应用中这个词语大体可以理解为现代化的软件工具和工程方法。
1 |
DevOps = 人(People)+ 流程(Process)+ 平台(Platform)。 |
1、 人:开发、运维、测试等。
2、 流程:是指团队在开发、测试、部署和运维软件产品时所遵循的一系列步骤和规范
3、 平台:是指团队所使用的工具和技术,如代码版本控制系统、部署工具、日志查询工具等。
2 常用平台
DevOps 工具可以抽象为以下几个大类:Design, Develop, Quality, Delivery, Telemetry, Security, Runtime, Middleware;
2.1 Runtime
Runtime Management 典型的比如 k8s,Terraform,也有一些做的很大的创业公司,例如 Pulumi.com。
Kubernetes (K8s) 是一个谷歌开源工具,它可以让你管理 Docker 容器。由于在生产中经常有大量的容器在运行,因此,Kubernetes 使编排这些容器成为可能。
2.2 Middleware
1、服务治理
:Consul。
8、日志管理:ELK Stack (Elasticsearch, Logstash, Kibana) ELK Stack是一个强大的日志管理和分析平台
9、系统监控
:Prometheus、influxdata
10、
网关
:Kong,zuul。
11、链路追踪
:Zipkin。
2.3 Design
软件的设计分为需求设计和 UI 设计
2.3.1 需求设计
需求设计理解为产研跟业务对接的地方。
例如文档、Excel等。国外有一些产品做的还不错比如 Aha.io,Accompa、Jira 、Productboard ,而国内则有 PingCode等等。
2.3.2 UI 设计
就有相当相当多的工具,老牌的比如 Adobe 系列,新晋明星 Figma 等等。这个领域有非常多的细分,比如产品原型设计 Mockflow、Proto.io,快速 UI 设计 Framer,Webflow,还有通用的线框工具 Miro、Lucidchart 等等。这里的发展趋势逐步的跟低代码在结合,最终可能发展为设计即代码的状态
2.4 Develop
2.4.1 Project Management
发占了整个地图中最大的一块区域,这个领域东西最多最杂,毕竟这是跟人打交道最多的地方。这里面最大的一块叫做 Project Management,包括了需求管理,Bug 管理,进度管理,度量等等,出了 Jira,Asana 这样的产品,都是很大的上市公司。这个领域也不断的有新产品出现比如 Rocketlane, Code Climate,但都比较垂直。而国内比较出名的则有PingCode、禅道等。
值得一提的是有很多团队会用更通用的管理工具来实现同样的目的,例如 Trello,Monday,甚至 Airtable。
2.4.2 流水线
开发这里的第二大领域是 Pipeline,俗称流水线,这也是从制造业借鉴过来的。这里的 Pipeline 是泛指写完代码以后所涉及到的工具,而不仅仅是 Jenkins 这样的 CI。这里的典型代表是 Gitlab,它的两个主打产品就是代码仓库和 CI,占据了 Pipeline 里面的绝大部分位置。这个领域特别繁杂,但商业化做的好的不多,绝大多数是小工具,甚至是开源工具。在这个领域做产品将面对开源最大的挑战,因为程序员喜欢在这里造轮子。
Pipeline 上可以集成各种单点的工具,例如代码扫描 Sonar,代码审查 Codacy,代码搜索 Sourcegraph。还有一些更垂直的专注某个类型应用的工具,例如移动端构建 Bitrise,移动端开发 Ionic,服务器端镜像构建 Packer。
2.4.3 API Management
API 已经是各个产品的标配用于相互连接。API 多了自然就需要管理,于是出现了 Mulesoft 这样的产品。很多大公司也都会提供 API 全生命周期的产品例如微软,Snaplogic,Softwareag,Tibco。这个领域几乎没有开源的产品,大概只有大公司才会用到这样的产品,容易收钱。我们相信 API 的重要性会越来越大,数字世界越来越丰富,沟通和交流依赖 API。
2.4.3 Resource Hub
在开源社区和开发者影响力上 Github 无人出其右。创造的过程免不了借鉴,Resource Hub 就是各种被借鉴的资源。除了代码以外,还有 Postman,RapidAPI 等提供的 API Hub。Stackshare 提供了可以借鉴的应用架构。
2.4.5 低代码
低代码产品大致可以分为两类,一类是流程自动化,例如 Appian,Tray,Creatio。另外一类是快速开发工具,例如 Draftbit,Towify,Thunkable。
2.4.6 IDE
2.5 Quality
如何保障软件产品的质量是一个头疼的问题,我们可以依赖自动化的检测工具也可以依赖人工的测试。首先我们来看 Test Harness,也就是测试工具。这是一个很大的分类,绝大多数质量保障的投入都放在了这个领域。令我震惊的是国外在测试工具的投入上真的是下血本,难怪老外的产品质量好,而国内基本靠人。测试工具有很多细分,比如一些相对比较成熟的领域:
测试工具这里有一个趋势是 AI 化,包括通过历史测试数据来生成新的测试代码,或者通过视觉分析来测试 UI,比如 Test.ai、Functionize、Accelq、Applitools 等等。在看这领域的时候确实是超出我想象的,感觉像是挖到了宝藏。我没有想到老外在测试工具上已经走的如此超前了,这些工具的场景都很清晰,而且商业化的也都不错。
除了测试工具以外,测试管理也很重要。顾名思义测试管理就是把测试用例,测试计划,测试结果等等管理起来,形成结构化数据,输出报表等等,比如 TestRail、Qmetry Tricentis 等等,管理类的工具相对少一些。这里比较有意思的一家公司叫做 Sealight,引入了更数据化上下游打通的测试管理理念,值得学习。
有了工具,有了管理,那剩下的就是人了。迄今为止测试依然是一个少不了人工参与的工作,所以有一些测试服务公司承接测试的外包工作,也可能是以众包的方式来完成,例如 Testlio、 Globalapptesting、Applause。
2.6 交付Delivery
软件的交付包含两部分仓储还有交付。过去我们对于可以交付的软件的仓储是比较随意的,基本都是直接放在文件系统中。随着软件工程的深入,我们发现软件的存储也是挺讲究的,包括权限,安全扫描,跨网传输等等。所以产生了 Artifactory 这个品类,典型代表 JFrog,还有开源的 Nexus。这个领域门槛不高,可替代的方案也比较多,所以没有太多公司在这里深耕。唯一一家上市公司 JFrog 市值也不高。
最早软件的交付都是通过物理介质传递的,80 后可能都有过购买软件光盘的经历。随着 BS 应用的兴起,软件的分发互联网化了,软件的交付就变成了更新服务器上的代码就行了。所以有了持续交付的概念 Continuous Delivery。几乎所有的互联网,移动互联网应用都会涉及到持续发布的问题,所以这个领域产生了很多商业工具比如 Ansible。过去应用的架构五花八门,所以交付工具也是五花八门,很多团队都是自己造的发布工具。随着云,微服务和 DevOps 的兴起,应用的架构开始趋同,交付工具也就有了统一的可能,又产生了很多新兴的发布工具例如 Harness、Octopus。还有一些工具专注灰度发布的能力,例如 Launchdarkly。
2.7 可观测性Telemetry
可观测性包含几个元素监控,日志,报警,追踪。其中只有日志是有单独商业工具的,例如 Logdna、Loggly,其他基本都是集成在一个工具中。这个领域过去基本都是自己用开源的自己搭,Prometheus、Grafana、Logstash、Skywalking,但是想把这些产品真正融合好是非常不容易的,这里涉及到海量数据的处理。所以在 Observerbility 这个领域有非常多的商业公司,除了 Datadog 以外,还有 NewRelic、Overops、LightStep 等等。所有这些工具的目的只有一个——帮助你在出问题的时候快速定位到问题。
定位到问题还不够,最好可以全自动解决问题,这就是 AIOps。虽然我认为让机器做操作很危险,但这个领域也有不少做的很大的商业公司,例如 BigPanda,Moogsoft,Dynatrace。总的来说可观测性是一个很有前景的市场,软件吞噬世界,如果软件不可控后果不堪设想。
2.8 Security
传统意义上安全往往指运行时安全,因为这里才是存放生产数据,跟客户打交道的地方,所以企业会投重金保证生产系统的运行安全,包括防火墙,进程监控等等。这个领域挺成熟的工具也很多,例如 Illumio、 Contrastsecurity、Rapid7、Sysdig 等等。这些工具从各种方面来保障应用的安全,包括网络,容器,云主机等等。这块的安全传统意义上是“运维”关注的。
另外一块开发安全最近受到的关注越来越多,解决的是软件开发相关的安全。基本上可以分为几类,静态安全(SAST),动态安全(DAST),软件成分分析(SCA),交互式安全(IAST),以及运行时应用防护(RASP)。由于厂商一般不会只做一种类型的安全产品,往往会横跨几个,我就不分开列了。这里老牌的厂商比如 Checkmarx,Fortify,Synopsys,Blackduck 也有一些新晋明星 Snyk、Stackhawk、Anchore 等等。安全产品要做出核心竞争力门槛挺高的,如果只是依赖公开的漏洞库搞搞扫描就太同质化了,所以好的安全产品必须是在性能,易用性,有效性,甚至独有的分析能力等等方面做出亮点。
还有一类安全叫做“软件供应链安全”。虽然供应链安全最近被频繁提起,并且也当一个框使用,什么都往里装。但我认为严格意义上的供应链安全是有别于上述两种安全的。供应链安全核心解决的是可信的问题,也就是确保软件没有被篡改,你妈是你妈的问题。而运行时安全和开发安全解决的是 Bug 和漏洞的问题。当然也可以把供应链安全归属为开发安全的一部分,毕竟也是开发过程中的事情。还有一块叫做安全管理,类似于测试管理,这个品类的产品不多,主要解决的是一些审计,合规管理,风险管理,风险评估的问题,例如 Apptega、Upguard。
2.9 一站式工具 vs 单点工具
“一站式”是国内特别喜欢提的一个概念(老外的产品似乎只有 Gitlab 在一直强调 All in One),大概是中国人喜欢一条龙。我们也是主打一站式概念的,但是我们越来越感觉到想要做全是不可能的。这么多细分的领域,每个领域都有上市公司的情况下,怎么可能一个公司全做完呢?所以一站式到最后一定走向开放平台,这也是我们的发展方向。
说实话,一站式是没有太多技术创新的,基本都是管理方面的演进,而管理又是非标的重灾区,并不是一个好生意。市场上的一站式产品不应该很多,有几个就足够了。而单点工具是应该要百花齐放的,在每个细分领域做精做细,这里可以萌发创新。
来源:
什么是DevOps? 知乎点赞1k+