整体架构和微服务是开发者组织应用组件的两种方式。架构的选择是开发者的事。那么,你为什么要在乎呢?架构类型不仅影响开发成本,还影响添加新功能的能力。
如果你不想最终重写整个应用程序,了解更多关于单片和微服务之间的区别。因此,花一点时间了解哪种架构类型处理什么。
什么是整体架构
想象一艘巨大的邮轮。它由许多部件组成,包括柴油机、发动机和其他设备。在这样的结构中进行改变是困难的,因为衬里的所有元件相互依赖。
整体架构也是如此。在单片应用程序中,如果不部署整个代码,就不能添加新的组件。由于一个应用程序的所有元素都是相互依赖的,开发者对做出改变非常谨慎。应用组件中的一个错误就可能导致应用崩溃。
整体结构的优点
为什么人们要建立一个单一的系统?
易于构建。单片应用程序是一个巨大的代码库,作为一个单元执行。开发人员不需要考虑应用程序组件的进程间通信。因此,与微服务相比,他们需要更少的时间来构建这样的应用。
快速部署。开发人员部署一个由一个文件组成的应用程序所需的时间更少。
可重用组件。当开发人员面临问题时,他们会重用其他应用程序的代码来解决问题。除此之外,代码重用缩短了应用功能的上市时间。
整体架构的弱点
让我们来看看为什么单体架构不是银弹。
难以扩展。当一个应用的组件需要更多资源时,很难隔离这样一个组件进行独立扩展。
难以添加功能。当开发人员添加新功能时,他们需要更改现有组件的依赖关系。然后,重新部署整个应用程序,这既费时又费力。
难以理解。模块依赖使得应用程序的架构更加复杂。因此,新开发人员很难理解这样一个代码库中的所有依赖关系。
不可能采用新技术。如果新模块使用的编程语言与你的应用不同,则不能向你的应用添加新模块。在这种情况下,您需要重写整个应用程序。
什么是微服务架构
想象一艘由乐高积木制成的船。与邮轮不同,这种船由独立的小部件组成。因此,您可以随时更改现有数据块并添加新数据块,而无需更改整个系统。
微服务和单片应用的区别在于,微服务应用利用负责不同业务逻辑的独立模块。模块可以独立更新、部署和扩展。开发人员使用应用编程接口(API)添加新模块。
微服务优于整体服务
现在,我们来看看微服务为什么好。
容易理解。开发团队需要更少的时间来安装新功能。
最低管理。每个模块需要一个小型的集中控制。
更好的可扩展性。开发人员可以隔离需要更多工作负载的服务,并独立于应用程序的其他部分进行扩展。
微服务架构的弱点
为什么微服务架构不是一刀切的解决方案
漫长的准备。开发人员需要额外的时间来选择和设置所有模块和数据库之间的连接。
资源消耗。应用程序的组件消耗不同数量的服务器内存,影响系统性能。
更高的相关成本。每个微服务都需要其运行时环境。因此,这类应用程序的资源需求更高,这意味着相关成本更高。
现在,让我们看看,您的企业应该使用哪种结构。
单片和微服务:选择什么
那么,单片应用vs微服务?以下是您的业务应用程序对于一种或另一种架构类型的一些需求。
你需要整块软件的例子
在以下情况下选择单片应用:
你需要简单的商业逻辑。你开发了一个没有复杂业务逻辑和可伸缩性的小企业项目,包括应用的MVP。
你的最后期限很紧。整体架构使得在2-3个月内发布项目的第一个版本成为可能。
你的预算有限。整体应用程序开发成本更低,需要的资源和开发人员也更少。
需要微服务的示例
在以下情况下,基于微服务的架构是理想的选择:
你需要很多数据源。您开发了一个项目,该项目具有用于数据收集、聚合等的大量数据管道。
你应用机器学习算法。你需要一个收集、聚合和分析数据流的应用程序。
你更新整体架构。您重构整体模块,并将它们作为微服务运行。
业务逻辑需要许多组件。您开发了一个具有众多特性的项目,并且要为每个特性利用最好的解决方案。
选择整体服务还是微服务:应用解决方案的观点
我们分别建议体系结构类型及其主要组件。我们的选择基于许多因素。它们是:
商业目标
项目类型
项目路线图
客户预算
因此,我们不能说微服务将最适合这个或那个项目。例如,我们不能为一个音乐应用程序建议最好的架构。我们需要知道它是否将只包括回放或像音乐流这样的高级功能。
整体架构与微服务:底线
整体服务和微服务代表了组织组件的两种不同方式。每种方法都有其优缺点。
单片应用程序开发起来更快更容易。但是,它们很难扩展。
微服务对有很多业务逻辑和机器学习功能的app有效。但是,这样的项目需要更多的时间来开发,并且需要更多的精力来管理工作负载。
为了给你的应用推荐架构,开发者需要分析你的商业目标和关于应用扩展的计划。