写点什么

我们实施 DevOps 的挑战之二 -- 配置文件的困惑

  • 2020-04-17
  • 本文字数:1821 字

    阅读完需:约 6 分钟

我们实施DevOps的挑战之二 -- 配置文件的困惑

在上一篇中谈到了「敏捷文化」,很多朋友质问我,上来就谈所谓“文化”太虚了吧,这不像你的风格啊。可我想说的是,在 DevOps 的路上,每天让我们感到最困难的,其实不是技术攻关,也未必是业务场景,而恰恰是敏捷思路与传统观念的转变。


技术,可以一针见血,无非出血量的多少罢了。


思路,只能慢慢培养,和谈恋爱其实差不多,开房很容易,但能一见面这就结婚吗?当然,这也可以,这却增加了离婚的可能性。


其实没什么,就是写写心得罢了。


当然,这种回复被身边的朋友叫做「这 B 装的我们给 100 分」「说不过你」。对此我来了个广告「请关注下一篇」。


没有 DevOps 之前,配置文件是怎么玩的呢?


在「群雄割据」的时代里,通常一个 Jar 或一个 War 就可以打天下,以 Spring+properties 为例,对配置文件的适用场景基本可分为两种类型:


配置文件位于 classpath 下


使用 spring 的 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer 类加载 Properties 配置文件,通过源码可以知道,默认加载的是 classpath 下的文件,配置如下:



如果有多个配置文件加载,则:



配置文件位于外部目录


但是对于外部目录的配置文件,使用 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer 也是可以加载的,不过要修改他的路径配置方式,如下:



这样就可以成功加载外部目录的配置文件了,${user.dir}是系统变量,指用户当前目录所在。


当我们从「群雄割据」来到「天下一统」的时期后,虽然 DevOps 提升了交付效率,越来越满足快速试错的原则,可随之而来的「技术污染」却与日体现:


…………


配置文件的版本如何与程序版本对应?


配置文件的管理如何更加简便?


配置文件的修改该有谁来操作?


配置文件的更新是否可以不影响正常服务?


…………


无论哪一项污染,只会与 DevOps 扯上关系,都是让人头痛不已。


撸起袖子,不要怂,咱们搞个配置中心吧。


有了 DevOps 之后,配置文件又是怎么玩的呢?


其实想通过 DevOps 获得业务收益,无论从哪个环节启动,都将是一场持久战。


随着系统产品化的改造,通过 DevOps 流水线的快速交付通道,任何一个交付版本都可以通过 CI 与 CD 环节后,利用自动化部署工具,轻松地完成升级或发布;


这段看似美妙的诱惑,首先挡住去路的,就是配置文件的使用与加载方式。


如果不将配置信息外移至配置中心,在 DevOps 中会出现哪些问题呢?


维护成本:系统拆分了更细了,增添 CI 与 CD 环境后,每个应用在每个节点下,都需要在本地维护一套完整的配置文件;


操作风险:配置修改随意,无操作痕迹,易出错;


版本需求:一切皆产品,一切皆版本,配置文件如何解决版本化控制问题?



图 1:配置中心在 DevOps 快速交付通道中


你不是常说你们的场景都是持续污染的吗?谈谈如何在污染环境下接入吧


的确,在整个接入过程中可以说是一波三折,原因很简单,之前「群雄割据」时期的每一位诸侯都有自己玩转配置的一套方案,现在你说统一就统一?


无法满足我要求的,我不接


这话表面看起来有些生硬,不过想想挺有道理的,所以在配置中心的方案中,我们提出了“三种适配器,两种推进器”的理念。


三种适配器



图 2:适配器 Trade,满足原有使用 Properites 的诸侯们



图 3:适配器 Native,满足已使用过自研独立配置服务的诸侯们



图 4:适配器 Ccms,满足使用 Key/Value 的诸侯们


两种推进器



图 5:希望采用 “文件被动加载” 的诸侯们



图 6:希望采用 “Key/Value 实时推送” 的诸侯们


从某种角度来说,就算没有配置中心的存在,我相信 DevOps 的推进也会顺理成章,只不过相对不会如此平滑,或多或少给未来造成风险


有了配置中心,诸侯们的确享受到了福利:


配置统一在服务端维护,同一环境下所有应用节点共享同一份配置;


配置控制台提供鉴权、操作日志等服务;


配置控制台实现了版本控制,修改的配置需要发布后生效,减少误操作;


配置发布后,实时通知应用端,无须重启即可使用;


配置版本支持一键回滚;


配置控制台实现了整体复制、导出、批量修改等功能;


写到这里,太阳出来了


每次在结束语中都会诉诉苦,不过年末的各种事项的确有点打乱节奏,写作时间也随之调整到了工作日的清晨 6 点-8 点之间,所以效率与质量也或多或少受到影响。


本文主要讲述围绕配置信息管理和使用在 DevOps 过程中的那点事,所以对配置系统自身的原理与技术实现并未做详细的描述,如对这块有兴趣,欢迎大家在留言区中提出,我将通过独立的整篇文章加以叙述。


本文转载自头哥侃码公众号。


原文链接:https://mp.weixin.qq.com/s/99SqnEe9MGKzSbtvVR6sog


2020-04-17 15:062406

评论

发布
暂无评论
发现更多内容

智能费用审核平台:赋能千行百业,重塑财务审查新生态

中烟创新

SvelteKit 最新中文文档教程(6)—— 状态管理

冴羽

vue.js 前端 React Svelte SvelteKit

Shopify API对接的部署

北京木奇移动技术有限公司

跨境电商 软件外包公司 shopify开发

大模型推理框架RTP-LLM Embedding技术揭秘

阿里技术

通过 INFINI Console 集中管理极限网关配置

极限实验室

console Gateway

面试场景题:如何设计一个抢红包随机算法

卷福同学

Java 面试 算法题

轻松获取海量数据?揭秘AI训练背后的两大神器!

陈老老老板

通用人工智能(AGI)在元宇宙中扮演什么角色?

PowerVerse

元宇宙 AGI #AIGC

烧掉 700 亿学费后,中国企业终于懂了:换软件才是真正的省钱

IPD产品研发管理

软件 信创 国产化替代 国产化软件

Hologres Dynamic Table快速入门

阿里云大数据AI技术

云计算 大数据 hologres 动态表

AI数字人的分类及特点

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI数字人

懒猫微服的 AI 硬件要来了,好期待

玄兴梦影

AI 私有云 NAS 懒猫微服 AI新品

群晖科技与东芝签署谅解备忘录,加强战略合作伙伴关系

新消费日报

两连发!文心大模型4.5及X1,上线千帆!

百度Geek说

百度 #大模型

AI数字人的开发流程

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI数字人

MHP和慕尼黑LMU发布《2025年工业4.0晴雨表》

财见

YZi Labs 谈对 Plume 的投资:利用区块链创造现实价值的典范项目

股市老人

Sections 多列混排

狼哥

HarmonyOS NEXT

10分钟部署!一文读懂NineData社区版强在哪里?

NineData

数据库、 NineData 对比工具 测评对比 NineData社区版

《Operating System Concepts》阅读笔记:p408-p448

codists

操作系统

NocoBase 本周更新汇总:优化表格区块的列和操作

NocoBase

开源 低代码 零代码 开发工具 版本更新

当AI渗透每个角落,效能管理如何变化?

思码逸研发效能

AI 研发管理 研发效能 研发效能管理 AI Agents

如何在Java程序中使用泛型

码语者

Java泛型

档案管理系统(源码+文档+讲解+演示)

深圳亥时科技

司库管理研修班:权威师资齐聚,共探数智转型之道

用友智能财务

AI 财经 会计

使用腾讯云HAI来打通DeepSeek的任督二脉

穿过生命散发芬芳

AI 产品 DeepSeek HAI应用服务器

金三银四快过去一半了,是时候加把劲了

王中阳Go

Go 金三银四 小鹅通

智慧人大系统(源码+文档+讲解+演示)

深圳亥时科技

仓储管理系统(源码+文档+讲解+演示)

深圳亥时科技

如何选择适合自己的LED显示屏:参数与选购指南

Dylan

LED显示屏 全彩LED显示屏 户外LED显示屏 led显示屏厂家 户内led显示屏

得物技术部算法项目管理实践分享

得物技术

#项目管理

我们实施DevOps的挑战之二 -- 配置文件的困惑_DevOps & 平台工程_头哥侃码_InfoQ精选文章