架构没有好坏之分,只有最适合业务的架构,才是最好的。
如何选型
这里我举个例子来说明架构选型是要跟业务匹配的。我们先来了解三种架构:
单体架构
:一个典型的单体应用就是将所有的业务场景的表示层、业务逻辑层和数据访问层放在一个工程中,最终经过编译、打包,部署在一台服务器上。微服务架构
:微服务是将一个大型复杂软件应用由一个或多个微服务组成,系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。Serverless架构
:无服务器架构是指大量依赖第三方BaaS(后端即服务)服务或暂存容器中运行的自定义代码FaaS(函数即服务)的应用程序,函数是无服务器架构中抽象语言运行时的最小单位。Severless架构中,我们关注运行函数所需的时间,从而计算需要支付多少服务费用。
架构类型 | 什么时候采用 | 什么时候不采用 | 采用案例 |
---|---|---|---|
单体架构 | 应用中的各个模块紧密耦合在一起,这些模块在事务上下文中完全相互依赖。需要所有数据操作的即时一致性。 | 应用中的模块可以进一步解耦为原子性的业务服务,或者通用技术功能。 | ERP,CRM |
微服务架构 | 应用的各个模块在运行时以及事务处理中是完全独立的,各个模块的数据可以以无状态的方式进行操作,即使模块间有耦合,也可以通过最终一致性来达到解耦的目的。 | 如果不严格依赖其他模块,则无法独立部署和使用应用程序模块。 | 客户服务,订单服务,库存服务 |
Serverless架构 | 具有完全独立性和单独可伸缩性策略的应用程序模块可以分解为业务或技术的单个功能; 没有请求流量时,应用程序将完全关闭; 开发团队不必关心基础架构。 |
长时间运行的作业,CRUD服务或有状态服务 | 认证,通知,事件流 |
架构升级与业务发展
- 我们必须在保证业务不受影响的前提下,引入更加合理的技术架构,不断发展和优化技术架构,同时开发提供一系列稳定的业务应用程序运行于技术架构之上;
- 需要支持快速的技术发展,同时保护业务应用程序不受技术升级的影响;
- 不及时处理技术债务的IT领导者有造成软件和组织面临挑战的风险。技术债务会打乱业务,甚至会产生更多的债务,同时导致不良实践的野蛮生长和顶级人才的流失;没有先进的技术武器,再好的业务也会被人迎头赶上。