微服务架构~BFF和网关
介绍 BFF(Backend for Frontend)和网关Gateway是微服务架构中的两个重要概念,这两个概念相对比较新,有些开发人员甚至是架构师都不甚理解。 本文用假想的公司案例+图示的方式,解释BFF和网关是什么,它们是怎么演化出来的。希望对架构师设计和落地微服务架构有所启发。 服务化架构V1 我们先把时间推回到大致2011年左右。假设有一家有一定业务体量的电商公司A,在这个时间点它已经完成单块应用的解构拆分,内部SOA服务化已经初步完成。这个时候它的无线应用还没有起步,前端用户体验层主要是传统的服务端Web应用,总体服务化架构V1如下图所示。 服务化架构V2 时间转眼来到2012年初,国内的无线应用开始起风,A公司也紧跟市场趋势,研发自己的无线原生App。为了能尽快上线,公司的架构师提出如下V2架构,让App直接调用内部的服务: 这个架构有如下问题: 无线App和内部微服务强耦合,任何一边的变化都可能对另外一边造成影响。 无线App需要知道内部服务的地址等细节。 无线App端需要开发大量的聚合裁剪和适配逻辑: 聚合 :某一个功能需要同时调用几个后端API进行组合,比如首页需要显示分类和产品细节,就要同时调用分类API和产品API,不能一次调用完成。 裁剪 :后端服务返回的Payload一般比较通用,App需要根据设备类型进行裁剪,比如手机屏幕小