垂直架构的基本介绍和使用场景
一、基本介绍
要了解垂直架构就要先了解单体架构,垂直架构可以看做是多个单体架构的组合体,单体架构可以看我这个专栏的单体架构基本介绍和使用场景。
垂直架构通常是因为单体架构过于庞大而进行的拆分,拆分后各个系统应满足独立运行且互相不影响。这种架构可以看作是多个单体架构的组合,旨在拆分系统的流量,针对高峰功能进行拓展,优化了单体架构过于庞大时出现的难以维护的问题。
原本作为单体架构开发出来的应用程序,现在由于业务拓展,功能变多,单体架构代码库变得太大,不易于维护和开发,而且故障率还高,因此诞生了垂直架构,比如原来一个管理系统是一个单体架构,是一个完整的应用程序,但现在把用户管理模块,权限管理模块和库存管理模块都拆分成三个单体架构,拆分成三个不相干的应用程序单独运行。这就出现了一个情况,一个应用程序可以分为多个模块,每个模块可以交由一个团队去开发,独立开发独立运行。
二、与单体架构相比的优点
1.模块独立性:各个垂直应用模块之间不再互相依赖,一个模块的变化不会影响其他模块。一个应用程序可以分为多个模块,每个模块可以交由一个团队去开发,独立开发独立运行。
2.灵活性高:可以独立部署和扩展各个垂直应用模块,增强了系统的灵活性,比如现在多开发一个模块,另外起一个单体架构就可以,没有依赖耦合。
3.提升开发效率:不同团队可以并行开发和维护不同的垂直应用模块。
4.流量分担:由于多了几个单体模块,将原来涌入一个单体模块的流量分担为了几份。
5.可用性高:原来单体架构一个点坏了,就整个都坏了,垂直架构要比单体架构稳定。
三、缺点
1.重复工作:相同的功能可能在多个垂直应用模块中重复实现,增加了开发和维护成本。比如每个模块都需要用到相同的功能的话,那么这个功能在每个模块都得写一遍,因为他们之间相互独立,功能无法共享。
2.资源利用率低:由于各个垂直应用模块独立运行,可能导致资源浪费。
3.系统复杂性增加:需要管理多个独立的模块,增加了系统的复杂性。
四、适用场景
垂直应用架构适用于以下场景:
1.业务功能明确且相对独立的系统。
2.需要快速迭代和交付的项目。
3.多团队协作的大型项目。