接管申请时要做的事情
Things to do when taking over an application
我们正在从一个不同的团队接管一个应用程序。
我们只有 5 天的时间从这个团队那里了解有关该应用程序的所有可能信息。
这五天之后,这个原班人马就不能上场了。
此时,我们甚至不知道应用程序的大小或复杂性。我们所知道的是它是一个 j2ee 应用程序。我猜这是一个相当大的应用程序。过去几年我一直是一名开发人员,以前从未做过这样的事情。所以我什至不知道从哪里开始。
我的问题包括但不限于:
- 我从哪里开始?
- 我应该问什么样的问题?
- 在这些情况下是否有任何 tools/methodologies?
- 有什么书可以看吗?
I have been a developer the past few years and I have never undertaken anything like this before
不用太担心,每个人都曾有过这样的经历。这种代码接管没有通用的方法。以后可能需要花费大量时间阅读、调试、理解、返工、支持此代码,但是……那又怎样?这是一个很好的挑战。
不管怎样,首先要问他们几件主要的事情:
1) 如何构建并将其部署到干净的机器(清晰的分步指南)或一组干净的机器(如果应用程序以某种方式分发)。如果您能够做到这一点,您将更有信心自己管理这个应用程序(即使您一开始可能不理解);
2) 应用程序对外部系统的任何依赖性(它的网络服务 calls/consumes,它与之通信的任何外部系统,意味着该应用程序的传出通信);
3) 它 exposes/provides 的任何 Web 服务或资源,以及调用它们的人(传入通信);
4) 它使用(它连接到)的任何数据库(关系或非关系);
5) 这个应用程序的业务逻辑是什么,它做什么,它是如何做的(高层架构决策;层次),诸如此类的总体技术问题。
Peter 涵盖了大部分要点。我自己开发基于 Web 的应用程序,这是我的 2¢:
对我有用的工具是:
Yourkit - 用于分析应用程序,以及分析它吐出的任何堆转储。
Splunk - 特别是当您的应用程序生成大量日志文件时。从 nfs 中挖掘日志文件并在慢速文本编辑器中打开是原始的,splunk 是可行的方法。 Splunk 具有出色的搜索功能,您可以搜索多个日志文件。 ctrl+f 遍历每个日志文件很痛苦。您可以发掘有价值的数据,例如在特定时间 window 内对您的应用程序进行登录 API 调用的频率。建议在您的生产系统旁边有一个 splunk 实例 运行。
您或许可以向即将离任的团队询问一些事情:
依赖管理系统。它依赖于 maven、gradle 还是 ant?它从哪里得到它的工件?它是本地托管的 Artifactory 还是从网络上获取它们。
应用程序的各种 API 渠道。除了 UI 之外,是否还有 shell API、perl 或 python 或 java,它们是如何维护的。
了解测试框架。你使用 junit 和 mockito 吗?是否有基于 perl 的测试框架?还知道正在使用的代码覆盖工具。
构建框架。如果它是一个 Web 应用程序,它可能被部署到一个 java servlet 上,为此需要一个 .war 文件。必须有一个像 Jenkins 或 ElectricCommander 这样的构建系统来运行编译和测试等等,最后生成一个 war 文件。假设你们要处理这个系统,而不是 integrations/release 团队,请确保您知道它是如何工作的,以防万一有一天它出现故障并且构建变成一片红色的海洋。我们去过那里。
真的,离职团队应该已经有足够的文件,那将是最好的交接。
我们正在从一个不同的团队接管一个应用程序。 我们只有 5 天的时间从这个团队那里了解有关该应用程序的所有可能信息。 这五天之后,这个原班人马就不能上场了。
此时,我们甚至不知道应用程序的大小或复杂性。我们所知道的是它是一个 j2ee 应用程序。我猜这是一个相当大的应用程序。过去几年我一直是一名开发人员,以前从未做过这样的事情。所以我什至不知道从哪里开始。
我的问题包括但不限于:
- 我从哪里开始?
- 我应该问什么样的问题?
- 在这些情况下是否有任何 tools/methodologies?
- 有什么书可以看吗?
I have been a developer the past few years and I have never undertaken anything like this before
不用太担心,每个人都曾有过这样的经历。这种代码接管没有通用的方法。以后可能需要花费大量时间阅读、调试、理解、返工、支持此代码,但是……那又怎样?这是一个很好的挑战。
不管怎样,首先要问他们几件主要的事情:
1) 如何构建并将其部署到干净的机器(清晰的分步指南)或一组干净的机器(如果应用程序以某种方式分发)。如果您能够做到这一点,您将更有信心自己管理这个应用程序(即使您一开始可能不理解);
2) 应用程序对外部系统的任何依赖性(它的网络服务 calls/consumes,它与之通信的任何外部系统,意味着该应用程序的传出通信);
3) 它 exposes/provides 的任何 Web 服务或资源,以及调用它们的人(传入通信);
4) 它使用(它连接到)的任何数据库(关系或非关系);
5) 这个应用程序的业务逻辑是什么,它做什么,它是如何做的(高层架构决策;层次),诸如此类的总体技术问题。
Peter 涵盖了大部分要点。我自己开发基于 Web 的应用程序,这是我的 2¢:
对我有用的工具是:
Yourkit - 用于分析应用程序,以及分析它吐出的任何堆转储。
Splunk - 特别是当您的应用程序生成大量日志文件时。从 nfs 中挖掘日志文件并在慢速文本编辑器中打开是原始的,splunk 是可行的方法。 Splunk 具有出色的搜索功能,您可以搜索多个日志文件。 ctrl+f 遍历每个日志文件很痛苦。您可以发掘有价值的数据,例如在特定时间 window 内对您的应用程序进行登录 API 调用的频率。建议在您的生产系统旁边有一个 splunk 实例 运行。
您或许可以向即将离任的团队询问一些事情:
依赖管理系统。它依赖于 maven、gradle 还是 ant?它从哪里得到它的工件?它是本地托管的 Artifactory 还是从网络上获取它们。
应用程序的各种 API 渠道。除了 UI 之外,是否还有 shell API、perl 或 python 或 java,它们是如何维护的。
了解测试框架。你使用 junit 和 mockito 吗?是否有基于 perl 的测试框架?还知道正在使用的代码覆盖工具。
构建框架。如果它是一个 Web 应用程序,它可能被部署到一个 java servlet 上,为此需要一个 .war 文件。必须有一个像 Jenkins 或 ElectricCommander 这样的构建系统来运行编译和测试等等,最后生成一个 war 文件。假设你们要处理这个系统,而不是 integrations/release 团队,请确保您知道它是如何工作的,以防万一有一天它出现故障并且构建变成一片红色的海洋。我们去过那里。
真的,离职团队应该已经有足够的文件,那将是最好的交接。