「数据库」微服务化的基石——持续集成( 二 )


要是不没事儿就组合一下 , 天知道几个月以后还能不能合的起来 。
别忘了程序是人写的 , 你和你媳妇长时间不沟通都对不上默契 , 别说两个程序员了 。
二、持续集成就是不断的尝试在一起集成就是在一起 。
「数据库」微服务化的基石——持续集成
本文插图
集成的逻辑
为什么需要一个统一的代码仓库Git来做代码管理呢?是为了代码集成在一起 。
为什么需要进行构建build呢?就是代码逻辑需要集成在一起 , 编译不出错 。
为什么要单元测试呢?一个模块的功能集成在一起能够正确工作 。
为什么需要联调测试Staging环境呢?需要将不同模块之间集成在一起 , 在一个类生产的环境中进行测试 。 最终才是部署到生产环境中 , 将所有人分开做的工作才算真正的合在了一起 。

「数据库」微服务化的基石——持续集成
本文插图
持续集成解决的问题
持续集成就是制定一系列流程 , 或者一个系列规则 , 将需要在一起的各个层次规范起来 , 方便大家在一起 , 强迫大家在一起 。
三、持续集成 , 持续交付 , 持续部署 , 敏捷开发 , DevOps都啥关系?这些概念都容易混淆 , 他们之间是什么关系呢?
「数据库」微服务化的基石——持续集成
本文插图
持续集成 , 持续交付 , 持续部署 , 敏捷开发 , DevOps的关系
敏捷开发Agile是一种开发流程 , 是一种快速迭代的开发流程 , 每个开发流程非常短 , 长到一个月 , 短到两个星期 , 就会是一个周期 , 在这个周期中 , 每天都要开会同步 , 每天都要集成 。 正是因为周期短 , 才需要持续的做这件事情 , 如果一个开发周期长达几个月 , 则不需要持续的集成 , 最后留几个星期的集成时间一起做也是可以的 , 但是这样就不能达到互联网公司的快速迭代 , 也是我们常常看到传统公司的做法 。
持续集成往往指对代码的提交 , 构建 , 测试的过程 , 也就是上述的在一起的过程 。
持续交付是指将集成好的交付物 , 例如war , jar , 或者容器镜像 , 部署在联调环境 , 或者预发环境的过程 。
持续部署是指将交付物持续部署在生产环境的过程 。
我们常说CICD , CD有时候指的是Delivery交付 , 有的是指Deployment部署 , 对于非生产环境 , 自动部署是没有问题的 , 对于生产环境 , 往往还是需要有专人来进行更为严肃的部署过程 , 不会完全的自动化 。
接下来就是DevOps , DevOps不只是CICD , 除了技术和流程 , 还包含文化 。 例如容器化带来的一个巨大的转变是 , 原来只有运维关心环境的部署 , 无论是测试环境 , 还是生产环境 , 都是运维搞定的 , 而容器化之后 , 需要开发自己写Dockerfile , 自己关心环境的部署 。 因为微服务之后 , 模块太多了 , 让少数的运维能够很好的管理所有的服务 , 压力大 , 易出错 , 然而开发往往分成很多的团队 , 每个模块自己关心自己的部署 , 则不易出错 , 这就需要运维一部分的工作让研发来做 , 需要研发和运维的打通 , 如果公司没有这个文化 , 研发的老大说我们不写Dockerfile , 则DevOps是搞不定的 。
四、从一个持续集成的日常 , 看上述的几个概念如何实践
「数据库」微服务化的基石——持续集成
本文插图
持续集成的流程
这是一个持续集成的流程 , 但是运行起来更加的复杂 。
首先 , 项目开发的流程使用的是Agile , 用常见的Scrum为例子 。

「数据库」微服务化的基石——持续集成


推荐阅读