【问题标题】:Architecting a SaaS for backwards-compatibility in regards to data and business logic构建 SaaS 以实现数据和业务逻辑的向后兼容性
【发布时间】:2015-04-30 22:40:22
【问题描述】:

我有一个 SaaS 平台,用户在该平台填写表格,然后将输入表格的数据保存到数据库中。表单 UI 有大量的配置(源自 DB,但最终以 JavaScript 结尾)和业务逻辑(以 JavaScript 编写)。填写并保存表单后,用户可以随时返回并进行编辑。

问题在于,旧表单条目的行为需要与首次填写时一样 - 它需要相同的配置和业务逻辑 - 即使 SaaS 经历了数据架构更改和业务逻辑更改然后。

为了确认,用户填写的新表单当然会使用新的/当前的数据架构和业务逻辑。但是以前的表单需要像创建时一样运行。

所以我需要一种明智的方式来版本配置、业务逻辑和任何依赖项。

我想出的最好办法是,当用户保存他们的条目时,将表单的配置与条目一起保存为 JSON。当用户返回编辑旧条目时,我不会从当前数据库模式加载配置,而只是转储与条目一起保存的 JSON 配置。

对于业务逻辑,我将系统版本号与条目一起保存,例如“01”。当用户加载旧表单时,我会检查条目的版本,然后从“js/main_01.js”之类的路径加载表单 JavaScript。当我对业务逻辑进行非向后兼容的更改时,我会将系统的版本号增加到例如“02”。然后新表单将使用“js/main_02.js”。我还将这种廉价的版本控制方法用于 HTML 视图模板,这会变得很麻烦。

这种方法有效,但似乎有点脆弱或本土化。我试图避免在我的业务逻辑中使用条件,例如if version==2: do this。这种方法避免了这种情况,但也有缺点。

我不认为堆栈对于这个 convo 真的很重要,但以防万一,我正在使用 django/mysql。

【问题讨论】:

    标签: versioning backwards-compatibility data-migration saas


    【解决方案1】:

    你可能会得到大量的“意见”,但没有真正明确的答案。

    您可以通过多种方式为您的配置和逻辑开发 API,并将版本控制与提交的数据一起保存,因此需要 API-Manager 解决方案。

    但是,您可以将整个 DOM 对象存储在存储数据的记录中,从而创建一个可以随意调用和重新提交的静态页面,并将视图和模型分开。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      相关资源
      最近更新 更多