开发者学堂课程【ALPD 云架构师系列-云原生 DevOps36计:源代码管理及软件配置(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/82/detail/1270
源代码管理及软件配置(二)
内容介绍
一、代码讲解
二、Commit 讲解
三、无效 commit 产生的原因
四、疑问讲解
五、课后总结
四、疑问讲解
一个问题,就是软件配置也经常被修改。他改的比代码频繁,是否属于代码
明确回答:配置是另一种形式的代码
它其实就是代码,就是有可能在实际工作中,配置不是存在在仓库里的,可能是一个那个配置中心,可能是一个什么样的一个系统里面的,但是需要配置是就是一个代码。常见看一下配置,常常遇到比如说静态配置和动态配置,分成启动相关的配置和运行相关的配置,这么分类,是希望能够去比较容易去检视现在这些配置的对你的配置的站在目的的角度来说启动相关配置是说首先是构建到进项中,作为启动就传进去,就用到这个配置。
第二个就是启动之后它不再修改,所以不需要去动态进行它的变化。然后第三个,对这类配置的修改一般会生成新的容器或者是port,就是我一般会要重新创建一个容器。
然后第四个就是对运行中的服务一定要重启才能生效,就是不然的话这个配置是不生效的。以此类推到怎样的那个配置是启动相关的,比如说 DB 连接串连到哪个 DB上去,然后容器的 CPU 规格是多少,比如说有的应用是可以用 master 模式启动,可以用 server 模式驱动。然后第三个问题是 DNS 服务地址是什么,就是告诉连那另外一种运行相关的配置是它通常是通过监听某个服务或者文件来获取或更新的,比如说要看一下那个白名单是什么,去读一下白名单,然后这种第二就是它的配置的更新是不需要去修改容器和 port,就是我的更新是完全跟容器和port的没关系,它就更新了那个 DS 服务,诸如此类,认为是启动相关的配置。
第三个,运行中的容器一般要通过持续监听配置的变化,就是当有变化的时候应该能自动生效,就是要做到的一个能力。所以因此就是看下面的就是一些常见的级别,日记比较改善,比如说在大促的时候,要把它改成l级别,一般都是不打了。
然后第二个黑白名单是什么,比如说要对某一些IP做一个限制。第三个特性开关,开个特性开关。
第四个监控频率,比如原来可能是一分钟产业,现在改成一小时采用一次是这样的那这类配置,不希望去每次改配置都要去重启我的仪器重新做发布的。这个是运行相关的一个配置。其实站在使用的目的的角度来说进行分类
接来看一下就是 alpd-demo 应用里面与启动相关和运行相关的配置。
如图,是在启动的时候会去一个参数,所以说它是启动配置那另一个的话在服务里面,其实有一个通过 server 那个方式去注入到的那个管理里面的,然后这个东西它是从环境变量去运输渠道,所以它其实是一个运行的时候是这样的一个位置。
那从另外一个角度来去看一下,就是所以它有不同的层次是对镜像代码或者系统的层次,然后每一层它涉及到在关注的一个活动是不一样的,编码过程当中构建还是部署,就是越位越内存的配置修改成本是越高的。
其实这个这个箭头是从上往下的,如果如果是编码级别的改的话,要经过所有相应的阶段才能够上线,如果是运营阶段的话,其实是不需要走前面的部分的,所以如果是这个配置问题越内层那它的成本显然是越高的。
因为你要去改的都是相对来说偏静态的。那这里留了一个问题给大家,就说运行环境相关的配置应该属于哪一层,也就是说刚才的那那几层应该属于哪一层?
五、课后总结
那么先简单的回顾一下,普遍构建就是相同的源码,相同的环境,相同的构建脚本,结果产生了一致的软件视频,就是通过Dockerfile描述过这种环境,构建脚本运行环境,这一个另外一个构建的准确性大于构建的效率,还有另外一个one process,第二名产品输容器对降低定向的大小,还有另外一个按逻辑单库的这种首先代码库和我们代码组另外一个软件交付过程,其实等级是为了开发者,为了代码库的一个协作过程,还有按照SUV的这个原则来递交代码。 另外一个就是根据使用方式去跟这个驱动配置的硬件配置。
那另外一个就是说要把这个配置定义在外层,尽量的然后减少修改的一个成本,因为越外层成本越低,那么在今天基本上整个逻辑呢就是说我们要去交付一个东西,什么要标准要不可变,那标准的话通过容器的这种方式,容器定价的这种方采取标准化,那么另外不可变的话,因为终态是要保证这个稳定可预期的这个系统服务,所以说交互的这个制品希望它是不可变得一致的,所以说我们。希望在构建的依赖。另外一个构建环境,包括构建脚本,这些东西应该是确定性的,可以去对照一下,检查一下自己的。
那另外一个从代码那我构建的源头是从代码开始,那代码的组织应该是按什么样的一个方式来去组织。那另外一个呢就是说代码提交的话,我应该是按什么样的符合什么样的一些原则代码的服务的提交比,如说sla原则,那另外一个就是从配置的角度来说,配置有启动的配置和运行时的配置,那么怎么样最小化的修改配置的成本,应该尽可能让配置放在最外层。