Azure 应用服务环境是否适合微服务架构

Is Azure app service environment a good fit for microservices architecture

我正在考虑将一组 REST 服务部署到 Azure 中。这些服务用于支持移动应用程序前端和基于 Web 的前端。我希望它们可以独立部署和扩展。他们将需要通过其他团队或第三方相互通信以及一些其他 Web 服务、API 等 developed/maintained。不确定它们是否是纯微服务,但想法是每个服务都负责 "domain",但它可能需要从其他服务之一获取信息。例如,一个负责 getting/updating 客户的地址,另一个负责偏好。

我不确定是应该为每项服务创建一个单独的应用服务环境,还是应该为所有服务创建一个应用服务环境?撇开成本不谈,是否有任何技术原因让它们都在同一个应用程序服务环境中?我的第一个想法是为每个服务创建一个应用程序服务环境,因为这会提供最大程度的隔离,但很多在线示例让人觉得人们似乎在同一个应用程序服务环境中部署多个 apps/services。

谢谢

微服务是每个人在 his/her 头脑中都有自己定义的词之一,但我知道您想在域级别对功能进行分组,这样您就可以避免需要长期维护的庞大服务群运行。我会尽量简化事情。

1) 应用服务计划 -> 托管虚拟机

将应用服务计划想象成托管虚拟机,一切都为您准备就绪。您可以向上扩展(提供更多资源)或向外扩展(使用自动为您设置的负载均衡器创建多个实例)。最低生产级别计划 P1V2 配备 3.5GB RAM 和 210 acus。对于一般的微服务来说,它非常强大,可以服务于一些调用并将数据保存在数据库中。

2) 在一个计划中对微服务进行分组

我建议你这样做。您可能会说成本无关紧要,但当您的公司发展壮大并且您将拥有 100 项服务 运行 每个计划时,这实际上很重要。如果你一个一个地部署,还要考虑不必要的资源支出(你可能会使用 dev/test 计划来部署你的应用程序以获得更少的资源,但功能也有限)。

那么如何分组呢?有很多方法可以做到这一点,我只会说出其中一些我看到效果很好的方法。

  1. 按域。如果您有两个或多个彼此密切相关的服务,您可能需要在同一个计划中使用它们,因此如果您想扩展并提高性能,您将只扩展一个计划。

  2. 通过外部依赖。如果您的某些服务被第三方调用或给第三方调用,那么将它们组合在一个计划中并将它们放在 api 网关后面可能是一种好方法,这样它们就可以保持 public ip static,无论您是否要删除服务并重新创建它。一些第三方也将 IP 列入白名单,因此最好将您的出站 IP 地址保持静态。

  3. 性能。由于服务将共享资源,因此隔离一些非常重要的服务非常重要。同样的事情适用于可能在短时间内选择大量工作负载的服务,这可能会耗尽机器资源,从而延迟托管在一起的所有其他服务。

回答其中一条评论中的建议,Service Fabric 不是 Azure 微服务的未来。它得到维护,但不会再有更多的发展。 Microsoft 正在将他们的客户转向 AKS 或 Web 应用程序。但在我看来,AKS 有点难以维护,即使是托管版本也是如此。

最后,我认为应用服务和 web/api 应用是在 Azure 中部署微服务的不错选择。将它们保持在同一区域并适当地拆分它们。设置和维护非常容易。

希望对你有所帮助。如果您需要更多具体信息,请随时与我联系。