我们是一家初创公司,并且正在开始将整个 Web 应用程序移植到一个解耦概念,其中 Angular Web UI 与一组微服务进行对话。这是您的标准现代方法。我们策略的不标准之处在于,我们的 CTO 强烈建议(基本上坚持)我们将 Angular 前端的代码与所有用 PHP/Lumen 编写的微服务一起包含在同一个 monorepo 中。假设的优势是,如果所有内容都在同一个 repo 中,那么对通用协议(如 JSON 结构等)的更改将更容易处理。虽然我完全愿意将所有微服务保存在同一个 monorepo 中,但我真的很犹豫是否将 Angular 代码也放入其中,主要是因为我似乎找不到任何最佳实践或先例。我进行了搜索和搜索,似乎没有人愿意分享这种设置的经验。对于这种特定类型的设置,是否有推荐的方法?
问问题
365 次
1 回答
3
如果您查看“具有微服务的 12 要素应用程序”,您将获得有关最佳实践的详细信息。
如果您将代码放在一个存储库中,使用 CI/CD 工具在任何地方进行一次签入,将同时在前端部署后端系统和 UI 的所有服务,起初这可能没问题,但它会增加部署时间添加更多服务,如果您想避免这种行为,您可能必须编写一些自定义代码来检测特定于 UI/Services 的更改,但您可以获得代码共享的优势。
如果您将 JSON 结构保存在公共存储库中并在客户端和服务器端共享,您甚至可以与多个存储库共享代码。
一旦添加了更多类型的客户端(例如 iOS/Android),并且每个团队都希望拥有自己的部署和发布周期,这一切都变得难以管理和部署。
同时,为了简单起见,您可以从单个存储库开始,一旦您开始看到任何这些问题,您可以将它们移出到单独的存储库中。
于 2018-07-20T04:09:04.563 回答