6

我参与了一项涉及重大重构或完全重新设计的项目维护计划。我们有一个非常复杂的现有技术堆栈,在五年内有机地发展。我本人是三年前加入的,当时“陷入”了疯狂之中。该堆栈是根据客户不断变化的需求组合而成的,并且正在迅速成为一个由许多技术和无法控制的数据收集组成的无法管理的庞然大物。

我们的主要目标是使堆栈更易于使用和管理,并在未来提出更好的系统来管理数据。我们希望将主要用 PHP 编写的紧密集成的业务模型和 REST 控制器系统转换为连贯的 REST API。

我们的 PHP 业务模型依赖于包含大部分数据的 eXist XML 数据库和支持我们的两个子应用程序数据的 MySQL。我们有一个 SQL 和 XQuery 源代码库来动态管理数据存储中的数据。还有一些业务模型依赖于 Java 代码,通过使用 PHP-Java 桥和 SAXON 和 FOP 来创建存储在 XML 数据库中的文档的 PDF 传真。由于这是一个 Web 应用程序,我们使用 PHPTAL、XSLT、CSS、XHTML 和 JavaScript 的组合来简化客户端 UI。最后,我们有一堆管理脚本,用于管理 PHP、Apache、用 Perl 编写的函数,这些函数使用 Ant 任务进行管理。

堆栈的基本功能是为各种用户模型提供电子表格。多年来,由于客户摆弄、最终用户过度牵手、缺乏系统分析监督、糟糕的测试方法以及缺乏未来目标和明确定义的项目范围,这些年来,应用程序背后的简单理念遭到破坏。

我们目前正计划阻止任何进一步的开发,更好地描述可能包含或不包含更好的单元测试计划的系统,并为使用相同技术组件的 API 创建基础。我的直觉反应是提出一个可靠的范围并使用支持良好的编程语言和框架重新设计系统,这些语言和框架非常适合编写 Web API,可能会丢失一些功能,但保留最重要的功能。我还建议将现有数据迁移到单独的“只读”平台。

我对那些处于类似情况的人的问题是:

  • 你是如何摆脱这种局面的?
  • 在这种情况下采用什么样的计划步骤会很有用?
  • 这些堆栈有源代码管理技术吗?我要寻找什么?- 搜索关键字

我意识到没有完美的解决方案,要回答这些问题,我需要进一步说明我们的项目问题。由于各种原因,我不能真正做到这一点。我在寻找有用的资源来帮助我解决这个问题时遇到了问题,我将不胜感激有关如何进行的建议。

4

1 回答 1

2

如果我在你的鞋子里,我会问或考虑以下一些问题:

数据库设计:

  • 您需要捕获哪些信息?
  • 这一切需要如何捆绑在一起?
  • 你需要做什么样的报告?
  • 你想收集什么样的指标?
  • 何时应将旧数据永久清除以进行长期存档?

应用设计:

  • 您现在可以在系统中设计什么来减少客户需要“手持”的可能性?
  • 目前缺少或缺乏哪些功能?
  • 您是否可以进行任何简单的更改来扩大您的客户群?
  • 你有正式的编码标准吗?是否强制执行?
  • 您需要进行什么样的测试?(单元测试、正式 QA 等)
  • 您需要什么样的文件?(源代码、最终用户等)
  • 您使用什么样的指标来确定应用程序的运行情况?
  • 回首三年,当你开始时 - 知道你现在知道什么,你希望你当时实施了哪些设计决策?

软件:

  • 是否可以使用较少的技术集在同一级别提供相同的服务?
  • 您现有的员工最熟悉哪些技术?
  • 如果您需要雇用更多的人,哪些技术最容易在永久或顾问的基础上引入?

硬件:

  • 您现有的硬件是否满足您的需求?如果没有,你需要什么?更多服务器?更大的服务器?负载均衡器?等等
  • 您目前是否正在利用虚拟化?

人员:

  • 你是否得到了所有利益相关者的“买进”?如果不是全部,您是否至少从决策者那里获得了支持?
  • 利益相关者是否了解这将是一项艰巨的任务?

防灾/恢复:

  • 如果主服务器/网络不可用,您将如何提供冗余?
  • 您将如何备份数据(现场、异地、短期、长期)?
  • 您需要设置什么样的监控?出现问题时应如何通知您?应该通知谁?

抱歉,我无法将其纳入评论 :-) 而且我没有时间详细说明其中的任何内容,我只是在消磨时间等待会议。

于 2013-01-31T21:36:51.643 回答