今天给大家带来的分享是基于 Apache DolphinScheduler 的持续集成方向实践,分享的内容主要为以下六点:

  • 研发效能

  • DolphinScheduler CI/CD 应用案例

  • DolphinScheduler 平台下的Serverless 理念

  • 基于DolphinScheduler DAG 搭建 CI/CD 流水线的解决方案

  • 模块化组装方案的实践案例

  • 为什么选择 DolphinScheduler

1 研发效能

效率竖井

  • 由局部优化导致,表现为:各个环节和部门繁忙而“高效”,但总体的效率和响应速度却很低。它是研发效能提升的普遍症结所在。(参照:https://developer.aliyun.com/article/687237)

基本介绍

  • 一个组织持续快速交付价值的能力,可以从流动效率、资源效率和质量三个方面来衡量。其中流动效率是改进研发效能的核心抓手,它带来系统和全局的改进。

持续集成支撑平台

  • 稳定任务平台 - DS

  • 可以支持DIY - 脚本

  • 可以自定义流程组装逻辑 - DAG

三要素

  • 准确(质量)

  • 快速(流动+资源)

  • 持续(流动+资源)

人员关系

  • DevOps:开发人员&测试人员&产品经理

平台要求

  • 平台易用性、门槛

  • 流程的模块化

  • 一个改动即使生效

  • 集成测试的模块化

维基百科:DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

支撑平台的效能

可定制化

    • 降低定制门槛 – 脚本

灵活组装

    • 减少写选择逻辑的可能

快速尝试

    • 复制

    • 删除

    • 增加

2 DolphinScheduler CI/CD 应用场景

场景:

  • 集群规模:16台(6master/10worker)

  • 每日任务量:task 级别 – 4000+

  • 新品-CICD铺设周期:< 0.5 天

  • 成品质量提高:80%+(降低线上事故)

  • 使用人物:开发、测试、管理者

3 DolphinScheduler 平台下的Serverless 理念

Serverless 无服务架构

  • 通过将复杂的服务器架构透明化,使开发者专注于“要做什么”,从而强调了减少开发者对服务器等计算资源的关注、工作粒度从服务器切换到任务的思想

Faas 方法即为服务 – OpenFaaS

4 基于DS DAG 搭建 CI/CD 流水线

脚本即为服务 – 脚本设计方式

  • 单一职责:只做一件事

  • 解耦:不过分依赖其他模块

  • 可配置参数:可以使用全局参数,或者从配置服务中读取参数

  • 自检结果:脚本执行结果,就是这件事的结果

脚本即为服务 – 通用性脚本介绍

  • 克隆代码

  • 镜像编译

  • 服务部署

  • 特定环境准备

  • 容器运行脚本

  • 包含特定场景的业务脚本

5 模块化组装方案的实践案例

基于DS DAG 搭建 CI/CD 流水线

  • 单模块持续集成配置方式

  • 关键字

    • 系统变量

  • 全局变量

  • 局部变量

  • 模板嵌套

  • 多模块单模块持续集成配置方式

6 为什么选择 DolphinScheduler

  • 支持UI 操作 - 编辑流程

  • DAG

  • 学习成本、教育成本

  • 社区文档

  • Java 生态

下面视频是分享演讲: 

Apache DolphinScheduler 的持续集成方向实践的更多相关文章

  1. fir.im weekly - 「 持续集成 」实践教程合集

    我们常看到许多团队和开发者分享他们的持续集成实践经验,本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等项目搭建持续集成的实践,以及一些国内外公司的内部持续集 ...

  2. 一个Web 持续集成工作实践

    一个web的持续基础实践: https://mp.weixin.qq.com/src=3&timestamp=1494325174&ver=1&signature=wFVC0E ...

  3. fir.im 持续集成技术实践

    互联网时代,人人都在追求产品的快速响应.快速迭代和快速验证.不论是创业团队还是大中型企业,都在探索属于自己的敏捷开发.持续交付之道.fir.im 团队也在全面实施敏捷,并推出新持续集成服务 - flo ...

  4. 视频云SDK iOS持续集成项目实践

    1. 前言 2016年, 我们维护的 iOS推流播放融合SDK KSYLive_iOS 在github上发布了40多个版本, 平均两周发布一个新版本, 经历了最初痛苦的全手动版本构建和维护, 到后来慢 ...

  5. Jenkins多环境持续集成架构实践

    自动化部署主要是为了解决项目多.环境多.持续集成慢.部署操作麻烦.手动操作易出错.自动化运维等问题. Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建.部署.自动化 ...

  6. 倒计时2日!基于 Apache DolphinScheduler&TiDB 的交叉开发实践,从编写到调度让你大幅提升效率

    当大数据挖掘成为企业赖以生存.发展乃至转型的生命,如何找到一款好软件帮助企业满足需求,成为了许多大数据工程师困扰的问题.但在当下高速发展的大数据领域,光是一款好软件似乎都不足以满足所有场景业务需求,许 ...

  7. Jenkins持续集成 入门实践

    本文测试环境: ASP.NET MVC项目,Windows 7环境,SVN代码仓库, MSBuild,TortoiseSVN 持续集成这种工具很多了,Jenkins比较常用,他的原理就是一个服务,有一 ...

  8. Linux下EclipseCDT工程和TFS的持续集成CI实践

    在Linux下使用TFS自动构建,需要自动执行连接tfs服务器的操作,命令行文件包TEE-CLC-10.1.0.2011121402.zip,下载地址:http://www.microsoft.com ...

  9. 学习笔记——Maven实战(四)基于Maven的持续集成实践

    Martin的<持续集成> 相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订 ...

随机推荐

  1. Python实现将csv文件转化为html文件

    核心技术: Pandas 需要转化的csv文件(business.csv): 源代码: import pandas as pd f=pd.read_csv("business.csv&quo ...

  2. 对于vjudge在有些网络下无法打开的问题

    因为有些网络会屏蔽vjudge,所以打开 镜像网址 不行再试试这个:最新镜像网址

  3. 为什么Dapr是比SpringCloud和Istio更优雅的微服务框架?

    Dapr 是微软主导的云原生开源项目,2019年10月首次发布,到正式发布 V1.0 版本的不到一年的时间内,github star 数达到了 1.2万(现在已经超过1.7万星),超过同期的 kube ...

  4. Navicat 连接 MySQL

    目录 简述 新建连接 常见错误 简述 Navicat 是一套快速.可靠和全面的数据库管理工具,专门用于简化数据库管理和降低管理成本.Navicat 图形界面直观,提供简便的管理方法,设计和操作 MyS ...

  5. CVPR2022 | 重新审视池化:你的感受野不是最理想的

    前言 本文提出了一种简单而有效的动态优化池操作( Dynamically Optimized Pooling operation),称为DynOPool,它通过学习每一层感受野的最佳大小和形状来优化特 ...

  6. 【RocketMQ】NameServer的启动

    NameServer是一个注册中心,Broker在启动时向所有的NameServer注册,生产者Producer和消费者Consumer可以从NameServer中获取所有注册的Broker列表,并从 ...

  7. 【Redis】集群故障转移

    集群故障转移 节点下线 在集群定时任务clusterCron中,会遍历集群中的节点,对每个节点进行检查,判断节点是否下线.与节点下线相关的状态有两个,分别为CLUSTER_NODE_PFAIL和CLU ...

  8. 2022省选前联考 AVL树/平衡树

    题目描述 pks 得到了一棵 \(N\) 个节点,权值为 \(1\sim N\) 的 \(AVL\) 树,他觉得这棵树太大了,于是他想要删掉一些节点使得最后剩下的树恰好有 \(K\) 个节点.如果 p ...

  9. Android 12(S) 图像显示系统 - drm_hwcomposer 简析(下)

    必读: Android 12(S) 图像显示系统 - 开篇 合成方式 合成类型的定义:/hardware/interfaces/graphics/composer/2.1/IComposerClien ...

  10. 5-20 Web服务器和Nginx

    什么是Web服务器 简单来说 Web服务器就是一个能够接收http请求并作出响应的java程序 我们再二阶段编写的webServer项目其实就是我们手写的Web服务器 我们现在开发的标准SpringB ...