首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保长期的企业软件稳定性与不断变化的框架/事物失去支持?

如何确保长期的企业软件稳定性与不断变化的框架/事物失去支持?
EN

Software Engineering用户
提问于 2020-04-22 10:58:12
回答 2查看 566关注 0票数 5

我在国内最大的公司之一的IT部门工作.

基础设施和软件系统在很大程度上是基于Oracle数据库的。大多数核心业务流程和业务逻辑是使用SQL和PL/SQL批处理作业构建的,将数据导入数据库,通过DB链接进行转换、合并、通信等。这是一个非常同质的系统,也有它的优点。

现在,已经有了一种转向不同技术、多样化和减少对Oracle的依赖的努力(成本是一个因素--我们拥有数百个企业版数据库和数千个标准版)。

然而,经常会出现一个问题: Oracle数据库已经相当稳定并且向后兼容--我们如何确保系统在更异构的环境中的长期稳定性(10 years+)?假设我们有组件A,B,C,D,使用某个特定的框架,托管在某个云端。如果云提供商放弃了对框架的支持,该怎么办?如果组件B和C由于中断更改而不再兼容,怎么办?

我还没有听到令人满意的答案--基本上,到目前为止我得到的唯一答案是“我们只需要重写它”。

所以我希望找出应该采取什么策略来防止我们基本上每3年重写一次。

EN

回答 2

Software Engineering用户

发布于 2020-04-22 13:29:03

你越多地利用别人的工作,你就越容易受到别人的影响。

因此,有四种方法来处理这个问题:

  1. 支付一笔不重要的钱来开发和维护房子里所有东西的100% (或尽可能接近)。保持它的最新、工作、无缺陷和向后兼容完全是你自己的问题。至少你可以改变你想要的(或多或少)。
  2. 支付一笔并非无关紧要的钱,让第三方足够关心保持该技术的最新、有效、无缺陷和向后兼容。你想要的任何改变都可能需要花费一条手臂和一条腿,并且需要很长的时间才能被接受。租金领主喜欢得到报酬,而不是改变事物。
  3. 即使您不需要为内部需求做任何更改,也要支付一笔不菲的钱,让一些开发人员继续维护该技术,作为社区工作的一部分。保持它的最新、工作、无bug和向后兼容是你关心的问题。还有很多关于管理的争论。不过,警告说,你可能会被迫把所有的东西都拿在家里,或者成为技术的房主。
  4. 支付一笔不重要的钱来不断地重建软件,因为它死在一种旧的破碎的技术上,并且是在一种新技术上重生的。也向频繁的再培训问好,并可能有高级别的人翻过来,因为3岁的员工为项目独角兽现在正在工作的项目恐龙。等等,那是流星吗?

在我的头脑中,找出上述策略的组合对你的情况是有效的。

你必须对业务经理清楚这对银行余额和未来预算意味着什么。

  1. 大型内部团队,长期员工,时间不交付功能改变,专注于运营和发展的变化。
  2. 庞大的供应商支出,缓慢移动的新功能,中等规模的支持/操作团队来处理部署和监控。
  3. 小规模的开发人员团队,在更大的开发人员社区中工作。社区中的良好意愿必须得到培养,而不是通过履行公民责任来实现,包括提供代码来支持竞争对手。有一个机会,但其他人也会帮助你找到错误,问题,解决问题,等等。另外,代码不是100%在你自己的控制下,它可能会失去所需的功能,或者被修改以引起一些内部项目的困难。
  4. 大型内部团队/频繁的外部合同,以生产新软件。频繁的再培训,频繁的员工更替。频繁的退役活动。从旧系统中获取数据几乎是不可能的,即使有一个数据湖,也需要生命支持人员来维护系统,将其移动到具有可怕的代码/技术基础的内部解决方案中。更愿意只用于不保存记录的系统,而且是轻浮的。说真的,这对长期的软件来说是不利的。

这些新框架属于第3或第4桶。

  • 除非有一家公司愿意承包维修担保,并且您愿意付款,否则它将是2。
  • 或者它的开源,并且愿意容纳大型团队来维护它,然后是1。

基于云的服务要么是2,要么是4,可能是4,因为我还没有看到服务合同的保证。

  • 即使只是一个原始实例也是一个4 (sans是一个严格保证的合同),但至少可以很容易地将它转换为内部实例(a 1)。

甲骨文数据库,那是2。

你所有的本土应用程序都属于1类。

票数 7
EN

Software Engineering用户

发布于 2020-04-22 19:11:29

通常,在软件书籍中,你会给出客户所需要的,而不是他们想要的。在现实世界是完全相反的。仅仅因为你有你很稳定的老学校平台,并不意味着它是垃圾。一次新的重写必须非常小心,而不会对你的商业模式造成干扰。

我建议如下:制定侧重于以下方面的计划:

  1. 安全性-新技术提供了良好的安全性和趋势与GDPR和HIPAA挑选技术,这是在盒子里建立的支持这一点。
  2. 劳动力成本-未来5年雇用或过渡现有开发商的平均成本-选择广泛采用并在整个地区/国家有良好社区趋势的技术。
  3. 做一个小原型,导出非常小块的旧平台,并调查用户对新平台的喜爱程度。
  4. 设定至少5年的预算,看看投资是否可以或什么时候可以做。时机是最重要的。关注公司整体业绩和经济状况,关注竞争对手。
  5. 建立当前系统的基准,如压力测试、负载测试、性能、用户体验等。采访客户他们喜欢什么和不喜欢什么。
  6. 从一个由一两个人组成的团队开始。让他们工作三个月。看看他们发现了什么,以及架构是如何将纸设计与实际实现相比较的。开始每隔一段时间进入团队,但不要过分。数量不见得会导致生产。
  7. 开始派遣老团队成员参加在线课程,在那里他们开始学习新技术,而不是迅速地推动他们。其中一些人需要时间来适应新技术。
  8. 只有在团队执行了相同的操作之后,才有可能在任何地方使用自动化。
  9. 在平台投入使用或三次主要发布后,再计划3年的计划。这是非常重要的,因为人们必须明白,仅仅因为你可能活着,就会有变化。
  10. 确保您有预算来消除所有的旧组件,否则您将结束与两种技术工作很长时间,维护将非常昂贵。
票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/409143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档