作为软件开发人员,最终目标是将我们的工作部署到生产中。敏捷开发、DevOps和持续部署工具都让这个过程更加快速和便捷。重要的是,软件部署更像是一个过程而不是单个事件。作为这一过程的一部分,您需要监控生产服务器和应用程序,以确保一切运行顺利。
在本文中,我们将讨论在软件部署期间应该监视的8个关键项目。
1. 了解错误率
应用程序错误是识别应用程序问题的第一道防线。开发人员收集所有服务器上的所有错误来监视它们。在部署期间,被监视的错误尤其重要,可以快速发现新的应用程序问题。
在部署期间,应用程序错误也会造成很大的困扰。作为部署的一部分,应用程序在中途重新启动也是很常见的,但这可能会导致很多瞬态错误,如SQL连接问题、线程中止异常,以及其他一系列问题。
2. 比较Web流量和页面加载时间
您的应用程序获得了多少流量?正常的页面加载时间是多少?这些是在部署之前和之后应该监视的关键指标。如果你突然得到或多或少的流量,可能是某个地方出错了。
流量大幅度下降可能意味着用户正在获取错误的、无法进一步导航到您的应用程序中的其他页面。这个问题也有可能在甚至没有部署的应用程序时就体现出来。例如,如果您的应用程序使用微服务体系结构,或进行大量内部HTTP Web服务调用,则新的部署可能会将下行流量显着改变为其他应用程序。
3. 关注您的Apdex或客户满意度分数
监控您的应用程序的apdex分数或客户满意度分数是保持应用程序执行情况的好方法。Stackify Retrace自动将其作为客户满意度得分进行追踪。这个分数是基于多少网络请求是快速或缓慢的。这是一个简单的数学公式,可以帮助您了解软件的整体性能。
在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. 内部通信
通信是成功软件部署的关键之一。在Stackify中,依赖Slack作为我们公司内所有沟通的核心枢纽。
我们有一个#deployments Slack频道,任何人都可以监控,以确切知道在部署之前、部署期间和部署之后发生了什么。我们还通过Bamboo使用自动化的Slack警报,用于部署。当我们在Stackify进行部署时,我们必须先将SQL更改脚本推送到超过1000个数据库,还必须部署多达10个不同的Web和后台服务应用程序来运行我们的基础架构。
8.回归测试
在推出新代码之后,最好做一些最终的回归测试。这可以通过自动综合测试。即使使用了Retrace这样的工具来完成应用程序的监视,但是最终做一些其他回归测试更为保险。
许多企业也都有完整的流程进行发布验证和回归测试。他们将重新运行在QA中运行的许多测试。在与客户沟通修复已经部署之前,重新测试在版本中应该修复的错误也是很常见的。
如果你有自动化测试,那么监控它们肯定适用于这篇文章。即使你不这样做,一定要监视Slack以确保所有最终的回归和验证测试都通过。
写在最后
软件部署是我们共同努力工作的最终结果。由于随时可能会出现的错误代码而导致的风险,因此任何时候使用相关软件等解决方案监视软件非常重要。这可以帮助您快速确定何时出现新问题或错误率、性能和其他方面的关键指标异常。
本文由威海网络公司半岛科技整理发布