|
|
|
|
移动端

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

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

作者:陈峻编译来源:51CTO|2018-02-11 09:00


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

【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】

【编辑推荐】

  1. 干货分享 | 一位软件工程师的7年总结
  2. Subgraph:这款注重安全的发行版是恶意软件最大的恶梦
  3. 12306工程师解读春运抢票APP: 信软件不如信自己
  4. 人工智能将如何影响软件开发行业?AI替代不了有创造力的工作者
  5. 新思科技杨国梁:安全和质量应成为软件研发的首要因素
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

程序员教程(第2版)

本书按照人事部、信息产业部全国计算机技术与软件专业技术资格(水平)考试程序员考试大纲编写,是对2004版的修订版,内容包括计算机系统、...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊