新项目用了 Web + BFF + Service 这种前后端分的比较开的架构,用起来蛮舒服,其中 Web 层负责提供 HTML / JS;BFF 层则是做权限校验、缓存、逻辑整合、内容聚合拆分、向 Service 层请求数据;最底层的 Service 层提供数据库的数据操作,过滤等 API,这层位于内网,只有 BFF 层可以访问。三层都通过 HTTP 协议来提供服务。

这个架构的好处很明显

  • 前后端分离,修改十分方便
  • 系统拓展性强,可以通过修改 BFF 的方式来控制暴露出去的 API
  • 每个 Service 都只负责自己功能下的小型数据库,可以灵活使用不同数据库种类来使系统发挥更好的性能
  • 系统权责明确,每个部件只需要维护自己的逻辑

可提高的地方在

  • 底层难以对应到上层业务,Debug 复杂
  • HTTP 请求数量显著增多,使得系统性能降低
  • 开发、测试难度提高,LOG 增多

这种前后端分离的实现方法,在业界也叫做 SOA,即面向服务架构,和面向方法,面向对象,和面向切面相比,它的关注点在更为宏观的层面;对于传统的软件架构来讲,它更符合 KISSY 的理念,更易于拓展,同时也更为开放。

wiki 看了一下编程范式,里面很多词汇都是经常读到却不知道它的具体意思,这几天读一下,读完来会来这里介绍一下这些范式。