如何跟踪多个版本的程序集?

时间:2017-07-12 23:26:07

标签: c# visual-studio azure asp.net-web-api azure-service-fabric

我们正在将微服务部署到Azure服务架构。

我们如何跟踪我们服务的多个版本?

我们如何在生产中允许多个版本的服务:

  1. 消费者获得一个令牌
  2. 该标记将被发送到标题
  3. 中的微服务
  4. 网关将收到请求并重定向到与标题中的令牌对应的微服务版本
  5. 换句话说,多个消费者将能够点击端点:…./api/accounts(12343),但将根据其标头令牌路由到不同版本的微服务。

    我们是否为每个微服务版本创建单独的TFS分支?我们只是创建一个nuget包存储库吗?

    我们如何跟踪我们服务的多个版本?

    为什么我们要跟踪多个版本?

    1. 也许我们可能想要恢复旧版本。
      1. 也许我们需要在特定版本中为客户端实施修复。
      2. 也许我们需要一个不同版本的服务,因为我们发现它与不同的服务紧密耦合。

1 个答案:

答案 0 :(得分:1)

我认为尝试跟踪不同版本的微服务最终会令人沮丧地难以做到并且容易出错。

我建议您修改方法并以不同方式处理您的具体问题。可能通过web api暴露所有的微服务,并对控制器进行版本控制。

在我的微服务实现中,我不允许微服务相互通信。相反,我使用服务总线队列和主题来完成跨服务通信。通过这种方式,您不需要维护和计划开销,以确保您的系统不会过于耦合,实际上,通过做您正在做的事情,您在我看来正在创建一个整体。微服务应该完全封装,并在给定输入的情况下起作用。电子邮件通知服务不应该呼叫用户服务以获取其他用户数据来制作自定义电子邮件。它应该根据调用通知的任何要求给出,或者应该通过订阅服务总线队列/主题来存储该元数据。您将发现在整个系统中存储重复数据,但是可以实现解耦模式。

我认为您可以采取的一些措施来缓解您的问题,即为您的微服务中的每个公共功能创建单元测试,并在部署到生产之前利用测试环境进行测试。如果您在生产中发现问题,您只需将服务回滚或修复它。

以下是我为所有方法编写的测试类型:

示例函数:AddOrUpdateUser

测试:添加作品
测试:更新工作
测试:如果必填字段为空,则函数失败 测试:如果用户名短于X
,则功能失败 等。

这样做需要时间,但根据我的经验,我的制作中存在非常少的错误,而我的错误很少。

真的,这样的测试应该在每个应用程序中完成,但是在整体中进行测试只会非常困难。使用微服务可以轻松获得超高功能可靠性。