专栏首页互联网运维杂谈我们如何把持续部署化繁为简的|优维

我们如何把持续部署化繁为简的|优维

在之前的文章中{持续发布的三种反模式及解决方案}提到了持续部署的三种反模式及几种实现。在更早期的文章中介绍了{可视化持续部署系统的设计与实现}里面也详细介绍了持续部署系统的设计与实现细节。或许在之前的文章中大家看到的依然是一个复杂的持续部署系统,那接下来看看我们是如何进一步简化的?适应一切是我们这次设计持续部署的目标。

一、我们似乎都忘了什么

我们忘了什么?我们忘了别人的经验,忘了别人基于经验的总结。这个地方想说的是RPM包,打开RPM包的一个概念描述图。里面的内容如下:

A、描述部分,Description。包的名称/版本/安装的路径/权限等等。

B、动作部分,Action。里面定义了很多种动作,比如说Build,Prep(准备),编译(Configure),安装(Install)等等。

C、文件部分,Files。这是Action要操作的基本对象,比如说文件的构建转化/文件的移动。注:不建议拿源码包到现网编译。Build Once,Run Anywhere应该是我们需要秉持的持续部署核心理念。

我们把Action部分提炼成事件流,等同于程序在执行安装/升级/回滚的时候都由这一连串的Action组成,形如:

对事件流的使用,也要注意,不要有自定义RPC的调用产生,除了构建依赖库动作,不建议有其他的远程调用,比如说到监控系统中屏蔽升级告警。这样做非常不利于控制其中的异常,更多的是把它作为一个执行流能过顺序执行下去,其中的异常由后一部分的去感知,比如说构建库获取不到,则程序编译异常。

试想一下,如果把这套东西可视化出来,是不是能够达到我们的应用部署的要求呢?事实证明是必然的,但需要根据我们的现实情况来去繁就简。

我们把一个应用包拆解开来,就能看到我们的持续部署系统需要管理的对象属性是哪些,其实能看到几个关键维度信息:

A、目录规范/权限规范/日志规范/运行规范。在之前的规范中都已经有解释过了。

B、管理规范。包括应用包的版本规范/应用包关联的环境管理/应用包仓库管理/增量升级/全量升级等等。

C、监控规范。程序异常了如何处理?日志的异常如何处理?可以从源头上控制无效告警的产生。

二、以应用为中心的持续部署实现

一定要把你管理的对象和应用关联起来,否则未来数据无法有效的整合。到Host级别的管理太粗了,特别是到小的企业中,机器复用太严重,一台机器跑十几个应用都是正常。应用的命名采用多级结构,从业务集-》业务-》应用等来级别来定义。

三、持续部署系统的可视化实现

涉及到应用包管理的各个部分都需要在界面上可视化管理起来。比如说:

A、应用包的可视化启动/停止/重启/卸载等等。

B、可视化版本管理,可以在线修改任意文件。可以直接从Jenkins构建过程中Hook,然后推送构建包直接进入到版本仓库。

C、对事件流的Action提供可视化的封装,暂且只支持shell,没有支持更多的语言,比如说python,考虑对包的管理,shell的能力足够了,另外尽量减少对系统环境的依赖。提供了一些内置变量,提高编程效率。

D、可视化环境管理和配置管理。对环境的属性进行任意维度的扩充和管理,同时把配置文件的管理和环境进行关联。

从以上界面可以看出,我们把持续部署实现得非常简单,从目前多家客户的使用来看,对各种语言,各种场景,各种业务都完美支持。

但实现应用包的持续部署还远远不够,我们下个月会推出一键化运维调度平台,无缝对接各种服务和作业,用一个流程引擎服务来驱动业务级,多应用的自动化变更/调度等等。

本文分享自微信公众号 - 互联网运维杂谈(waynewang_ops)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Serverless 架构与深度实践:盒马、天猫超市背后的服务开放体系

    2009 年,伯克利以独特的视角发布了一篇文献,定义了云计算,十年过去了,这篇文章被引用无数,其中的观点更是当下最好的见证,比如按需计算的表现形式、消除云用户的...

    奋斗蒙
  • Centos7 编译安装Nginx

    注:本文转自译:Centos7 编译安装Nginx 教程,如需转载请注明出处,https://www.cnblogs.com/zhuchenglin/p/117...

    lin_zone
  • Python3.8 了解的差不多了吧,Python3.9 新特性了解一下!

    目前官网只有 3.8 的下载包,3.9 需要自己编译 Cpython,可以参考我之前的文章里面有编译部分的内容,教你阅读 Cpython 的源码(一)

    CDA数据分析师
  • 图说jdk1.8新特性(5)--- 编译器新特性

    SecondWorld
  • Vivado OOC综合方式

    本质上,OOC(Out-of-Context)综合是一种自底向上(Bottom-up)的综合方法,可以应用于IP、IPI(IP Integrator)的Bloc...

    Lauren的FPGA
  • Centos7源码编译安装PHP7.2(生产环境)

    注:本文转自详解Centos7源码编译安装 php7.2之生产篇,如需转载请注明出处https://www.cnblogs.com/zhuchenglin/p/...

    lin_zone
  • vue-cli脚手架 快速搭建vue项目环境

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • 说说提高Python运行效率的技巧?

    答:不喜欢Python的人经常会吐嘈Python运行太慢。今天具体来说一下提高python执行效率的方法,下面给大家介绍10种方法 。

    用户1564362
  • SCSS的特点

    使用scss时候在所在的style样式标签上添加lang=”scss”即可应用对应的语法,否则报错

    wust小吴
  • npm 及vue,router,webpack安装 快速起步

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡

扫码关注云+社区

领取腾讯云代金券