docker - Web UI 代码和微服务在同一个 monorepo 中?

标签 docker repository microservices web-application-design

我们是一家初创公司,并且正在开始将我们的整个 Web 应用程序移植到一个解耦概念的过程中,其中 Angular Web UI 与一组微服务进行对话。这是您的标准现代方法。
我们策略的不标准之处在于,我们的 CTO 强烈建议(基本上坚持)我们将 Angular 前端的代码与所有用 PHP/Lumen 编写的微服务一起包含在同一个 monorepo 中。假设的优势是,如果所有内容都在同一个 repo 中,那么对通用协议(protocol)(如 JSON 结构等)的更改将更容易处理。
虽然我完全愿意将所有微服务保存在同一个 monorepo 中,但我真的很犹豫是否将 Angular 代码也放入其中,主要是因为我似乎找不到任何最佳实践或先例。我进行了搜索和搜索,似乎没有人愿意分享这种设置的经验。对于这种特定类型的设置,是否有推荐的方法?

最佳答案

如果您查看“具有微服务的 12 要素应用程序”,您将获得有关最佳实践的详细信息。

如果您将代码放在一个存储库中,使用 CI/CD 工具在任何地方进行一次 checkin ,将同时在前端部署后端系统和 UI 的所有服务,起初这可能没问题,但它会增加部署时间添加更多服务,如果您想避免这种行为,您可能必须编写一些自定义代码来检测特定于 UI/Services 的更改,但您可以获得代码共享的优势。

如果您将 JSON 结构保存在公共(public)存储库中并在客户端和服务器端共享,您甚至可以与多个存储库共享代码。

一旦添加了更多类型的客户端(例如 iOS/Android),并且每个团队都希望拥有自己的部署和发布周期,这一切都变得难以管理和部署。

同时,为了简单起见,您可以从单个存储库开始,一旦您开始看到任何这些问题,您可以将它们移出到单独的存储库中。

关于docker - Web UI 代码和微服务在同一个 monorepo 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51408476/

相关文章:

Spring boot (Netflix) Eureka 副本

java - 将 Springboot 从 2.1.0 迁移到 2.2.1 时出现 Mongo 错误

docker - 如何在不发送上下文的情况下构建docker镜像?

git - 如何在 Git 远程存储库上触发垃圾回收?

repository - 我可以让 perforce 中的延时 View 更快吗?

Kubernetes - 如何在 PVC 中提及 hostPath?

json - Jq没有突出显示Docker检查输出

docker - Docker 中的 WSL2 Caddy 反向代理

awk - 如何转义Fish shell变量以用作awk模式?

github - github 存储库可以属于多个组织吗?