知识卡片

App的"拆"与后端微服务的"拆":两个本质区别

普通读书笔记卡

内容

可扩展的基本思想就是”拆”,但这个思想应用到App和后端系统时,具体做法明显不同。App和后端系统存在一个本质区别:App是面向用户的,后端系统是不面向用户的。因此App再怎么拆,对用户呈现出来的还是只能是同一个App,不可能把一个App拆分成几十个独立的App;而后端系统就不一样了,采用微服务架构后,后端系统可以拆分成几百上千个子服务都没问题。同时,App的业务再怎么拆分,技术栈都必须是一样的,不然没法集成在同一个App里;而后端系统不同,不同的微服务可以用不同的技术栈开发,互不影响。正是因为存在这两点本质差异(对外呈现的单一性、技术栈的统一性),App层面的”拆”才发展出组件化、容器化这类专门的架构形式——把超级App拆分为众多遵循统一规范、可以独立开发测试上线的组件,组件之间通过消息系统通信实现隔离,而不是像后端微服务那样直接拆成独立部署、独立技术栈的服务。

参考来源

- 位置:《从零开始学架构》第49讲《谈谈App架构的演进》"组件化 & 容器化"(源文件:_epub-src/OEBPS/text00003.html) - 结论依据:原文说明"App 和后端系统存在一个本质的区别,App 是面向用户的,后端系统是不面向用户的,因此 App 再怎么拆,对用户还是只能呈现同一个 App,不可能将一个 App 拆分为几十个独立 App;而后端系统就不一样了,采用微服务架构后,后端系统可以拆分为几百上千个子服务都没有问题。同时,App 的业务再怎么拆分,技术栈是一样的……而后端就不同了,不同的微服务可以用不同的技术栈开发",直接支撑本卡结论。 - 原始内容:App 和后端系统存在一个本质的区别,App 是面向用户的,后端系统是不面向用户的,因此 App 再怎么拆,对用户还是只能呈现同一个 App,不可能将一个 App 拆分为几十个独立 App……同时,App 的业务再怎么拆分,技术栈是一样的,不然没法集成在一个 App 里面;而后端就不同了,不同的微服务可以用不同的技术栈开发