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

2024-04-24 23:06:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

我面临的具体问题/挑战:
*如何在版本控制中最好地分组/分离代码。比如,每个包一个存储库?存储库的数量会很快爆炸。。。你知道吗


Tags: 项目代码实用程序应用程序风格架构体系结构部署
1条回答
网友
1楼 · 发布于 2024-04-24 23:06:28

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

至于应用程序部署、服务依赖性等,我建议您看看Docker for Containeriation、Docker compose for service dependencies Local、Artifactory或ECR for Docker image registries以及容器编排平台(如Kubernetes)。你知道吗

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

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

相关问题 更多 >