当前位置: 首页 > news >正文

探秘企业DevOps一体化平台建设终极形态丨IDCF

笔者从事为企业提供研发效能改进解决方案相关工作十几年,为国内上百家企业提供过DevOps咨询及解决方案落地解决方案,涉及行业包括:金融、通信、制造、互联网、快销等多种行业。

DevOps的核心是研发效能改进,效能的提升离不开强大工具的支撑,因此在DevOps如火如荼的今天,承载研发效能改进的企业DevOps一体化平台工具建设变得非常炙手可热。

所以,工具链建设过程中,很多人都会有这些疑问:当前DevOps工具发展情况如何?为什么近期国内开始涌现大量的DevOps一体化工具平台,其中很多有实力的企业甚至自研DevOps一体化平台工具?自研DevOps一体化平台工具应该如何做?未来的DevOps发展方向会如何?

通过下面的内容使大家在DevOps工具建设过程中少走一些弯路。

当前DevOps工具发展情况

1.1丰富的可用工具集

图片

自从2010年DevOps这个专属名词推广开来以后,所有和软件研发过程管理相关的工具都可以划入到DevOps工具集中,这些工具从功能范围上可以分为两大类:

All-In-One类(DevOps一体化平台类):即工具具备软件研发主要过程的管理能力,例如上图中微软的Azure DevOps,Atlassian的全家桶(包括我们熟知的Confluence,Jira,Bitbucket,Bamboo等)。

领域专注类:这类工具大都只专注于一种或者多种能力,例如只专注于条目化跟踪管理的Jira,禅道,Clickup等,这些工具大多核心能力是进行条目化跟踪管理的,可以覆盖需求、变更以及缺陷等多种企业常见软件研发管理流程。

1.2井喷式出现的国内DevOps工具

当前国内出现了大量的DevOps一体化平台工具,例如阿里的云效、华为的DevCloud、京东的行云,Gitee,博云等诸多商用DevOps一体化平台工具。当然也有很多企业开始自研平台工具。导致这种状况的主要原因有三个:

  1. 随着开源社区的发展,使得企业基于开源工具定制化更加适合自身要求的平台工具越发简单。

  2. 国内的软件行业经过多年发展,逐渐形成了一套适合自身需要的管理方法,也诞生了诸多优秀工具。随着企业对工具的整合,逐渐具备了DevOps一体化平台的基础。

  3. 部分企业由于国际环境原因,开始逐步放弃国际上成熟的优秀DevOps一体化平台工具,转而在国内寻求优秀替代品,或者干脆自行研发。

1.3国内DevOps工具建设问题

虽然目前市场上有很多国内的DevOps产品,但是或多或少会有一些开源工具的影子,有些干脆就是基于开源工具套了一个壳子。这种方式可以让产品快速投入使用,但是同时也会有很多的问题。

  • 技术封装不到位

  • 流程管理模式僵化

  • 扩展性差、定制化强烈依赖二次开发

  • 管理维度能力较强,工程维度专业度不足

  • 可度量设计缺失、数据分散

DevOps工具优化方案

2.1企业DevOps一体化平台能力

一款好的DevOps平台产品从研发流程跟踪与管理,到端到端的自动化高质量制品生成及交付,应该具备强大的业务功能:

研发过程覆盖

应该完整覆盖软件研发的主要过程:流程跟踪(需求、变更、缺陷以及测试等),源代码管理,自动化流水线,测试管理,制品管理等。

开箱即用

为最大限度的满足主要客户需求,提供开箱即用的配置及工具,例如:提供敏捷、看板等管理工具,提供主流技术栈的流水线开箱即用模板,并且提供调用主流自动化测试工具以及环境部署的流水线任务。

团队协作

在工程管理维度上,应该具备跨系统,跨团队的协同管理能力。

端到端的DevOps工具链

一定要具备协助企业搭建端到端的DevOps广义流水线的能力。也就是说基于DevOps平台工具可以将涉及软件研发的所有流程工具、研发工具、测试工具及运维工具等统一整合起来的能力。

图片

DevOps度量体系

如果希望建立企业级的DevOps持续改进机制,能有一种持续可行的研发效能提升体制,那么研发度量一定是必不可少的最重要依据。在当下工具功能已经足够完善的情况下,产品的最大卖点应该是帮发现问题,分析问题,以及提供解决问题的数据依据,最后成为企业持续改进的内建度量标准。

图片

一切皆代码

DevOps一体化平台工具除需求管理外,其他主要功能模块应该都可以通过脚本进行编排,即Everything As Code(一切皆代码)。

2.2DevOps一体化平台结构

图片

  • 具有普适性的基础管理能力

  • 具有灵活的流程管理配置能力

  • 具有完善的产品扩展能力

    • 对外提供标准Web API

    • 基于DevOps一体化平台产品的扩展框架

    • 完善的消息推送机制

  • 不可或缺的产品定制化能力

DevOps工具链的终极形态构想

图片

未来的编码趋势一定是IDE轻量化,这点大家可以查一查现在Web IDE的热度,VS Code在短时间内收获大量用户就是一个最好的证明。那么基于IDE的网页化,DevOps一定将走向轻量化,不应该再像现在一样,需要维护一个功能复杂的工具界面,这些功能应该被直接集成在IDE中。DevOps平台工具在功能设计上应该只有3个核心模块:流程管理,后台服务,度量。

  1. 流程管理:主要提供给利益干系人、管理者进行信息查看和流程操作使用,此功能需要有对外展示页面。但是开发团队只需要使用轻量化的IDE完成所有操作即可,所有信息与操作均可以在IDE上直接、精确的显示与操作。

  2. 后台服务:提供包括代码管理、流水线管理和制品管理等其他核心服务。

  3. 度量:可以根据任意维度显示所有与开发活动相关的数据,包括流程管理数据、工程管理数据、行为数据(例如开发人员的代码开发习惯,开发时长,代码质量分析等等)。并且可以快速的形成报表进行展示。

从技术上,整个环境应该都运行在基于容器化编排平台运行的容器中,并且相较于传统DevOps平台工具上的差异:

  1. 环境:DevOps平台工具、开发IDE、DevOps自动化流水线运行环境、应用运行环境

  2. DevOps组件:丰富的DevOps功能接口、通用化JS集成框架、实时的研发数据动态收集功能

  3. DIS(DevOps Integration Service):易于配置的集成服务、兼容主流DevOps工具集、开源化运营,便于使用者的二次定制化

相关文章:

探秘企业DevOps一体化平台建设终极形态丨IDCF

笔者从事为企业提供研发效能改进解决方案相关工作十几年,为国内上百家企业提供过DevOps咨询及解决方案落地解决方案,涉及行业包括:金融、通信、制造、互联网、快销等多种行业。 DevOps的核心是研发效能改进,效能的提升离不开强大…...

百度智能创做AI平台

家人们好,在数字化时代,人工智能正引领着一场前所未有的创新浪潮。今天,我们将为大家介绍百度智能创做AI平台,这个为创意赋能、助力创作者的强大工具。无论你是创意工作者、内容创作者,还是想要释放内心创造力的个人&a…...

Python 开发工具 Pycharm —— 使用技巧Lv.1

Basic code completion Ctrl空格 is available in the search field when you search for text in the current file CtrlF, so there is no need to type the entire string 基本代码完成Ctrl 空格可在搜索领域当你搜索文本在当前文件Ctrl F,所以没有必要整个字符串类型 To m…...

zookeeper --- 高级篇

一、zookeeper 事件监听机制 1.1、watcher概念 zookeeper提供了数据的发布/订阅功能,多个订阅者可同时监听某一特定主题对象,当该主题对象的自身状态发生变化时(例如节点内容改变、节点下的子节点列表改变等),会实时、主动通知所有订阅者 …...

TypeScript【enum 枚举】

导语 在 TypeScript 中,新增了很多具有特性的一些数据类型处理方法,enum 【枚举】就是其中,很具有代表性的一种,所以本章节就来聊聊 在 TypeScript 中如何去运用 enum 【枚举】。 枚举的概念: 枚举(Enum&am…...

SpringBoot项目增加logback日志文件

一、简介 在开发和调试过程中,日志是一项非常重要的工具。它不仅可以帮助我们快速定位和解决问题,还可以记录和监控系统的运行状态。Spring Boot默认提供了一套简单易用且功能强大的日志框架logback,本文将介绍如何在Spring Boot项目中配置和…...

复习之selinux的管理

一、什么是selinux? SELinux,Security Enhanced Linux 的缩写,也就是安全强化的 Linux,是由美国国家安全局(NSA)联合其他安全机构(比如 SCC 公司)共同开发的,旨在增强传统 Linux 操…...

无涯教程-Lua - 文件I/O

I/O库用于在Lua中读取和处理文件。 Lua中有两种文件操作,即隐式(Implicit)和显式(Explicit)操作。 对于以下示例,无涯教程将使用例文件test.lua,如下所示。 -- sample test.lua -- sample2 test.lua 一个简单的文件打开操作使用以下语句。…...

java+ssm民宿酒店客房推荐预订系统_2k78b--论文

摘 要 互联网日益成熟,走进千家万户,改变多个行业传统的工作方式。民宿推荐管理以用户需求为基础,借由发展迅猛的互联网平台实现民宿推荐管理的信息化,简化旧时民宿推荐管理所需的纸质记录这一繁杂过程,从而大幅提高民…...

Docker实战-关于Docker镜像的相关操作(一)

导语   镜像,Docker中三大核心概念之一,并且在运行Docker容器之前需要本地存储对应的镜像。那么下面我们就来介绍一下在Docker中如何使用镜像。 如何获取镜像? 镜像作为容器运行的前提条件,在Docker Hub上提供了各种各样的开放的…...

Jenkins Gerrit Trigger实践

1.创建Gerrit Trigger 2.jenkins master节点生成gerrit用户的密钥 这里的用户名得写登录gerrit后个人信息中的 Username 3.gerrit 配置刚刚jenkins生成密钥的公钥 4.gerrit 用户加入群组 不加这个群组,下一步测试就会报错“User aeshare has no capability conn…...

Xcode protobuf2.5添加arm64编译器补丁生成静态库

项目需求,protobuf源码编成静态库使用 但是,github上的protobuf源码没有对应arm64的编译器定义,编译出来的静态库使用时报错。 下面的连接是arm64编译器代码补丁包,把编译器代码放到src/google/protobuf/stubs/atomicops_intern…...

计算机毕设 深度学习疫情社交安全距离检测算法 - python opencv cnn

文章目录 0 前言1 课题背景2 实现效果3 相关技术3.1 YOLOV43.2 基于 DeepSort 算法的行人跟踪 4 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两…...

四数之和——力扣18

文章目录 题目描述双指针法题目描述 双指针法 class Solution {public:vector<vector<int>>...

Serializable 和 Externalizable区别?

Serializable接口 java.io.Serializable 接口没有方法或字段&#xff0c;仅用于标识可序列化的语义。 public interface Serializable { }可序列化类的所有子类型本身都是可序列化的。在进行序列化操作时&#xff0c;会判断要被序列化的类是否是Enum、Array和 Serializable类…...

2023 电赛 E 题 K210 方案--K210实现矩形识别

相关库介绍 sensor&#xff08;摄像头&#xff09; sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(10) reset()&#xff1a;重置并初始化单目摄像头 set_pixformat()&#xff1a;设置摄像头输出格式&#xff0c…...

【雕爷学编程】MicroPython动手做(29)——物联网之SIoT 2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…...

chapter13:springboot与任务

Spring Boot与任务视频 1. 异步任务 使用注解 Async 开启一个异步线程任务&#xff0c; 需要在主启动类上添加注解EnableAsync开启异步配置&#xff1b; Service public class AsyncService {Asyncpublic void hello() {try {Thread.sleep(3000);} catch (InterruptedExcept…...

(十一)大数据实战——hadoop高可用之HDFS手动模式高可用

前言 本节内容我们介绍一下hadoop在手动模式下如何实现HDFS的高可用&#xff0c;HDFS的高可用功能是通过配置多个 NameNodes(Active/Standby)实现在集群中对 NameNode 的热备来解决上述问题。如果出现故障&#xff0c;如机器崩溃或机器需要升级维护&#xff0c;这时可通过此种…...

problem(3):python IDE和python解释器

为什么写这篇文章呢&#xff1f;遇到了下面的问题&#xff0c;相同的解释器&#xff0c;如果运行angr库的代码&#xff0c;会出现 这样的情况&#xff0c;但是用spyder IDE 会显示正常&#xff0c;很奇怪 应该就是IDE的原因 IDE的循环导入问题 检查IDE配置&#xff1a; 如果可…...

【C语言进阶篇】模拟实现通讯录 (内附源码)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言一 、 通讯录的简介1.1 联系人的类型定义1.2 通讯录的定义1.3 通讯录要实现的功能 二 、 如何…...

Python web实战之 Django 的模板语言详解

关键词&#xff1a; Python、web开发、Django、模板语言 概要 作为 Python Web 开发的框架之一&#xff0c;Django 提供了一套完整的 MVC 模式&#xff0c;其中的模板语言为开发者提供了强大的渲染和控制前端的能力。本文介绍 Django 的模板语言。 1. Django 模板语言入门 Dj…...

使用ChatGPT编写技术文档

技术文档对于任何项目都是至关重要的&#xff0c;因为它确保所有利益相关者都在同一层面上&#xff0c;并允许有效的沟通和协作。创建详细而准确的技术文档可能既耗时又具有挑战性&#xff0c;特别是对于那些不熟悉主题或缺乏强大写作技巧的人来说。ChatGPT 是一个强大的人工智…...

Java超级玛丽小游戏制作过程讲解 第四天 创建并完成常量类03

今天继续来完成常量类。 package com.sxt;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List;public class StaticValue {//背景public static Buff…...

webpack基础知识八:说说如何借助webpack来优化前端性能?

一、背景 随着前端的项目逐渐扩大&#xff0c;必然会带来的一个问题就是性能 尤其在大型复杂的项目中&#xff0c;前端业务可能因为一个小小的数据依赖&#xff0c;导致整个页面卡顿甚至奔溃 一般项目在完成后&#xff0c;会通过webpack进行打包&#xff0c;利用webpack对前…...

JAVA SE -- 第十五天

&#xff08;全部来自“韩顺平教育”&#xff09; 多线程 一、线程相关概念 1、程序&#xff1a;是为完成特定任务、用某种语言编写的一组指令的集合。 2、进程&#xff1a;是指运行中的程序&#xff0c;如QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程…...

macOS 环境变量加载探究

使用 macOS 安装环境&#xff0c;见到过很数种环境变量配置方法&#xff0c;每次也都是按照别人的代码&#xff0c;人家配置在哪 我就配置在哪&#xff0c;其实不太清楚有什么区别&#xff0c;决定记录下。 本机 macOS 13.3&#xff0c;从 macOS Catalina(10.15) 开始&#xf…...

在程序中如何判断该线程的线程id(get_id())的返回值是一个无效值

std::thread::id() 是std::thread::id的默认构造函数&#xff0c;它会创建一个空的std::thread::id对象。一个空的std::thread::id对象代表一个无效的线程标识符。 可以通过 std::thread::id 的成员函数 std::thread::id::operator() 来判断一个 std::thread::id 是否是一个空值…...

ffmpeg-ffplay代码架构简述

全局变量 /* Minimum SDL audio buffer size, in samples. */ // 最小音频缓冲 #define SDL_AUDIO_MIN_BUFFER_SIZE 512 /* Calculate actual buffer size keeping in mind not cause too frequent audio callbacks */ // 计算实际音频缓冲大小&#xff0c;并不需要太频繁…...

⛳ 多线程面试-什么是多线程上下文切换?

目录 ⛳ 多线程面试&#xff0d;什么是多线程上下文切换&#xff1f;&#x1f381; Java中用到的线程调度算法是什么&#xff1f;&#x1f3a8; 什么是线程饥饿 &#xff1f;你对线程优先级的理解是什么&#xff1f; ⛳ 多线程面试&#xff0d;什么是多线程上下文切换&#xff…...