将实用程序提取到python微服务应用程序库中

将实用程序提取到python微服务应用程序库中,python,structure,microservices,Python,Structure,Microservices,TL;DR:关于将代码提取到可重用、结构良好且可维护的库中,有什么建议或参考资料吗 我正在以微服务风格的体系结构开发python应用程序,我们将开发和部署一系列小型应用程序,每个应用程序都解决一个特定的问题,可能(也可能不是)通过与其他应用程序/外部服务交互 我们刚刚开始转向微服务架构,所以我们已经在一个整体项目中有了相当多的代码。当我们添加新的微服务时,很明显,我们需要将公共代码(如实用程序、基类等)提取到库中,以避免重新实现或复制粘贴代码,这些代码随后必须单独维护。当我试图这么做(我以前从未

TL;DR:关于将代码提取到可重用、结构良好且可维护的库中,有什么建议或参考资料吗

我正在以微服务风格的体系结构开发python应用程序,我们将开发和部署一系列小型应用程序,每个应用程序都解决一个特定的问题,可能(也可能不是)通过与其他应用程序/外部服务交互

我们刚刚开始转向微服务架构,所以我们已经在一个整体项目中有了相当多的代码。当我们添加新的微服务时,很明显,我们需要将公共代码(如实用程序、基类等)提取到库中,以避免重新实现或复制粘贴代码,这些代码随后必须单独维护。当我试图这么做(我以前从未真正这么做过)的时候,我意识到这不是一件小事,可能会很快变得复杂,我也可能会花一些时间过度思考

因此,我正在寻找与这种情况相关的最佳实践方面的建议或参考资料,即编写结构良好的python库,打包和分发库,在微服务体系结构中共享代码,避免犯可能使我陷入问题境地的错误

我面临的具体问题/挑战:

*如何在版本控制中对代码进行分组/分离。比如,每个包一个存储库?存储库的数量会迅速激增…

对于共享库,您可以将其发布到各个存储库中的git,并将其设置为使用Python包管理器在项目中安装它们

至于应用程序部署、服务依赖性等,我建议您查看Docker的容器化、Docker compose的本地服务依赖性、Artifactory或ECR的Docker映像注册表以及Kubernetes等容器编排平台

容器与虚拟机类似,但在更细粒度的级别,即流程级别。这将有效地允许您在本地一起运行服务,以测试和部署它们。每个服务位于不同的存储库中不再重要


如果你没有太多的微服务,你肯定可以使用mono-repo,但是如果你的工程组织很大,下载所有服务的所有更新是相当昂贵的。另一种选择是,您可以让您的服务在各自的有界上下文中进行划分,所有服务都存在于一个回购协议中,以消除这种威慑。长话短说,这真的取决于你会发现什么是有益的。归根结底,最大的问题从来不是你有多少Git存储库,而是你如何定义服务的边界,服务到服务的通信以及部署服务的基础设施。

很多时候,特别是在开发业务应用程序时,从技术角度来看,微服务没有任何意义。在决定技术问题之前,首先要问的真正问题是业务领域以及您打算如何划分它。如果你能举出一些例子来说明你要做的事情,人们会更有可能也更有能力提供帮助。微服务部分并不那么重要,我是在上下文中提到的,随着微服务体系结构变得非常普遍和流行,以及所有使用该体系结构的大公司,我希望这个问题已经被遇到、讨论和解决了。这不是一个代码问题,这是关于项目架构和依赖关系管理的。我意识到我的问题对于stackoverflow来说可能有点太抽象/不清楚。是的,但如何将其拆分将决定哪些内容可以作为库、包等重用,这取决于域,而基础设施并不太依赖于域。是的,没错。我想我是在寻找案例研究,“我们是怎么做到的”类型的故事/文章。这不是你想要的答案吗?如果没有,你能更具体地回答你所问的问题吗。如果唯一关心的是存储库的数量,我认为这将涵盖所有方面。你最关心的是什么?对不起,我不是故意强迫你回答的。我只是想看看我能在哪里澄清以便更好地回答你的问题:)。让我知道我是否还有其他问题可以解决。不,没关系。我想你在最后一段回答了我的问题。