如何使用DevOps管理微服务?

时间:2019-06-21 04:13:17

标签: microservices devops

假设我有一个front end节点和三个后备节点toolsblogstore。每个节点相互通信。这些节点中的每个节点都有自己的一组语言和库,并且都有自己的Dockerfile

我了解单个整体Web应用程序的DevOps生命周期,但无法确定DevOps管道如何用于微服务。

  • 每个微服务都会获得自己的github存储库和CI / CD管道吗?
  • 如何使版本保持同步?假设tools微服务使用blog 2.3版。但是blog刚被推送到2.4版本,该版本与tools不兼容。如何使stagingproduction环境保持同步,使其与它们应该依赖的版本保持同步?
  • 如果我将服务tools部署到IP可能会更改的多个不同服务器上,其他服务如何找到该服务的最近位置?
  • 对于整体应用程序,我可以运行一个命令,只需导航到一个站点即可与我的代码进行交互。在本地提供几种不同服务的良好做法是什么?
  • 我在哪里可以了解更多信息?

1 个答案:

答案 0 :(得分:2)

  
      
  • 每个微服务都会获得自己的github存储库和CI / CD管道吗?
  •   

根据我的经验,您可以同时进行。我看到一些团队将多个微服务放在一个存储库中。 当Jenkins管道以通用方式构建时,我们会将每个微服务放在单独的存储库中 以这种方式构建它们的方法。这包括在特定目录中有一些配置文件,例如 “ /Scripts/microserviceConf.json” 在某些情况下,这对我们有所帮助。通常,您还应该考虑成本,因为GitHub具有定价模型 这确实考虑到您有多少个私有存储库。

  
      
  • 如何使版本保持同步?假设微服务工具使用博客版本2.3。但是博客刚刚被推送到2.4版,   与工具不兼容。我如何保持演出和制作   环境应该同步到他们应该依赖哪个版本?
  •   

您需要向后兼容。意味着如果您的博客2.4版本与工具版本2.3不兼容,则您将具有较高的依赖性 和耦合,这再次成为微服务的主要优势之一。有许多方法可以解决此问题。 您可以在微服务中引入版本控制系统。如果您要刹车,可以说一个您需要支持的API 旧版本仍然存在一段时间,并创建新api的新v2。像POST一样,“ blogs / api / blog”将拥有一个新的api 具有微服务的新功能和工具的POST“ blogs / api / v2 / blog”将在您所支持的时间内有所作为 bot api,因此可以迁移到v2。 还可以查看语义版本here

  
      
  • 如果我将服务工具部署到IP可能会更改的多个不同服务器上,那么其他服务如何找到最近的服务器   服务的位置?
  •   

我不太确定你在这里的意思。但这朝着微服务编排的方向发展。通常您的云提供商 服务具有处理此问题的工具。您可以查看AWS ECS和/或AWS EKS Kubernetes服务以及它们的服务方式。

  
      
  • 对于整体应用程序,我可以运行一个命令,只需导航到一个站点即可与我的代码进行交互。什么是好的做法   在本地开发几种不同的服务?
  •   

我建议使用docker和docker-compose创建您的开发设置。您将创建一个docker的本地开发网络 代表整个系统的容器。这将包括:您的微服务,基础架构(数据库,缓存,助手)和其他。您可以在此答案here中详细了解它。在“考虑开发设置”部分中进行了描述。

  

我在哪里可以了解更多信息?

有很多学习方法。一些是:

  1. https://microservices.io/

  2. https://www.datamation.com/applications/devops-and-microservices.html

  3. https://www.mindtree.com/blog/look-devops-microservices

  4. https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/multi-container-microservice-net-applications/multi-container-applications-docker-compose