3 @) `( P! s& |$ v& I+ b* ~0 Y在机构组织中有明晰的技术关系,使得能够快速评估影响:这可使公司进行基本的根本原因分析。当存在简单的因果关系时,根本原因分析有用的。但是由于不能扩展到包含所有可能结果,所以对于复杂多维度问题的作用是有限的。因此公司需要了解复杂的Web技术和业务关系,这可使他们看到问题扩散的多条路径以及在IT机构和业务中的影响。对这些关系了解的越多,会发现他们的关系越多,组织机构也就越强壮。 # h+ Q) U: a# D ! a* z9 e% w* m$ k- g' p必须清晰理解下面内容:5 |5 C2 E% H- t! w3 u2 b9 i# U, n
- 应用的最终用户:哪些应用或服务影响哪些用户群体?在特定应用或服务上,一些改变或问题对业务有何影响? ( P8 o# B9 b' \. V5 q' q- 要素关系(例如服务器,数据库) :现在有哪些要素,它们是如何联系的?哪个Web应用服务器运行在哪个物理服务器上?Web应用服务器和哪个数据库相联并且数据库运行在哪个物理服务器上? " q7 R' y% G: Z. G1 o- 组件关系(例如类,方法) 哪个类被哪个EJB调用?哪个方法是哪个servlet的一部分?在整个J2EE的应用中,所有的组件关系是什么? $ M: ?. h5 P9 _2 ?' ]$ O2 t
% M# ~" ^: N& K: g& [/ [
+ Y1 D/ ~! G- K' b1 @" `( P
发生问题时的自动化数据收集: 当无论是个人还是工具发出问题信号时,管理型环境有能力开始收集更多的详细信息。最好的情况是工具在达到某个阈值时触发并自动开始搜集其他与该阈值有关的数据。然后该工具通知相关人员(例如应用支持或工程层次的小组)。当这些人员处理问题时,他们已经获得了大量信息,这样识别和解决问题的第一步就完成了。 " C4 j I4 L: Y8 z; Y- S& p
4 N S. e' a o
% }& i; j( F! S" \- E* s: K4 F问题识别过程:由于一个阈值往往只是问题的征兆而不是问题的本身,所以问题的识别远远不只是阈值的触发。这一过程从较高层次开始确定问题发生在应用的哪个部分(例如应用服务器,Web服务器,数据库等),然后让工程小组对已经识别出的问题组件进行数据研究并更深入地进行分析(例如识别问题出在哪个EJB中,进一步是问题出在这个EJB的哪个方法中。如果这时原因已经清楚了,那么工程小组可以解决这个问题或者转给其他必须提供帮助的小组(例如开发小组)。如果问题依旧没有识别出来,工程小组可以调动其他能够提供帮助的小组。这一过程包含所有工作,需要在相关的所有小组中共享工作流和共享数据。基于最终用户的交互数据(用户响应)可以帮助加快识别问题的过程,可以分析最终用户的事务,识别在事务流中问题出现在哪里。这使得能够迅速集中资源并快速解决问题。 / f3 q J$ ?- V8 o& K1 O- g/ G( ]0 D' q- V: l {% V8 D! Q
4.3. 主动型 . Y6 Q& R) q3 s& U3 c8 c
7 K$ i: \1 i! m7 m7 Y F0 i. _5 h
主动型阶段不只是一项特殊技术,而是一个理念体系,在应用和服务的生命周期中,主动型公司认为应用管理非常重要。这些机构在建设应用时,将形成清晰的管理数据并且经过严格的开发单元测试和定义明确的质量保证过程,并且这工程是持续的。开发人员和质量保证小组经常检查应用并重新确认已做的改变,以确保应用可以按照预先的设计运行。 }. z3 {2 D/ {4 Y* O( F% u
6 v( V5 o x# q$ f2 W在主动型环境中,生产小组需要定期对应用和基础结构做调整。例如调整J2EE应用服务器保证达到最佳的吞吐量。另外,对运营的度量应该与设计的目标进行比较(假设,当然,那些目标应该已经是确定的)。所有这些说明了在基于J2EE应用支持中,主动型环境中的所有角色是通过数据和技术的共享方式进行交互。 , q# a4 p1 p: n0 U- X( ]
3 M) ~/ i' \* ^; _, E
主动型技术也是存在的,这种技术采用工具查看各种数据并寻找异常情况,一些异常情况不只是单一度量的阈值。例如,当线程数量超过了指定的数量或者CPU时间超过了一个使用率时,达到阈值。当一个工具提供主动性方式时,该工具可以推断一些度量间的关系。例如,CPU可以达到60%使用率,是在正常运行范围内,但是JVM线程数量增长的比平时快,同时一些EJB存在不同寻常的大量实例。虽然这些度量中没有一个可以产生警报,但是他们的组合可以表明存在问题。如果线程继续产生,导致某个特定的EJB异常退出(特点是大量的重新初始化)或从另外一个服务中以一新方式调用, 那么CPU开始达到峰值,用户就感觉应用变慢了。主动型方式是可以达到的,只需要同时运用工具和用户的智能两种资源。 , h6 h% y2 p$ L0 P) m
5 j& B' E' c; k+ [% t% |: X最后,主动型环境可以使用运营状态下的历史数据,从中寻找改进的机会。这可能包括调整应用,重新设计应用的某些特殊部分,或主要改变基础结构等。无论结果是什么,都是在问题发生前,通过使用历史数据来改进性能。 # d& s+ W( T. W+ w+ a: F
8 a9 ^3 R1 `! v2 w& z1 {4.4. 适应型 ' n6 J8 z3 K5 q- q, w" a
# L X5 q4 V6 ]% O适应型管理是大多数机构组织的梦想。如果一个环境是适应型的,那么技术本身可以识别问题并自动地改正问题。公司有很大的灵活性根据当前情况来调配资源。发生的问题不一定是故障,但是反映了使用的趋势。例如当应用的使用增加时,系统自动为了防止出现瓶颈自动提供额外的资源。当然系统会向所有小组发出通知让他们知道系统已经做了哪些工作。系统为了防止问题再次发生已经根据规则自己采取了行动。另外一个例子是当达到峰值时,系统将自动将资源提供给业务更关键的应用。 + {9 x4 ^: T/ s: ^' S8 u! t- O% v! E8 b
实际上,IT距离适应型系统还有很多年时间,但是这最终必将成为现实。为作好准备,公司必须在建设可管理的应用(例如在自己开发的应用中采用JMX)方面开始进行投入,这些应用可以对外提供关键的运营数据。此外,公司还必须准备好清晰的运营过程并且在管理技术方面形成规范,以及在适应型系统中形成自动化。如果公司在适应型系统上投入并能够成功实现,他们将看到在运营支持机构中可减少大量成本,需要很少的支持人员并能防止问题和资源耗费的出现。 # g; _- ~9 ~! o# s2 q0 d ; G- B3 ?+ z% g% m. j5. 总结 * b5 ^' k9 R: U' f/ M
; Q8 r* Q0 H( S- o( C8 F
还有很多工作要做。基于J2EE应用的重要性要求公司采取比过去更快的行动达到J2EE应用的运营成熟程度。公司必须组建所有涉及到运营的支持角色,明确详细责任并运用过程将不同的小组联系起来。一个跨越小组的共享技术基础将帮助公司加快工作过程并使各个小组的工作更加紧密。