据 Github 2021 年度报告显示,目前 Github 用户数已超 7300 万,中国 Github 开发者 755万,开源吞噬世界的当下,越来越多中国开发者和企业积极参与开源建设。
有一位从事开源 10 多年的从业人员,戏称自己为未来希望成为三线城市艺术家,打造“田园程序猿的乌托邦”。抱着对开源的热情,为国内开发人员和 DevOps 人员提升开发、上线、运维的效率,建木团队研发并开源了“建木”。他就是九州云的联合创始人章津楠,为什么他这么说?“建木”具体是什么项目?
“建木”萌芽
“建木”是基于九州云多年来在项目上的思考与实践:
时间滑回 2015 年,九州云为征信中心研发测试云咨询和落地实践项目时,当时团队的设计方案是从底层基于 OpenStack 的IaaS私有云的构建,到上层基于 Jenkins 的CI/CD流水线,在实践的过程中体会到了 DevOps 的优美和不足,并开始从开发者视角来审视 DevOps,内心埋下自研“建木”的种子。
2018 年,九州云参与金融机构的自动化运维项目,通过从运维人员视角的思考来从业务的角度理解 DevOps 对运维人员的价值,更加理解金融领域对 DevOps 的述求和管理者视角——稳字当头的“敏捷”。“建木”种子在实践的土壤里默默潜伏,于 2020 年真正萌芽起来。
伴随云计算的快速发展,如何自动化运维和管理云 IT 设施成为企业新的技术挑战,随着九州云业务飞速迭代,九州云本身同样面临人员危机。通过对自身“能不能自己革自己的命”,让 DevOps 更简洁,自研工具并在其上搭建需求场景,将业务流程固化,提高运维效率,从而赋能开发、运维人员。2020 年底,“建木”应用而生。得益于九州云一直以来的开源经验,从诞生的第一天起,建木便决定以开源的形式回馈社区。
建木优势:简洁、流程配置可视化
传说中,“建木”是上古先民崇拜的一种圣树,是用作沟通天地人神的桥梁,伏羲、黄帝等均通过这梯子上下往来于人间天庭。《淮南子·墬形训》曰:“建木在都广,众帝所自上下。日中无景,呼而无响,盖天地之中也。”
因此建木团队希望“建木”成为开发人员、运维人员在不同业务场景下相互沟通的桥梁。建木以触发器、流程编排、任务分发等功能为平台核心,支持 SDK 管理、密钥管理、统一日志、统一存储、统一认证等服务,应用在 CI/CD、DevOps、自动化运维、多业务系统集成等场景中。目前建木已应用在九州云真实业务中。
从技术架构上,建木分为任务执行层、流转分发层、概念定义层、支持服务。
任务执行层:执行器管理和任务执行过程管理,目前建木项目会提供一些默认的执行器,社区的开发者也可以通过自身的需要扩展自己的执行器。后续建木项目也会提供一些更有意思的任务节点,现在以建木Hub的形式对外提供。
流转分发层:自研流程引擎,分发层根据触发器来触发流程的执行和执行过程中的分发策略的控制,来对所有的流程(或者 pipeline)的任务根据任务优先级、任务类型、执行器使用率等情况进行合理的分发和调度。
概念定义层:对任务通过流程的方式进行定义,考虑到在建木CI 场景中会比较多的采用pipeline 的形式出现,支持 pipeline 模式的定制。为了更加便于开发者使用,自定义了一整套以 YAML 为基础的 DSL,方便用 git 等版本管理工具对流程进行统一的版本管理,从而实现GitOps。
支持服务:包含自动化集成会使用的统一认证、秘钥管理、SDK 管理等基础支撑模块。
建木官网采用中国式的卷轴形式打开,官网介绍了配置即代码,提供声明式语法将流程代码化,通过代码库进行版本控制,快速实现幂等部署与故障恢复:
建木项目流程配置可视化,让任务编排与执行状态一目了然:
采访过程中快速演示了如何使用建木,通过简单在建木配置语句,就可在 IM 软件自动发布一条群消息。目前建木进入木兰开源社区孵化,并在 Gitee 上托管,感兴趣的同学可以下载使用:jianmu(建木): 建木持续集成平台基于建木,致力于为国内开发者与DevOps人员提供极致用户体验,提升开发、上线、运维的效率,让软件用户专注于提供业务价值。https://gitee.com/jianmu-dev
未来发展
谈及后续发展推广,章津楠表示,一是以产品的方式在社区推广使用,二是坚持开源,让用户以简洁地方式打开,不断吸引和积累用户。
建木团队的愿景是希望建木像组成物质的原子、组成DNA的基因、组成数字字节那样成为IT服务的一个个积木,开发者或者软件使用者可以像乐高积木一样创造自己都为止惊叹的“艺术品”。让 更多 IT 从业人员从体力劳动解放出来,从而真正实现田园程序猿的乌托邦——写代码是一种创作。
通过建木项目我们发现,作为国内较早一批提供开放云边基础架构技术开发和服务的九州云,以“开源·赋能云边变革”为核心,今年对外推出 Skyline、建木等开源项目,同时积极参与OpenStack、StarlingX、Kubernetes、OpenNess以及EdgeGallery等开源社区建设,不断在云计算及边缘计算领域建立深厚的技术储备和开源贡献。