构建托管/ SAAS应用程序时,如果允许客户进行自定义,您如何管理多个版本?

Rob*_*ell 5 versioning saas hosted-app release-management

让我们假设您正在构建一个Calculator应用程序.您将允许客户使用自己的徽标和CSS样式表自定义此计算器.客户将其域名指向您的托管计算器,该应用程序将为每个客户提供正确的主题.例如:

  • www.AcmeCalculator.com将提供带有Acme徽标的计算器,以及他们创造的平淡企业风格.
  • www.HellzCalc.com将通过一些Hell's Angels骑车标志和他们创造的黑色血红色主题来为计算器提供服务.

你已经推出了计算器1.0,并且每个人都已经编写了他们的样式来处理这个版本.

下个月你准备发布计算器1.1,它增加了一个新功能,让我们说"科学模式",它要求你添加一些新的UI - 在这个例子中的HTML - 组件.这意味着如果您推出1.1,您将打破一些客户的风格.

我提出的最佳解决方案是保持应用程序的多个版本运行.例如:

  • www.AcmeCalculator.com解析为您的应用服务器,该服务器检查Acme当前所使用的版本,并转发至www.AcmeCalculator.com/1.0
  • www.HellzCalc.com解析为您的应用服务器,它注意到它们在新的1.1版本上运行,因为他们更新了他们的CSS以处理新版本并点击了"完成升级"按钮或其他任何内容,所以他们得到了重定向到" www.HellzCalc.com/1.1

这个系统的一个问题是,你将不可避免地拥有从不投资升级的懒惰客户.你将会巧妙地运行200个版本,尝试修复每个版本中的错误,基本上是疯了.

一种解决方案是使用每月托管费的一部分来雇用"UI迁移团队",该团队将是一组设计师,他们唯一的工作就是不断地将客户端放在运行最旧版本的队列中并调整他们的CSS并验证他们在最新版本上运行.这将允许您同时仅支持X版本,其中X是您在UI迁移团队中投入多少资金的函数,添加资源以加速或减慢它们.

同样的想法适用于数据库更改:计算器1.0和1.1在数据库1.0上运行,但计算器1.2在数据库1.1等上运行.您可以添加具有版本名称的模式,并使用类似的"数据迁移团队"来移动数据架构1.0到架构1.1,最后在没有(app)客户端时删除架构1.0.

我确定此类问题已经出现过,我想看看其他人是如何解决的.也许甚至有一个"最佳实践".

GxF*_*int 0

不要采用并行的自定义版本,而是实施一个可供所有客户访问的可配置版本。

这会给你编码带来更多麻烦,但是当你启动并运行你的应用程序时,你只需要担心你的新需求是什么,而不用担心这些新需求会破坏什么。