架构的定义
软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件,软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
单体架构
一个典型的单体架构就是将所有的业务场景的表现层,业务逻辑层,数据访问层放在一个工程中最终经过编译,打包,部署在一台服务器上。一个程序里包含了一个系统/产品的所有业务功能,比如一个ERP系统,就包含了商品模块、订单模块、采购模块、销售模块、库存模块、报表模块等等,这个程序在部署时就是一个进程,比如把war包部署到tomcat中。在课程中形容他就是会从开张买原材料到会做各种蛋糕的师傅。

优缺点
- 访问量小的时候,这种架构的性价比还是比较高的,开发速度快,成本低
- 但是随着业务的发展,逻辑越来越复杂,代码量越来越大,代码的可读性和可维护性越来越低。如果只部署一个,显得很脆弱,这个进程挂了,服务就全挂了
垂直应用架构
将传统的单体架构应用拆分成互不相干的几个小应用,这些小应用独立的部署到不同的服务器上,以提升效率。比如,整个儿大应用:用户功能、订单功能以及商品功能拆分成一个一个的小应用,而且每个的小应用都是很完整的,在课程中,利用了一个做蛋糕的师傅例子:

将做蛋糕卖蛋糕的作用拆分成售卖阶段、撒料等、烤面板、和面等几个阶段。
此外,水平也可以切分成几个相互独立的功能,解耦合,比如不同的面包,有些只需要撒料,有些只需要塑性,等等,提高性能专一性。
架构服务类型
- 软件即服务(SaaS) :这是一个完整的软件应用程序,具有用户界面;
- 平台即服务(PaaS) :开发人员可以在其中部署自己的应用程序的平台;
- 基础设施即服务(IaaS) :提供机器、存储和网络资源,开发人员可以通过安装自己的操作系统、应用程序和支持资源来管理。
- 功能即服务(FaaS): 是Functions as a Service的缩写,也叫函数服务化,只需要关注业务代码逻辑,无需关注服务器资源,它允许开发人员以功能的形式来构建、运行和管理这些应用包,无需维护自己的基础架构。 这是我参与「第五届青训营 」笔记创作活动的第8天.