我目前已经交付了一个带有Java API后端的SPA (Vue.js) web应用程序。目前所有的东西都放在AWS上,前端在CloudFront,后端在ECS连接到RDS实例。
作为下一阶段交付的一部分,我们正在创建一个B2B API。我的问题是,在架构设计和部署策略方面,仅仅用B2B功能扩展现有API是否很常见?我是否应该将它们与前面的API网关分开?我们设想B2B使用最终将超过SPA用例,因此初始部署配置需要具有最大的灵活性来增长和扩展。
这里是否存在某种最佳实践?我想这两个后端之间也会有很多相似的代码。
谢谢,特里
首先,决定服务边界是面向服务的体系结构设计中最困难的问题之一,其答案很大程度上取决于您确切的领域需求。
通常,我会根据领域/功能以及组织关注点(例如,单独的团队开发它们)来拆分服务实现,而不是根据它们的目标受众。这通常可以避免团队责任不明确等尴尬情况。如果它将成长为一个非常大的项目,那么可能还需要多层服务和共享库——在这一点上,你可能会遇到必要的重构/重构。
所以,如果你的b2b和常规api在功能上有很大的重叠,你可能不想分开实现。
但是,您可能还必须考虑如何提供服务访问,API网关可以帮助为不同的受众、不同的收费模型、不同的认证选项等提供不同的端点。根据您的确切需求,API网关可能还不够,这可能还需要另一个使用公共域服务的瘦服务层实现。