google-cloud-run - Cloud Run 构建 API 最佳实践
问题描述
我正在为具有许多子功能的大型应用程序设计一个 API,我想知道在 Cloud Run 上部署它并将其与新的 API 网关一起使用的最佳实践是什么。
例如,假设我有多个具有多种功能的模块,我将以书店应用程序为例:
管理员 - 创建用户
管理员 - 删除用户
admin - 获取用户详细信息
书籍 - 创建书籍
书籍 - 获取书籍
书籍 - 删除书籍
用户 - 添加到购物车
用户 - 从购物车中删除
用户 - 提出新的投诉
用户 - 结帐
在这种情况下,最佳实践是将每个功能部署为自己的单独 Cloud Run 部署,还是应该部署 3 个单独的 Cloud Run 部署,例如 Admin、Books 和 User,每个都有各自的功能。或者我应该在我的烧瓶应用程序中使用端点规范将所有这些部署在 1 个大型部署中?
这些方法的优点和缺点是什么?
解决方案
在这个想法中,你有 3 个服务:Admin、Book 和 User。不要为每个端点创建一个函数。
现在,您的问题取决于很多事情,我认为您的问题将被关闭。但是,我可以简单地建议您搜索一下单体和微服务之间的区别。
微服务独立扩展并允许更好的发布周期(每个团队各自工作,独立交付)。然而,这种架构意味着服务到服务的通信(和监控 -> Istio 很受欢迎!)、延迟、集成测试复杂性......
如果好处不超过问题,则更喜欢单体架构(即,3 个服务只有一个 Cloud Run 服务)。尤其是如果开发所有服务的是同一个团队,并且您不需要独立扩展。
推荐阅读
- java - Android Firebase 数据库获得价值
- html - 如何在 3 列网格视图中添加轮播
- java - 如何将 4096 分辨率的图像保存到 android 的设备库中?
- python - 自定义函数的 Python 到 R 转换
- javascript - 如何在 7 位上将字符串转换为二进制?(JavaScript)
- python - 使用 .shift() 选项将当前月利率与基本利率(旧利率)进行比较
- java - 有没有办法在 systemPath 中使用变量来实现系统范围的依赖?
- r - 功能齐全的文件和位置地址未呈现 rstudio rmarkdown::render()
- angular - mat-sidenav push 属性导致构建错误
- javascript - 在 React js 中选择特定下拉值时禁用按钮