Docker compose 本地开发微服务、方法和工具,以高效工作

Docker compose 本地开发微服务、方法和工具,以高效工作,docker-compose,microservices,docker-swarm,development-environment,skaffold,Docker Compose,Microservices,Docker Swarm,Development Environment,Skaffold,我与团队成员一起开发微服务体系结构,但我在工作方式上有问题。事实上,我有太多的微服务,当我在开发过程中运行它们时,即使有一个好的工作站,它也会消耗太多内存。所以我使用docker compose来构建和执行MSA,但这需要很长时间。人们经常听说如何在技术上构建MSA,但从未听说如何高效地构建MSA。在这种情况下你怎么办?你是怎么工作的?您是否使用工具或任何其他工具来改进和促进您的发展。我听说过Skafold,但我不知道docker compose和cluster env中的简单ci/cd有什么区

我与团队成员一起开发微服务体系结构,但我在工作方式上有问题。事实上,我有太多的微服务,当我在开发过程中运行它们时,即使有一个好的工作站,它也会消耗太多内存。所以我使用docker compose来构建和执行MSA,但这需要很长时间。人们经常听说如何在技术上构建MSA,但从未听说如何高效地构建MSA。在这种情况下你怎么办?你是怎么工作的?您是否使用工具或任何其他工具来改进和促进您的发展。我听说过Skafold,但我不知道docker compose和cluster env中的简单ci/cd有什么区别。请随意给出提示和您的意见。谢谢

我在微服务和本地开发方面有相当多的经验,以下是我见过的一些方法:

  • 在docker或k8上本地运行所有内容。如果使用k8,那么像skaffolding这样的工具可以更容易地在IDE中本地运行和调试服务,但可以将其放入本地k8中,以便它可以与其他k8服务通信。它工作正常,但在k8或docker中本地运行4或5个以上的完整服务需要投入大量的CPU和内存
  • 构建所有服务的模拟版本。将这些用于本地和集成测试。模拟服务有意地要简单得多,因此更容易在本地运行许多模拟服务。明显的缺点是,您必须为每个服务构建模拟版本,并且您很容易忽略模拟服务行为与实际服务不同而导致的错误。像Hoveryfly这样的记录/回放工具可以帮助构建模拟服务
  • 为每个开发人员提供自己的云环境。在云中运行大多数服务,但使用类似于在云中集群内外交换本地运行的服务的工具。这消除了在一台机器上运行太多服务的问题,但可能需要花费大量的资金为每个开发人员维护单独的云沙盒。您还需要一个DevOps资源,以便在开发人员的云沙箱出现问题时提供帮助
  • 消除不必要的微服务复杂性,并将所有服务整合为1或2个整体。享受能够作为单一服务在本地运行所有内容的乐趣。接受这样一个事实,即微服务体系结构对于大多数公司来说都是过火了。太多的人在需要微服务架构之前就预先选择了它。或者他们这样做是因为害怕将来会需要它。不可避免地,这会导致猜测他们应该如何将系统分解为许多微服务,并将边界和契约弄错,这使得将来修复它与修复一个整体一样困难。他们在需要微服务的几年前就承担了微服务的成本。从本地开发到部署,微服务让一切变得更加昂贵和痛苦。对于像Netflix和亚马逊这样的公司来说,这是必要的。对我们大多数人来说,情况并非如此

  • 如果可能的话,我更喜欢选项4。否则,按该顺序选择2或3。我认为应该避免选项1,但这可能是每个人都首先尝试的选项。

    好问题,但我打赌这个问题很快就会解决,因为它不符合stackoverflow的范围:/哇,这正是我的答案。我非常同意第4点,有6年的微服务经验。