将旧应用程序的用户迁移到工作应用程序上的新用户

Posted

技术标签:

【中文标题】将旧应用程序的用户迁移到工作应用程序上的新用户【英文标题】:Migrating users of old application to new one on working application 【发布时间】:2018-09-04 19:50:31 【问题描述】:

我正在考虑在两个系统之间迁移用户的可能方式。它是金融系统、Web 应用程序(Java、Spring、Hibernate、Oracle、JBoss 等)。有 50 万用户需要迁移他们的数据,如账户、承包商、转账等。新应用程序已经在运行并拥有 10k 用户。

目前我只考虑在线/离线迁移。在线意味着,应用程序在迁移期间仍可供其用户访问,离线意味着我将其关闭并显示技术中断消息,并且正在处理迁移。客户不想关闭应用程序,因此这意味着在线迁移。当应用程序打开时(用户可以访问),许多用户可能会执行不同的操作(也使用外部系统),并且许多后台进程正在工作并更改数据库数据。在线迁移风险很大: - 没有数据库备份,因为在迁移过程中许多用户会在应用程序中做不同的事情,所以没有返回点, - 迁移过程中的问题可能会阻止在线用户(数据库、事务锁等)。

也许您有一些优势可以让我的客户相信在线迁移是无稽之谈?它们可以按应用层划分——Jboss 服务器风险、数据库风险、业务风险..

【问题讨论】:

“在线迁移有什么风险:- 没有数据库备份”并不是客户管理财务数据所需的唯一论据。那是愚蠢的。也许您可以建议在几个月的过程中进行增量离线迁移。每周一次,服务器在产品的最低流量点关闭几个小时,可能像凌晨 2 点到 5 点之类的。迁移 5k 用户什么的。最终每个人都将脱离旧系统 我们会谈论这个,但他们是非技术人员,他们不明白会发生什么坏事 您将不得不尽可能地降低它。 “永久丢失客户数据,零追索权”肯定会为您的客户带来危险信号。你只能为那些不听话的人做这么多。在他们希望您继续反对您的建议的情况下,在法律上保护自己不承担任何责任或其他东西可能是明智的 【参考方案1】:

在迁移过程中,您必须将存储(数据库)置于只读模式。应用程序不会关闭,但某些更改数据的功能将不可用。在只读模式期间,您将数据复制到新的主站点上。复制所有数据后,必须将用户重定向到新站点,并且应用程序再次变为可读写。

如果只读模式不可接受,那么您必须保持两个数据库同步。 GoldenGate 等产品可以为您做到这一点。

【讨论】:

有趣的想法,但是,它是一个金融应用程序,它必须在高峰时段进行读写,并且它在无法写入数据库时​​没有这种业务异常处理。它会说“未知问题,未知内部问题,请稍后再试或联系管理员”我需要一些额外的开发和测试。

以上是关于将旧应用程序的用户迁移到工作应用程序上的新用户的主要内容,如果未能解决你的问题,请参考以下文章

如何将旧的小部件迁移到新的小部件

将旧 (Django 0.97) 模型数据导入/迁移到 Django 1.8 或更高版本

将应用数据迁移到新的 IOS 应用

将旧版 WCF 应用程序迁移到 CoreWCF

在应用程序的新更新中从核心数据迁移到 sqlite

使用 Apache 将旧域上的旧路径重定向到新域上的新路径