1. BFF 问题
复杂性增加
:添加 BFF 层会增加系统的复杂性,因为它需要在后端 API 和前端应用程序之间处理请求和响应性能问题
:如果 BFF 层的实现不当,可能会导致性能问题,因为它需要在后端 API 和前端应用程序之间传输大量数据安全风险
:如果 BFF 层未得到正确保护,可能会导致安全风险,因为它可能会暴露敏感数据维护成本
:BFF 层需要维护和更新,这会增加维护成本测试复杂性
: 由于 BFF 层需要在后端 API 和前端应用程序之间进行测试,因此测试可能会变得更加复杂运维问题
: 要求有强大的日志、服务器监控、性能监控、负载均衡、备份冗灾、监控报警和弹性伸缩扩容等
2. Serverless
- 这些问题可以通过
Serverless
来解决 - Serverless = Faas (Function as a service) + Baas (Backend as a service)
FaaS
(Function-as-a-Service)是服务商提供一个平台、提供给用户开发、运行管理这些函数的功能,而无需搭建和维护基础框架,是一种事件驱动由消息触发的函数服务BaaS
(Backend-as-a-Service)后端即服务,包含了后端服务组件,它是基于 API 的第三方服务,用于实现应用程序中的核心功能,包含常用的数据库、对象存储、消息队列、日志服务等等
3. Serverless 优势
节省成本
:在传统架构中,你需要为应用程序所使用的服务器付费,即使它们没有被使用。在Serverless
架构中,你仅需为实际使用的资源付费,这可以节省大量成本更快的开发周期
:Serverless
架构允许开发人员更快地构建和部署应用程序,因为它们可以更快地获得所需的资源更好的可伸缩性
:Serverless
架构可以自动扩展来满足增长的流量需求,无需人工干预更好的可维护性
:在Serverless
架构中,你无需担心底层基础架构的维护,因为这些工作由云服务提供商负责更高的可用性
:由于Serverless
架构具有自动扩展功能,因此它可以更好地应对突发流量,从而提高应用程序的可用性
4. Serverless 的缺点
复杂性
:Serverless
架构可能会使应用程序的体系结构变得更加复杂,因为它需要将应用程序拆分为许多小型函数性能问题
:在某些情况下,Serverless
架构可能会导致性能问题,因为函数执行需要额外的时间来启动和终止限制
:每个函数都有资源限制,因此需要仔细规划应用程序的体系结构,以免超出这些限制依赖云服务提供商
:使用Serverless
架构需要依赖云服务提供商,因此如果这些服务出现故障,可能会对应用程序造成影响调试困难
:由于Serverless
架构使用许多小型函数,因此调试可能会变得更加困难