读《大型网站技术架构》笔记 - 自动化发布及运维

摘抄:

在无人值守的情况下, 一切都可以自动化是网站的理想状态。目前大型网站的自动化架构设计主要集中在发布运维方面。

发布对于网站来说是头等大事, 许多网站故障出在发布环节, 网站工程师经常加班也是因为发布不顺利。通过减少人为干预, 使发布过程自动化可有效减少故障。发布过程包括诸多环节。自动化代码管理, 代码版本控制, 代码分支创建合并等过程自动化, 开发工程师只要提交自己参与开发的产品代号, 系统就会自动为其创建开发分支。后期会自动进行代码合并。自动化测试, 代码开发完成, 提交测试后, 系统自动将代码部署到测试环境, 启动自动化测试用例进行测试, 向相关人员发送测试报告, 像系统反馈测试结果。自动化安全检测, 安全检测工具通过对代码进行静态安全扫描及部署到安全测试环境进行安全测试, 评估其安全性。最后进行自动化部署, 将工程代码自动部署到线上生产环境。

此外, 网站在运行过程中可能会遇到各种问题: 服务器宕机, 程序bug, 存储空间不足, 突然爆发的访问高峰。网站需要对线上生产环境进行自动监控, 对服务器进行心跳检测, 并监控其各项性能指标和应用程序的关键数据指标。如果发现异常, 超出预设的阈值, 就进行自动报警, 向相关人员发送报警信息, 警告故障可能会发生。在检测到故障发生之后, 系统会进行自动化失效转移, 将失效的服务器从集群中隔离出去, 不在处理系统中的应用请求。待故障消除后, 系统进行自动化失效恢复, 重新启动服务, 同步数据保证数据的一致性。在网站遇到访问高峰, 超出网站最大处理能力时, 为了保证整个网站的安全可用, 还会进行自动化降级, 通过拒绝部分请求及关闭部分不重要的服务将系统负载降至一个安全的水平, 必要时, 还需要自动化分配资源, 将空闲资源分配给重要的服务, 扩大其部署规模。

说明

以上两段是我对原文的摘抄, 文章中也说明了是理想状态, 那么我就来说说我的看法:

我的工作时间不长, 但是就我的经历而言, 部署和运维的确经常成为加班的一个重要原因。最重要的是, 这些步骤可以通过脚本的方式实现自动化。就如文章中提到的那样, 代码的管理, 测试, 部署, 出问题之后的解决等等, 都可以自动化, 那么我的问题是, 应该从哪方面入手? 再写自动化处理错误的脚本时, 应该将自己想象成什么角色? 将该脚本的行为模拟成一个用户? 这个用户不停的对网站的所有服务进行访问(心跳检测), 想到这里我想明白了, 就是应该这样做, 将几个角色分别以脚本的形式对网站进行维护: 用户, 对网站的所有服务进行测试; 运维, 当用户测试出了问题时, 应当及时对出问题的服务器进行应急处理; 报警人员: 出问题时, 及时通知相关人员处理问题等等, 这样, 就可以让机器代替人类来做这些麻烦而且容易出错的事情了。


读《大型网站技术架构》笔记 - 自动化发布及运维
http://icecreamzhao.github.io/note/read_note/web-site-framework/auto-deploy-hot-update.html
作者
littleboyDK
发布于
2019年12月14日
许可协议