在生产环境中部署软件时需要监控的八件事八个方面。作为软件开发人员,我们的最终目标是将我们的辛勤工作部署到生产环境中。现在有了敏捷开发、DevOps和持续部署工具,我们已经能够使这个过程比以往任何时候都更快!但是,我们需要记住,软件部署更多的是一个过程,而不是单个事件。因此,作为流程的一部分,您需要监控生产环境中的各种服务器和应用程序,以确保每一步都顺利运行。在本文中,我们将讨论您在软件部署期间应监控的八个关键方面。1.了解您的错误率编程错误是识别应用程序问题的第一道防线。因此,在监控范围内的所有服务器上,开发者需要收集所有发生的错误。这些错误将有助于查明部署新软件应用程序时出现的问题。当然,它们在部署过程中也会产生很多“噪音”。例如:在部署的过程中,应用中途重启是很常见的。因此,这些会导致大量的,例如:SQL连接问题、线程中止异常和其他类型的短暂错误。提示:在部署之前,了解应用程序的标准错误率非常重要。这样可以判断部署后各种问题是否在上升,或者是否还保持着正常的错误率。提示:寻找您以前从未见过的那些新的应用程序错误。有趣的是,这些新的空引用异常、SQL超时或其他错误会随着新部署而出现。因此,您需要快速找到它们并准备好修复它们。注意:请注意由您的代码本身记录的应用程序异常生成的HTTP4XX和5XX错误。2.比较网络流量和页面加载时间您的应用消耗了多少流量?它的平均页面加载时间是多少?这些是您在部署前后应监控的关键指标。如果你突然遇到大量传入或传出数据,那么一定是某个地方出了问题。通常,这种高流量涌入意味着用户遇到错误并且无法导航到应用程序中的其他页面。这也会降低您网站的整体用户体验。有时,甚至在您开始部署之前,这些类型的问题就会在应用程序中显现出来。例如:如果你的应用使用了微服务架构,或者使用了大量的内部HTTPWeb服务调用,那么在新的部署中,下游到其他应用的流量会有明显的变化。因此,请密切注意他们的流量水平,以确保没有发生显着变化。3.跟踪您的应用程序性能指标或客户满意度分数监控您的应用程序性能指标或客户满意度分数是掌握其健康状况的一种很好的“脉搏”方式。Stackify的Retrace产品可以自动跟踪客户满意度分数。这些分数是基于各种网络请求的响应效率,即有多少是快的、停顿的、慢的和失败的。通过简单的数学公式,可以帮助您了解软件的整体性能。可见,请求跟踪是业界的通行做法。使用Stackify,我们的目标是达到99%的评级。对于需要持续监控的指标,您可能会发现在部署过程中分数会略有下降。没关系,只要你能保证部署后分数恢复到正常水平即可。4、服务器数量、负载、CPU使用率即使服务器部署到云端,CPU使用率和服务器整体负载仍然是不可忽视的因素。有时小的代码更改会导致CPU使用率和整体性能的巨大差异。这种现象在可以跨多个服务器扩展的应用程序中尤为明显。举个例子:我们在一个地方对一些代码的调整,会直接导致另一个地方服务器整体数量的减少。因此,密切关注运行应用程序所需的服务器数量,以及每台服务器上的CPU负载及其使用情况非常重要。5.数据库和SQL查询的性能如果应用程序使用了SQL数据库,那么你的每一次部署都需要考虑所使用的SQL数据库的各种变化因素,包括:新的SQL查询和对现有查询的修改等。你应该跟踪频繁使用的SQL查询和数据库服务器上相应的大量资源使用。请记住:有时,即使是对SQL查询的轻微修改也会导致严重的性能瓶颈!6.与应用程序依赖性相关的各种性能如今,各种应用程序具有广泛的相互依赖性,包括:SQL和NoSQL数据库、缓存、队列、存储和HTTPWeb服务。因此,密切关注所有这些依赖项的性能状态非常重要。与此相关的常见服务包括:Redis、Elasticsearch和MongoDB。同样,即使是对应用程序代码的轻微修改也会导致生产环境(例如Redis或HTTPWeb服务)的性能发生重大变化。因此,当发生重大变化时,请注意部署前后的性能差异。7.内部沟通(Slack)成功部署软件的一个关键要素是沟通。使用Stackify,我们严重依赖Slack作为公司内部各种通信的中心,当然还有部署。我们将有一个#deploymentsSlack频道,任何人都可以在其中监控部署前、部署期间和部署后的确切状态。同时,我们也可以在部署过程中使用Bamboo的自动化Slack警告提醒功能。众所周知,软件部署并不是简单的一键推送。例如,如果使用Stackify进行部署,我们首先要向1000多张数据表推送各种SQL变更脚本。之后,我们还必须在我们的架构中部署10个不同的Web和后台服务应用程序。可以看出这是一个相当耗时的过程。因此,跨Slack渠道进行有效沟通将有助于项目团队中的每个人保持同步。任何想要监控某个进度的人都可以随时跟踪它。8、回归测试在完成新代码的推送之后,我们有必要进行一些高级的回归测试。它们可以是自动化综合测试,也可以是我们自己运行的快速测试。对我自己来说,即使我全程使用Retrace这样的工具来监控我的申请,我也会自己登录,在一些关键页面上四处点击,以获得心理安慰和技术确认。当然,许多组织也有自己的一套流程来验证发布和执行回归测试。他们通常在QA阶段反复进行多轮测试。同时,在通知客户部署各种补丁之前,他们通常会对各种bug的修复效果进行反复测试。如果您已经进行了自动化测试,那么监视它们正是本文所涵盖的内容。如果没有,请务必通过Slack的监控,顺利完成各种最终的回归测试和验证。总结软件部署是对我们努力工作的考验。但其错误代码所蕴含的潜在风险,也会让我们倍感压力。因此,我们非常有必要对软件进行全程监控。通过使用像Retrace这样的解决方案,我们将能够快速定位新出现的问题并量化错误率、性能等方面的异常。原标题:8ThingstoMonitorDuringaSoftwareDeployment,作者:MattWatson
