假设我有一个front end
节点和三个后备节点tools
,blog
和store
。每个节点相互通信。这些节点中的每个节点都有自己的一组语言和库,并且都有自己的Dockerfile
。
我了解单个整体Web应用程序的DevOps生命周期,但无法确定DevOps管道如何用于微服务。
tools
微服务使用blog
2.3版。但是blog
刚被推送到2.4版本,该版本与tools
不兼容。如何使staging
和production
环境保持同步,使其与它们应该依赖的版本保持同步?tools
部署到IP可能会更改的多个不同服务器上,其他服务如何找到该服务的最近位置? 答案 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中详细了解它。在“考虑开发设置”部分中进行了描述。
我在哪里可以了解更多信息?
有很多学习方法。一些是: