软件生产环境部署中,你需要监视的八个方面

译文
开发
在本文中,无论你使用什么工具来部署软件,为了确保流畅进行,让我们一起看看用于监控的八个方面。

[[220216]]

【51CTO.com快译】引言:在本文中,无论你使用什么工具来部署软件,为了确保流畅进行,让我们一起看看用于监控的八个方面。

作为软件开发人员,我们的最终目标是让自己的辛勤工作能顺利部署到生产环境中。如今凭借敏捷开发、DevOps和连续部署工具,我们已经能够让此过程变得比以往更快速了!但是,我们需要记住的是:软件部署更是一个过程,而非单一的事件。因此,作为该过程的一部分,你需要监视生产环境中的各种服务器和应用程序,以确保每一步都能够平稳运行。

在本文中,我们将和你一起讨论在软件部署过程中应该监控的八个关键方面。

1.了解你的错误率

程序错误是识别应用程序问题的***道防线。因此,在所有监控范围内的服务器上,开发者需要收集出现的全部错误。这些错误将有助于准确定位那些在部署新的软件应用时出现的问题。

当然,在部署过程中,它们还会产生大量的“噪声”。比如:在部署的环节中,应用程序中途被重新启动是很常见的情况。因此,这些都可能会导致大量的,诸如:SQL连接问题、线程中止异常、以及其他类型的短暂错误。

提示:在部署之前,掌握自己应用程序的标准错误率是非常重要的。这样你就可以判断出在部署之后,各种问题是成上升趋势,还是仍然保持着正常的错误率。

提示:寻找那些你从未见过的、新的应用程序错误。有趣的是,那些新产生的、空的引用异常,SQL的超时,或其他出现的错误,都会随着新的部署而浮出水面。所以你需要迅速找到它们,并为修复它们做好准备。

注意:请重点关注那些通过你的代码本身所记录下来的、由应用程序异常所产生的HTTP 4XX和5XX的错误。

2.比较Web流量和页面加载时间

你的应用消耗了多少流量?其普通页面加载时间是多少?这些都是你应该部署之前和之后需要监测的关键指标。如果你突然碰到了大量的流入或流出数据,那么肯定是某处出了问题。

一般情况下,这种高额流量的涌入会意味着:用户碰到了错误,而且无法在你的应用程序中跳转到其他页面。这同样会降低你的网站的总体用户体验。

有时候你甚至还没有开始进行部署,这类问题就已经在应用程序自我显现了。例如:如果你的应用程序使用了微服务的架构,或是用到了很多内部HTTP的Web服务调用,那么在新的部署中,对于其他应用程序的下行流量则会有明显的变化。因此,请留心观察它们的流量水平,以确保不会发生显著的变化。

3.追踪你的应用性能指标或是客户满意度评分

监测你的应用程序性能指标或客户满意度评分,是掌握其运行状况的一种非常好的“号脉”方式。Stackify公司的Retrace产品就可以实现对客户满意度得分的自动跟踪。

这些评分是基于各种Web请求的响应效率,即有多少是快速、停滞、缓慢、以及失败得出的。通过简单的数学公式,它可以帮助你了解到软件的整体性能。可见,请求跟踪是业内的普遍实践模式。

使用Stackify,我们的目标是要使评分达到99%。通过那些需要持续监视的指标,你可能会发现在部署的过程中分数会略有下降。这并没关系,只要你能保证在部署之后,分数能够恢复到正常水平便可。

4.服务器的数量、负载和CPU使用率

就算部署到云端,CPU使用率和整体的服务器负载仍然是不可忽视的因素。有时候,略微的代码变更就会导致CPU使用率和整体性能上的巨大差异。这种现象在那些能够横跨多台服务器,以进行扩展的应用程序上尤为明显。比如说:我们对于某处一些代码的调整,就会直接导致在另一处整体服务器数量的减少。

因此,留意你所需要运行应用程序的服务器数量,以及各台服务器上的CPU负载和它们的使用率是非常重要的。

5.数据库和SQL查询的性能

如果应用程序用到了SQL数据库,那么你的每一次部署就需要考虑到所用SQL数据库的各种变更因素了,其中包括:新增的SQL查询和现有查询的修改等方面。

你应该持续跟踪那些被频繁使用的SQL查询和在数据库服务器上对应使用量偏大的资源。

记住:有时候,就算是对SQL查询的略微修改,也有可能会导致出现性能上的重要瓶颈!

6.各种与应用依赖性有关的性能

如今各种应用程序之间都有着广泛的相互依赖性,包括:SQL与NoSQL数据库、缓存、队列、存储、以及HTTP的Web服务等。因此,密切关注所有这些依赖性的性能状态是非常重要的。与此有关的常见服务包括:Redis、Elasticsearch以及MongoDB等。

同样地,就算是对应用代码的略微修改,也可能会导致在你的生产环境中,诸如Redis或HTTP Web服务的显著性能变化。因此,在有重大变更发生的时候,请你留意部署前后的性能差异。

7.内部通信(Slack)

软件部署成功的一个关键因素就是通信。如果使用Stackify,我们会在很大程度上依赖Slack作为公司内部的各种通信的中枢,当然也包括所进行的部署。

我们会有一个#deployments的Slack通道,任何人都可以籍此监控部署前、部署中和部署后的准确状况。同时,我们也可以在部署的过程中使用Bamboo的自动化Slack警告提醒功能。

众所周知,软件部署并非简单的一键推送。举例而言,如果使用Stackify进行部署的话,我们必须首先将各种SQL的更改脚本推送到超过1000个数据表中。之后,我们还必须在自己的架构内对10台不同的Web和后台服务的应用程序进行部署。可见,这是一个相当耗时的过程。

因此,在Slack的各个通道上进行有效的通信,将有助于项目组的每个人保持同步。任何人只要想监控的某个进展,就都可以进行随时追踪。

8.回归测试

在完成了新代码的推送之后,我们进行一些***的回归测试是很有必要的。它们既可以是自动化的综合测试,也可以是我们自己进行的快速测试。对我自己而言,即使用到了像Retrace这样的工具来全程监控自己的应用程序,我也会自己登录进去,在一些关键页面上四处点击一下,以求心理安慰和技术确认。

当然,许多组织也有自己的一整套流程去验证发布,并进行回归测试。他们一般会在QA阶段反复进行多轮测试。同时,在告知客户进行各种补丁的部署之前,他们通常也会针对各种bug的修复效果进行重复性的测试。

如果你已经有了自动化的测试,那么对于它们的监视正好适用于本文所涉及的内容。如果没有的话,请务必通过Slack的监视,来顺利完成各种最终的回归测试与验证。

总结

软件部署是我们努力工作的一次成果检验。但是其错误代码所包含的潜在风险也会让我们倍感压力。因此,我们持续对软件进行全程监控是非常有必要的。通过使用Retrace这样的解决方案,我们将能够快速定位新出现的问题,并能量化出错率、性能等方面的异常。

原文标题:8 Things to Monitor During a Software Deployment,作者:Matt Watson

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:庞桂玉 来源: 51CTO
相关推荐

2010-09-02 16:14:20

CSS布局

2018-04-21 10:00:24

IT管理

2014-03-18 11:08:07

2014-03-18 09:04:25

2015-09-17 09:01:26

创业智能硬件

2010-09-26 15:37:34

制定数据加密项目

2017-09-13 14:29:44

灾难恢复DRaaS迁移

2023-07-13 14:44:52

new Date()构造函数开发

2023-08-09 13:56:50

软件开发VS Code

2019-10-18 15:16:10

Redis数据库并发

2022-12-08 08:29:58

特征云计算操作系统

2023-03-24 15:59:20

2017-09-13 08:48:18

DRaaS供应商灾难恢复即服务

2009-12-03 17:18:19

软件路由器功能

2023-01-03 11:47:47

2023-12-31 19:11:26

2023-05-26 16:42:28

2022-12-01 16:53:27

NPM技巧

2023-05-30 14:16:00

开源项目Python

2021-09-01 09:10:43

UI设计师跳槽职场
点赞
收藏

51CTO技术栈公众号