让我们假设你正在构建一个Calculator应用程序。您将允许客户使用自己的徽标和CSS样式表来定制此计算器。客户将他们的域名指向托管的计算器,应用程序将为每个客户提供正确的主题。例如:构建托管/ SAAS应用程序时,如果允许客户自定义,如何管理多个版本?
- www.AcmeCalculator.com将成为了Acme的标志计算器,和他们创造了一个平淡无奇的企业风格。
- www.HellzCalc.com将服务器与一些地狱天使骑自行车的迹象和他们创造的黑色,血红色的主题计算器。
你已经推出了计算器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,最后在没有(应用)客户端被删除时删除模式1.0。
我确定这种类型的问题出现之前,我想看看其他人如何解决它。也许甚至有这样的“最佳实践”。
说起来容易做起来难。 – nurikabe 2014-06-06 16:29:18