赵成的运维体系管理课
赵成
蘑菇街平台技术总监
立即订阅
5576 人已学习
课程目录
已完结 48 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 带给你不一样的运维思考
免费
应用运维体系建设 (11讲)
01 | 为什么Netflix没有运维岗位?
02 | 微服务架构时代,运维体系建设为什么要以“应用”为核心?
03 | 标准化体系建设(上):如何建立应用标准化体系和模型?
04 | 标准化体系建设(下):如何建立基础架构标准化及服务化体系?
05 | 如何从生命周期的视角看待应用运维体系建设?
06 | 聊聊CMDB的前世今生
07 | 有了CMDB,为什么还需要应用配置管理?
08 | 如何在CMDB中落地应用的概念?
09 | 如何打造运维组织架构?
10 | 谷歌SRE运维模式解读
11 | 从谷歌CRE谈起,运维如何培养服务意识?
效率和稳定性最佳实践 (20讲)
12 | 持续交付知易行难,想做成这事你要理解这几个关键点
13 | 持续交付的第一关键点:配置管理
14 | 如何做好持续交付中的多环境配置管理?
15 | 开发和测试争抢环境?是时候进行多环境建设了
16 | 线上环境建设,要扛得住真刀真枪的考验
17 | 人多力量大vs.两个披萨原则,聊聊持续交付中的流水线模式
18 | 持续交付流水线软件构建难吗?有哪些关键问题?
19 | 持续交付中流水线构建完成后就大功告成了吗?别忘了质量保障
20 | 做持续交付概念重要还是场景重要?看“笨办法”如何找到最佳方案
21 | 极端业务场景下,我们应该如何做好稳定性保障?
22 | 稳定性实践:容量规划之业务场景分析
23 | 稳定性实践:容量规划之压测系统建设
24 | 稳定性实践:限流降级
25 | 稳定性实践:开关和预案
26 | 稳定性实践:全链路跟踪系统,技术运营能力的体现
27 | 故障管理:谈谈我对故障的理解
28 | 故障管理:故障定级和定责
29 | 故障管理:鼓励做事,而不是处罚错误
30 | 故障管理:故障应急和故障复盘
31 | 唇亡齿寒,运维与安全
云计算时代的运维实践 (6讲)
32 | 为什么蘑菇街会选择上云?是被动选择还是主动出击?
33 | 为什么混合云是未来云计算的主流形态?
34 | Spring Cloud:面向应用层的云架构解决方案
35 | 以绝对优势立足:从CDN和云存储来聊聊云生态的崛起
36 | 量体裁衣方得最优解:聊聊页面静态化架构和二级CDN建设
37 | 云计算时代,我们所说的弹性伸缩,弹的到底是什么?
个人成长 (5讲)
38 | 我是如何走上运维岗位的?
39 | 云计算和AI时代,运维应该如何做好转型?
40 | 运维需要懂产品和运营吗?
41 | 冷静下来想想,员工离职这事真能“防得住”吗?
42 | 树立个人品牌意识:从背景调查谈谈职业口碑的重要性
加餐 (4讲)
划重点:赵成的运维体系管理课精华(一)
划重点:赵成的运维体系管理课精华(二)
划重点:赵成的运维体系管理课精华(三)
新书 |《进化:运维技术变革与实践探索》
结束语 (1讲)
结束语 | 学习的过程,多些耐心和脚踏实地
赵成的运维体系管理课
登录|注册

20 | 做持续交付概念重要还是场景重要?看“笨办法”如何找到最佳方案

赵成 2018-02-11
上期文章中我们讲到,在经过严格的依赖规则校验和安全审计之后,构建出的软件包才可以部署发布。
在开发环境、项目环境、集成测试环境以及预发环境下,我们还要进行各类的功能和非功能性测试,最后才能发布到正式的生产环境之上。
通常状况下,做一次软件版本发布,必须经过以下几个环境(如下图所示)。需要明确的是,项目环境和“小蘑菇”(内部叫法)环境,只有特殊版本才会配备,这里我们不做强制。
上述这些环境我们在之前都介绍过。而历经如此多的环境,高效的自动化持续部署和发布就变得尤为重要。
特别是最后的线上发布环节,还需要确保业务连续稳定、无间断,所以,在复杂的微服务架构环境下,我们对软件的发布策略选择、自动化程度和稳定性要求就更高了。
今天,我们一起看看整个流水线软件部署和发布的细节。

软件的持续部署发布

这里,我们直接以生产环境的发布过程来讲解。软件的部署发布,简单来说就是:
将构建完成和验证通过的应用软件包,发布到该应用对应环境下的 IP 主机上的指定目录下,并通过应用优雅上下线,来实现软件最新版本对外提供服务的过程。
这个过程会包含的环节,我以图示整理如下:
我们可以看到,软件部署发布,听上去就是把软件部署一下,然后启动起来。这样的操作方式对于单体架构软件没有问题,但是在微服务架构下就满足不了要求了。
单体架构软件启动起来就可以提供服务,但是对于微服务应用,无论停止还是启动,都需要考虑到对周边其它依赖和被依赖应用的影响才可以,考虑的点也就相对较多。
我们针对单机发布,分环节来看一下:
1. 从 CMDB 中,拿到线上生产环境下的应用主机 IP 列表去对应关系,目的是要将软件包发布到应用对应的 IP 主机上。
2. 检查每台机器上的服务是否正常运行,如果是正常服务的,说明可以发布,但是服务本身异常,就要记录或跳过。
3. 下载 war 包到指定目录。这里要依赖前期我们介绍的应用配置管理,在这一步要获取到该应用的源代码目录。
4. 关闭该应用在这台主机上的监控,以免服务下线和应用终止产生线上错误告警。
5. 优雅下线。RPC 服务从软负载下线,如果该应用还提供了 http 的 Web 调用,就需要从 Nginx 这样的七层负载下线,下线动作均通过 API 接口调用方式实现。
6. 下线后经过短暂静默,重启应用。对于 Java 应用来说,重启时可以自动解压,启停命令等还是之前从应用配置管理中获取响应路径和命令脚本名称。
7. 优雅上线,进行健康监测,检查进程和应用状态是否正常,如果全部监测通过,则开始上线服务,开启监控。
上述是一个应用的单机发布过程,过程比较长,但是可以看出,每个环节并不复杂。这里我们需要注意两个关键点:
针对场景,进行细分,这样就可以化整为零,把一个乍看上去很复杂的过程,分解成一个个可执行的步骤。
与服务化的软负载和注册中心进行交互,确保应用是可以优雅上下线的,而不是简单粗暴地启动和停止。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《赵成的运维体系管理课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(2)

  • τ
    在版本发布中遇到失败一般会采用回滚,可是新发布的版本涉及到了数据表结果已经部分字段的数据初始化,回滚的时候也需要相应的反向操作。在这一点上一般你们会用flyway这样的数据迁移工具嘛?还是会采用别的方式来对待回滚操作?另外在多版本(小版本)兼容的情况下的发布操作流程会有什么细节上的变化嘛?
    2018-05-03
    1
  • Tom
    我也想做一套持续交付的系统,像阿里云的云效,但感觉系统很庞大,开发难度大,有什么建议吗?

    作者回复: 云效是比较完备的一套持续交付体系,可以好好借鉴下,建议分步实施,先理清楚每个环节。

    当然,有条件用云上产品的话,建议直接用

    2018-03-07
    1
收起评论
2
返回
顶部