一家考虑使用Azure的小型开发公司



我是一家小型软件公司(我和另一个人),我们目前每月支付约50英镑(75美元)的托管费用。我们有两台VPS机覆盖我们的12个网站。

现在,我正在寻找Azure,看看它是否符合我们的要求。我有几个问题希望大家能帮助我:

  1. 我们的网站使用不频繁(每天最多100个访问者),但我们目前有12个。使用Azure时,您是只在使用网站时付款,还是在机器"开启"时付款?它需要像我们当前的主机一样全天候运行
  2. 我们会创建一台部署机器并将所有12个网站放在那里吗?如果我们需要12个不同的托管服务,它会很快变得昂贵吗?
  3. 我们将如何处理发送/接收电子邮件和计划任务?有一个远程桌面会话可用,所以我可以在这里安装smart Mail和我们的计划任务应用程序吗?

我已经对门户和发布进行了测试,它看起来相当聪明(除了没有SQL Azure的全文搜索),但我真的很欣赏其他人的经验。

  1. 您为web角色运行的每小时付费,即使没有流量访问web角色。除了web角色的每小时费用外,您还需要支付表/Blob/队列存储(如果使用),传出带宽(每gb使用,传入是免费的),SQL Azure(如果使用)以及您可以注册的各种其他Azure服务。

  2. 如果您想在单个web角色上运行所有12个站点,请查看Windows Azure web角色加速器。它有很多很好的功能来帮助你做到这一点。

    然而,请记住,如果你只有一个web角色运行这些网站,你将有停机时间,它可能是在一天的中间。微软不断地进行维护,删除角色,销毁它们,重建它们,然后将它们重新启动以进行更新,迁移等,并且在进行维护时,您的角色可能会关闭一段时间-并且您无法控制此过程。

    为了缓解这个问题,微软建议至少有2个web角色。在您的情况下,这两个角色中的每一个都可以运行所有12个站点。但是,要使其正常工作,必须构建所有站点,使其与任何特定服务器没有关联。也就是说,如果一个用户登录到服务器a,然后服务器a将用户的一些信息放入缓存,那么用户的下一个请求就会转到服务器B,服务器B的缓存中没有这些数据,所以第二个请求可能会失败。你想要避免这种情况——确保你的网站是编写的,以便他们在负载平衡器后面正常工作。

  3. 哎呀,我会小心的。我强烈建议不要通过RDP登录并在web角色上安装应用程序。如果您这样做,下次角色被回收和重建时(这将在Microsoft的定期维护中发生),您这样做的任何自定义安装都将被清除。

    这有两个部分。首先是安装某种电子邮件软件。在"启动任务"中初始化角色时,可以通过命令行方式安装邮件软件。看这里和这里。这将导致每次微软重新构建您的web角色时都重新安装软件。或者,您可以通过API连接到第三方电子邮件服务,例如MailChimp,而不必担心自己处理电子邮件。请记住,如果您自己发送电子邮件,您可能会遇到SPF问题,因为您在Azure中的IP地址可能会不时更改。

    问题3的第二部分与计划任务有关。有两种方法:

    • 使用一个worker角色(或者让web角色也作为一个worker角色运行),这实际上是一个无限循环,一遍又一遍地做一些事情。你可以让它检查Azure队列的工作等,或者检查文件夹中的文件,当它找到一个文件时,它会以某种方式处理它。这假设您希望某些类型的工作在准备就绪后立即完成。如果你想发送电子邮件,你可以这样做:

      。你的web应用程序决定需要发送一封电子邮件。它将电子邮件相关的数据存储在Azure表中,并为电子邮件创建一个ID。

      b。然后,您的web应用程序获取电子邮件的ID并将其添加到Azure队列中,指示需要发送电子邮件。

      c。你的web应用忘记了邮件,给了用户一个响应

      d。工作角色(可能与web角色运行在同一台机器上)从队列中取出消息,看到需要发送电子邮件,从Azure表中获取数据,并发送电子邮件。

      e。然后,工作者角色从队列和表

    • 中清除数据
    • 可以使用计划任务。毕竟,web角色是一个完全成熟的windows服务器,并且确实有预定的任务。然而,与软件安装一样,您需要确保通过启动任务设置您的计划任务,以便即使在角色被回收后它们仍然存在。

总的来说,在使用Azure web角色时,你必须有一点不同的想法。微软正在迫使您走上一条使您的应用程序更具可伸缩性和可靠性的道路。通过清除web角色并在维护期间重新构建它,他们迫使您在脚本中自动安装web角色上的软件/应用程序。这允许更好的可伸缩性,因为当您需要100多个web角色实例时,您所要做的就是更改设置并等待。它提供了更好的可靠性,因为它意味着您的web角色每次都以完全相同的方式设置。

一开始转换到Azure的工作方式可能会有点痛苦,但它最终会带来一些好处。

  1. 你支付CPU时间,即当机器运行
  2. 您可以在一个web角色上部署多个网站
  3. 计划任务可能需要额外的worker角色,即额外的成本

最新更新