我很好奇其他人如何构建(或建议构建)具有多个角色的Azure应用程序。特别是我很好奇你如何在订阅和托管服务之间打破它们。
在我的特定情况下,我们有一个托管webapp&的web角色。 API。这种变化很快,有时每天多次。我们还有几个不同的工作人员角色来处理视频处理,电子邮件发送和报告/分析等工作。工人很少改变,有时每月不到一次。我们将这一切都运行在一个订阅中。每个角色都在自己的托管服务中。
此设置可让我们轻松部署一个角色,而不会影响其他角色。它还避免了不必要地中断工作者角色,因为它们有时处于必须重新启动的长(10+分钟)处理作业的中间。
那么你们是怎么做到的?
我提出的部分原因是微软似乎希望您将所有内容都放入一个托管服务中。例如,预览中的新缓存功能仅在单个托管服务中可见,这使得它对我目前的布局几乎无用。
答案 0 :(得分:4)
这是一点意见,但我认为你有权利。为所有角色部署单个程序包(原子更新,版本控制等)肯定有优势。但是,在更复杂的场景中,我发现拆分为不同的部署,托管服务运行良好。如果您需要地理冗余,则必须进行不同的部署。
如果您对版本控制小心(假设您的部署进行通信),您可以轻松地进行不同的部署并获得更快部署的好处。我们发现我们的工作者角色的部署率比我们的Web角色高得多,因此将Web角色拆分出来是有意义的。借助新的Windows Azure网站功能,我们正在认真考虑将它们拆分出来,并简单地运行我们应用程序的Web部分。我们的API可以去那里,甚至可以部署到其他专用实例。
我们唯一没有做的就是订阅之间的分割。我认为没有技术理由这样做。可能有一个企业可以绕过配额,但实际情况是订阅并不重要。如果您使用Mgmt API为不同的托管服务使用不同的订阅ID,那么以后可能会非常痛苦。为了管理目的,我也会毫不犹豫地混合和匹配来自不同订阅的存储和托管服务。 Probaby最好把它全部保存在同一个子中。