什么是单片application?

单片应用将多个功能的用户界面和数据访问层组合到一个应用中。 通常,单片应用将作为单个代码库存在,由组织内的多个团队进行修改,并作为包含这些团队维护的所有功能的单个单元进行部署。

由于组件紧密集成,单片应用通常更易于开发和部署。 然而,随着应用程序的范围和性能要求的增加,整体式应用程序会变得难以维护和扩展。

单片application架构的示例

单片系统非常适合规模较小、不太复杂且不需要快速扩展或定期维护的应用。 以下是一些通常具有单一基础的应用示例(尽管它们的新功能可能基于更加容器化的基础设施)。

  • 电子商务平台——单体应用在电子商务中很常见,因为一旦基础设施建立起来(建立在线商店、订单处理、支付处理和客户服务),架构就几乎不需要更新。
  • 内容管理系统 (CMS) – 此词汇表条目是由单片应用(WordPress) 实现的。 CMS应用在部署时包含以网页形式进行内容管理所需的所有功能。
  • 银行系统——许多金融系统都是作为单片应用构建的,因为入口点有限,因此更加安全。 此外,部署后,代码库包含消费者期望从网上银行体验获得的所有功能:管理金融交易、支付处理和跟踪。
整体架构的优势

虽然单片架构的某些方面已经过时,但它仍然有许多用途和积极的属性。

整体式架构的优点包括:

  • 简单性——与微服务架构等更复杂的架构相比,集中式架构使整体架构更易于开发、部署和维护。
  • 更快的测试——通过将每个组件集成到一个程序中,可以快速地对单片应用进行整体测试。 与由多个较小组件(例如微服务)组成的架构不同,无需对复杂的通信协议和多个代码存储库进行额外的测试。
  • 安全性——由于恶意行为者的切入点较少,因此整体式系统通常更容易确保安全。 与管理多个安全配置相比,在一个应用中实施安全协议也更容易。
  • 成本——作为单一单元部署,整体式系统无需承担部署和保护额外通信协议、构建更多连接基础设施以及雇用具有更专业技能和培训的员工所产生的额外成本。
整体架构的缺点

虽然整体的单一性有其积极因素,但也可能引发问题。

整体式架构的一些缺点包括:

  • 复杂性蔓延——随着时间的推移,应用程序的增长和增加的功能可能会导致单片架构变得更大、更复杂。 这种蔓延增加了更新可能危及维持整个程序平稳运行的单一代码库的风险。
  • 缺乏可扩展性——当应用的某个功能或区域需要水平扩展时,整个大型应用(包括不需要额外资源的子系统)都必须扩展。 由于部署需要更长的时间,这可能会导致扩展速度变慢,并且由于与微服务相比,每个实例的运行硬件要求更高,因此成本会增加。
  • 弹性——在单片架构中,所有应用组件都紧密链接并从中央代码库运行。 因此,如果一个应用程序失败,整个应用都可能崩溃。
  • 完全重新部署——由于整个应用都由一个代码库代表,因此每当单个组件发生更改或更新时,整体式应用程序都需要完全重新部署。
  • 技术堆栈——由于开发人员必须确保他们使用的任何工具或语言都适合整体架构,因此选择受到限制。 此外,许多单片应用的编写方式与云计算和容器化等更新、更高效的技术并不完全兼容。
  • 开发速度较慢——当多个开发团队在一个大型代码库上工作时,需要格外小心,以确保尊重和维护接口和域边界。 有时,代码会引入复杂的耦合,使得跨团队依赖关系减慢新功能的开发或关键问题的修复速度。
什么是微服务架构?

与单体架构相对的是微服务架构。 微服务是一种软件架构方法,它由小组件构建大型复杂的应用。 这些组件可以各自执行单一功能(例如,身份验证、通知或付款处理)或作为整体内的捆绑包工作。 “微服务”(或简称“服务”)也是指小组件本身的术语。

虽然单片应用程序紧密耦合(意味着它们的组件是相互连接的),但微服务应用程序是分布式的(意味着它们的组件可以独立运行)。 随着应用变得越来越大、越来越复杂,许多组织正在探索从整体式架构迁移或以微服务格式合并新的应用程序。

NGINX 很荣幸为那些探索单片和微服务的人提供以下免费教育资源