新发布的根本生存装备
不像玩僵尸毁灭的场景,也不像辩论大刀对抗猎 枪,在Java的生产环境中问题是真实存在的,特别是在一个新的发布之后(有备无患嘛)。更进一步说,比起当时 将编码周期缩短至几周或是几天,甚至一天缩短多次,反而现在更容易陷入麻烦。为了避免这些麻烦,你需要完全理解新的代码会对你的系统产生什么影响。是否会 对原有的系统产生破坏?是否会让系统运行迟缓?怎么去解决这些可能出现的问题呢?下面介绍一些工具和架构来彻底破解这些问题。
现在开发生命周期非但不会缩短,每天不断膨胀的日志数据 甚至可以达到GB级别的量级。让我们说说在新发布之后的问题:如果你想及时响应,在没有合适的工具的情况下,想要处理多数据源多服务器的GB量级的数据, 几乎是不可能的。在这样的情况下,除开重型企业内部的工具Splunk和他的SaaS中的竞争对手,如Sumo Logic, Loggly等等。我们依然有提供类似功能的其他选择,因此我们对日志的管理做了一个深入的分析,你可以参照这里。
#1 建立一个可靠的日志管理策略,能帮助你看到的不止是单独的日志文件,能让你在新发布之后快速做出相应。
我们最后发现,在新发布之后的一个有用的日志框架就是开源的ELK stack。因为它是开源免费的,所以被特别提到。
ELK stack包括 ElasticSearch,,Logstash 和Kibana
那么我们所说的 ELK到底是什么呢?它是一个混合体,包括用作搜索和性能分析的elasticsearch,用于日志收集的Logstash和用作前端展现的 Kibana。我们已经用过有一段时间了,依靠它和Redis分析我们的Java日志,它也有被用在开发和BI之中。现在,elasticsearch已经内置于Logstash,Kibana也是一个elasticsearch的产品,这样能让集成和安装更容易。
每当一个新的发布之后,前端会展现出我们对这个应用健康所关心的自定义指标。这些指标会实时更新,并且允许刚交付的代码上传到生产环境后马上就得到监测。
#2 搜索,可视化以及对多数据源日志的聚合,是决定你日志管理工具选择的第一要素。
#3 从一个开发者的角度,评估新的发布的影响也包括BI等方面。
可供选择的工具:
内置工具: Splunk
SaaS:Sumo Logic
3. SaaS:Loggly
4. 开源:Graylog2
5. 开源:Fluentd
6. The ELK stack (开源): Elasticsearch + Logstash + Kibana
性能监控:
发 布周期被缩短,日志文件越来越大,但这并不是全部。随着用户请求的数量急剧增长,他们都希望达到性能的峰值。如果你不努力优化,简单的日志记录让你只能看 到这么多。这样说来,专用应用程序性能管理工具(APM)已不再被认为是奢侈品,它已经迅速成为一种标准。从本质上说,APM意味着时间需要多长时间来执 行不同的地区代码并完成汇报——要达到这个,可以通过代码检测,日志监控或是包括网络/硬件指标。考虑到后台以及用户设备,首先进入我脑中的两个APM工 具分别是New Relic(最近刚IPO)以及AppDynamics。
[align=center]
左边为AppDynamics,右边为New Relic的主面板[/align]
不 管是初创还是成熟的公司,这两个都能满足不同类型的开发者。但是两个都在走IPO,在经历巨大的增长后,产品线越来越模糊。这个选择不是很清晰,但是你不 能陷入误区,即On premise = AppDynamics。相反,这是一个独立的需求,它依赖于谁更适合你的站点(即它们提供的所有特性就是你实际上想要使用的)。看看我们最近发布的关于二者的分析报告,点击这里。
我们最近发布的另外两个工具是Ruxit(由Compuware开发)和DripStat(Chronon Systems开发),它们每一个都来自由New Relic开创的尝试自己解决SaaS监控市场的大公司。为了深入JVM硬核内部,jClarity和Plumbr也绝对值得一试。
#4新的发布有可能影响你应用的性能使之运行变慢。APM工具可以提供你应用健康的总体情况。
可供选择的工具:
1.AppDynamics
2.New Relic
新的成员:
1.jClarity
2.Plumbr
3.Ruxit
4.Dripstat
产品调试
发布周期短了,日志文件变大了,用户请求增多……允许犯错误的余地几乎不存在了。但当错误真的到来时,你需要能够马上解决掉。大规模的生产环境,每天可以从 成百上千个不同的代码处产生无数的错误。虽然有些错误时不重要的,但有些可能对你的应用产生致命的影响,并影响你所接触不到的终端用户。另外,为了鉴别和解决这些错误,你必须依赖于你的日志或是日志管理工具去查看错误的发生,更不用说如何修复它。
有了Takipi,你能够知道最有可能出问题且需要优化的地方,并且能得到怎么取解决每个问题的可行的信息。
为了关注新发布后的危机,Takipi解决了三个主要问题:
1.了解哪些错误最有可能影响你——在生产中发现100%的代码错误,包括JVM异常和记录的错误。使用智能过滤以减少噪音使之专注于最重要的错误。超过90%的Takipi用户报告说,在他们使用的第一天,至少在生产中找到了一个严重的bug。
2、在调试上花更少的时间和精力——Takipi再现了每个错误并显示出代码和导致它产生的变量,甚至可以跨服务器。这消除了手动复制错误的必要,节省了工程时间,显著降低时间。
3. 没有风险的发布——当新的版本中有错误,或是已经解决的错误又重现时,Takipi都会提醒你。
#5:运用Takipi你能很快地解决任何问题,以至于不让你在新的发布之后一无所知。
可选择的工具:
1.Takipi
从这篇文章之后,Takipi的使用时间扩展到了两个月。
报警和追踪
发布周期,日志文件,用户请求,零错误……你怎么才能全部跟进呢?你可能认为这一类和其他的重叠了,可能你是对的,但是当所有的这些工具都有他们自己的流水 线时,你可能会意识到自己哪里错了——这将变得很混乱。特别是在各种意想不到的事情都可能发生的新发布后(也就是整个灾难降临)。
满足这个的事件管理工具之一的就是PagerDuty:它能从监控工具收集报警,创建时间表来协调你的团队,或是通过文本、邮件、短信或是推送通知,把每个报警发给特定的人。
#6:考虑使用一个事件管理系统来处理信息过载。
在这里我们真正喜欢使用的专业工具是Pingdom(也是和Pagerduty的结合)。它所做的很简单而且有用:即对你的站点的响应时间做24*7小时的追踪和告警。它能回答一个看起来微不足道,实则至关重要的问题:从世界各地检测来看,当前的站点可用吗?
另一个角度来解决信息过载的方法,是通过对日志分析来进行错误的跟踪:管理异常和日志错误的智能展现。从多个服务器聚合数据到一个地方,即使你的日志事件或是其他插件来自你的代码。为了更深入地错误追踪,点击这篇文章可以得到更多的信息。
#7 代码层的错误来源各种各样,在选用追踪工具时,应该给予特别的对待(在我们关注他们的时候就修复一些bug,哈哈)
可供选择的工具:
1.PagerDuty
2.Pingdom
总结
我们亲身经历,现代软件开发如何影响发布生命周期,放大如何评估新的快速部署的影响——在你部署之前,你应该完全了解最后更新的影响。从长远来看,任何工具都应该拥有这五个特点:
- 缩短发布周期
- 增加日志文件
- 增大用户请求
- 减小错误
- 信息的过载
最重要地是,思考一下现在你是怎么解决这些的,哪一个花了你更多的时间。很可能就有一个工具适合解决这个问题。
相关推荐
开发者应定期运行这类工具,特别是在发布新版本或进行重大更新后,以确保代码的安全性。 在实际操作中,需要注意的是,尽管自动化工具可以辅助检测,但并不能完全替代人工审查。因为有些复杂的逻辑或特定场景下的...
在IT行业中,尤其是在信息安全领域,"apk反编译工具漏了个大洞.zip"这个标题揭示了一个重要的问题:一个流行的APK反编译工具可能存在严重的安全漏洞。APK是Android应用程序的包文件格式,反编译工具则被广泛用于分析...
SQL Server 2005是微软发布的一个重大更新版本,引入了许多新特性,如增强的安全性、性能优化、改进的数据类型(如XML)以及更强大的分析和报表服务。SQL Server 2000则是一个较早的版本,尽管已经过时,但在许多老...
"三调工具箱集合.rar" 是一个压缩文件,其中包含了名为 "三调工具箱集合.tbx" 的子文件。从这个文件名我们可以推测,这可能是一个针对第三次全国土地调查(简称“三调”)的专业工具集。三调是中国国土空间规划和...
- **创建仓库**:可以通过命令行工具svnadmin创建一个新的仓库,或者使用图形化管理工具如TortoiseSVN。 - **检出(Checkout)**:使用`svn checkout`命令获取仓库中的最新版本到本地工作副本。 - **提交(Commit...
apkpatch工具是Android开发中的一种重要工具,它主要用于在应用发布后进行热修复或增量更新。这个工具允许开发者对比两个相同版本号的apk文件,找出它们之间的差异,并生成一个名为apatch的文件。apatch文件包含了两...
不过,我们可以推测这篇文章可能详细介绍了如何使用特定的数据恢复工具或者分享了一个自制的源码项目,因为标签中包含了“源码”和“工具”。 “源码”标签表明这个压缩包可能包含一个开源的数据恢复软件的源代码。...
压缩包中的“数据库更新工具20120327”可能是这个工具的一个特定版本,发布于2012年3月27日。用户可以下载并使用这个版本来升级他们的Access数据库。值得注意的是,软件升级可能存在兼容性问题,因此在使用前,务必...
这款工具在设计时强调了安全性,尽管目前尚未添加数据证书,因此在某些安全软件如360可能会出现提示,但这并不意味着工具本身存在重大安全隐患。用户可以依据自己的判断和信任程度选择使用。 在网购过程中,淘宝...
在软件开发过程中,随着技术的迭代更新,开发者可能需要将项目从一个Visual Studio版本迁移到另一个版本,例如从2002年发布的Visual Studio .NET到2015年的Visual Studio 2015。为了帮助开发者顺利完成这一任务,...
- `ANNOUNCE`:可能包含软件发布时的公告信息,包括重大特性、改进以及可能的迁移指南。 总结来说,这款基于Java的MySQLWeb管理工具提供了一个方便的Web界面来管理和操作MySQL数据库,对于那些需要远程访问数据库...
这一转换工具的发布,对于企业用户来说,具有重大的实际意义,因为它简化了企业在会计政策调整时的数据处理工作,降低了因准则变更带来的操作复杂性。 2007年中国新会计准则的实施,是中国会计领域的一次重大改革,...
下载完成后,我们需要创建一个诊断工具盘。这通常通过使用USB闪存驱动器并按照HP提供的说明进行操作。步骤可能包括格式化USB驱动器,然后将诊断工具的ISO文件刻录到驱动器上,使其成为一个可引导的介质。 一旦诊断...
SAST工具分析相较于IAST工具,SAST使用模式较为简单,目前市场普及率较高,众多企业都有在内部进行相关实践。SAST支持语言种类覆盖度广,适用范围更普遍。SAST工具属于静态扫描,不依赖于程序运行状态,安全介入位置...
Office 2013是微软发布的一个重大版本,引入了触摸优化的界面和云服务的深度整合,如OneDrive(当时名为SkyDrive)的同步功能。Office 365则是一个订阅服务,用户可以持续获取最新版本的Office应用程序以及额外的...
例如,太平洋下载网在全国多个城市设立镜像站点以提高下载速度,减轻主站压力,并提供了丰富的软件类别,如系统工具、网络工具、图形图像等,每个类别下有代表性的软件如系统工具中的CCleaner、网络工具中的迅雷下载...
JDK1.8是Oracle公司发布的Java平台标准版的一个重要版本,它包含了编译器、调试器、文档、Java运行时环境(JRE)以及其他开发工具。这个版本在Java社区中广为使用,尤其对于许多Web项目来说,它是必要的运行环境。 ...
为了充分挖掘百度指数分析工具的价值,用户在使用时需要认真阅读【使用必读.txt】文件。这份文件包含了一系列操作指南,例如如何正确输入关键词、如何解读数据报告、如何设置合适的时间范围等。正确的使用方法能够让...
同时,这里特别指明了系统要求为Windows,意味着这个工具是为Windows用户设计的,用户需要在Windows PC上运行该工具来完成越狱过程。 压缩包内的文件"evasi0n-win-1.5"是该越狱工具的Windows版本。Evasi0n是由知名...
这意味着用户不仅可以利用这款工具将LG手机升级到官方或第三方发布的最新系统版本,还可以根据自己的需要将系统降级到稳定版或其他旧版系统。在官方停止更新或更新的新版本存在重大缺陷时,这一功能显得尤为重要。它...