我们正在接管来自不同团队的申请。 我们只有5天的时间来学习这个团队应用程序的所有可能性。 这五天后,这个原始团队将无法使用。
此时,我们甚至不知道应用程序的大小或复杂程度。我们所知道的是它是一个j2ee应用程序。我猜这是一个相当大的应用程序。过去几年我一直是开发人员,我之前从未做过这样的事情。所以我甚至不确定从哪里开始。
我的问题包括但不限于:
答案 0 :(得分:6)
过去几年我一直是开发人员,我之前从未做过这样的事情
不要太担心,每个人在某个时间点都处于这个位置。这种代码接管没有通用的配方。它可能需要花费大量的时间来阅读,调试,理解,重新编写,以后再支持这些代码但是......那又怎样呢?这是一个很好的挑战。
无论如何,首先要问他们几个主要的事情:
1)如何构建和部署到干净的机器(清晰的逐步指南),或者一组干净的机器(如果应用程序以某种方式分发)。如果你能够做到这一点,你会更自信地自己管理这个应用程序(即使你最初可能不理解它);
2)应用程序对外部系统的任何依赖性(它调用/消费的Web服务,与之通信的任何外部系统,意味着此应用程序的传出通信);
3)它公开/提供的任何Web服务或资源,以及谁调用它们(传入通信);
4)它使用的任何DB(关系或非关系)(它连接到);
5)这个应用程序的业务逻辑是什么,它做了什么,它是如何做的(高级架构决策;层),像这样的整体技术。
答案 1 :(得分:2)
对我来说派上用场的工具是:
Yourkit - 为了分析应用程序,以及分析它吐出的任何堆转储。
Splunk - 特别是如果您的应用程序会喷出大量日志文件。从nfs挖出日志文件并在慢速文本编辑器中打开是原始的,splunk是要走的路。 Splunk具有出色的搜索功能,您可以搜索多个日志文件。 ctrl + f通过每个日志文件很痛苦。您可以发掘有价值的数据,例如在特定时间窗口内对您的应用程序进行登录API调用的频率。建议在生产系统旁边运行一个splunk实例。
你可以向即将离任的团队询问的事情很少:
依赖管理系统。它依赖于maven,gradle还是ant?它从哪里得到它的文物?它是本地托管的Artifactory还是从网络上获取它们。
应用的各种API渠道。除了UI之外,还有shell API,perl或python或者java,以及如何维护它们。
了解测试框架。你用junit和mockito吗?是否有基于perl的测试框架?还要知道正在使用的代码覆盖工具。
构建框架。如果它是一个Web应用程序,它可能部署在一个java servlet上,为此需要一个.war文件。必须有一个像Jenkins或ElectricCommander这样的构建系统,它运行编译和测试,什么不能,最后生成一个war文件。假设你们要处理这个系统,而不是集成/发布团队,请确保你知道它是如何工作的,如果它有一天下降并且构建是一个红色的海洋。我们去过那里。
真的,即将离任的团队应该有足够的文件,这将是最好的交接。