当我们提到单体应用架构,我们在说什么?

定义

单体应用程序或单体架构可能是您以前听说过的一个术语,因为它可能是开发企业应用程序最流行的模式。如果系统的所有不同组件都封装到一个单元中,例如,如果用户界面、多个域和基础设施服务组合到一个可部署单元中,我们将其称为单体应用程序。

单体架构是软件程序的一种传统模式,它是作为一个统一的单元构建的,自成一体,独立于其他应用程序。单体 "一词通常被归结为庞大而冰冷的东西,这与软件设计中的单体架构的真实情况相差无几。单体架构是一个单一的大型计算网络,它只有一个代码库,将所有业务关注点结合在一起。 要对这种应用程序进行更改,需要通过访问代码库、构建和部署服务端接口的更新版本来更新整个堆栈。这就使得更新既受限制又耗时。

优点

  • 便于开发:当使用一个代码库构建应用程序时,所有代码和关注点都存在于一个地方,您无需过多担心分布式系统中远程过程调用可能带来的故障
  • 容易部署:一个可执行文件或目录使部署更容易。它们部署起来很简单。只有一个可部署的,并且它的要求应该很好理解。
  • 性能:在中心化代码库中
  • 便于测试:
  • 便于调试:当所有代码都位于一个位置,可以更轻松地跟踪请求并发现问题

不足

随着应用程序复杂性和/或规模的增长,这些缺点往往会出现:

  • 应用程序的启动时间可能会长达数分钟。这很快就会增加工程师在开发过程中浪费的大量时间。
  • 扩展应用程序开始变得困难。除了启动时间慢(可能会影响客户)之外,单体应用通常只能在一维进行扩展。由于应用程序涵盖了许多不同的用例,因此可以花费大量时间来优化配置以涵盖所有这些用例。这可能导致单体在资源方面(例如 CPU)变得非常昂贵。
  • 持续部署变得缓慢。即使您对特定部分进行了小的代码更改,也必须部署整个应用程序。随着应用程序复杂性的增加,这会变得越来越慢。部署时间超过一个小时的情况并非闻所未闻。
  • 对特定技术堆栈的长期承诺是必要的。如果您的整体应用程序是用 PHP 编写的,您必须继续使用 PHP,即使新的应用程序需求更适合新技术,或者如果您聘请了不同语言的专家,您也必须坚持使用 PHP。迁移到新语言将需要重写整个系统(或者如果您决定迁移到微服务,则需要重写部分系统。我们将在下一章中更多地讨论微服务)。
  • 改变变得困难。随着交付压力和开始开发的障碍越来越高,系统的模块化常常会变得模糊
相关推荐
名字还没想好☜1 小时前
Go 的 io.Reader/Writer 组合实战:io.Copy、TeeReader、MultiWriter 优雅处理数据流
开发语言·后端·golang·go·iphone
做前端的娜娜子2 小时前
第一个AI调用——TypeScript 工程初始化与配置管理(实战跟练)
langchain·openai·掘金·金石计划
喵个咪2 小时前
GoWind Shop 架构剖析:一个 REST 请求穿越三服务 BFF 的七环链路
vue.js·后端·go
喵个咪2 小时前
GoWind Shop 安全设计:JWT 鉴权、Ent 行级隔离、防篡改审计与四个真实漏洞修复
vue.js·后端·go
喵个咪2 小时前
GoWind Shop:一个 proto 文件如何生成后端、前端、文档、校验六路代码
vue.js·后端·go
用户7783366132112 小时前
从 0 搭一个关键词排名监控:核心思路 + 可运行代码
后端·python·api
一次旅行2 小时前
ViT/CLIP/LLaVA/GPT-4V/VideoLLM多模态架构全解:原理仿真+工业落地选型+完整推理代码
人工智能·算法·架构
喵个咪2 小时前
GoWind Shop 出海实战:多语言商品内容怎么存、怎么录、怎么按 locale 取
vue.js·后端·go
郝学胜_神的一滴3 小时前
C++20 高级编程 001:从极简HelloWorld到现代类型体系全梳理
c++·后端
卷无止境3 小时前
FastAPI中间件全解析:请求处理链条上的隐形关卡
后端·python·fastapi