创造一个新产品就是风险。选择正确的体系结构是迈向成功的关键一步。如果您正在考虑单体、service-oriented、微服务和serverless无服务器体系结构,这篇博文将帮助您做出正确的选择。
单体结构
巨石是一个古老的词,指的是一块巨大的石头。尽管这个术语在今天被广泛使用,但图像在各个领域都保持不变。在软件工程中,单片模式是指单个不可分割的单元。单片软件的概念在于将应用程序的不同组件组合到单个平台上的单个程序中。通常,单片应用程序由数据库、客户端用户界面和服务器端应用程序组成。软件的所有部分都是统一的,其所有功能都在一个地方进行管理。让我们详细了解一下单片软件的结构。
单体架构适合小型团队使用,这也是许多初创公司在构建应用程序时选择这种方法的原因。С单体软件的组成部分相互关联、相互依存,这有助于软件自足。这种体系结构是构建应用程序的传统解决方案,但一些开发人员发现它已经过时。然而,我们相信在某些情况下,单体架构是一个完美的解决方案。
尽管我们在谷歌有过使用微服务的积极经验,但我们(在Scaylr)还是选择了一条单一的路线,因为拥有一台单一服务器意味着我们作为两名工程师的工作量更少。
-- Steven Czerwinski,Scaylr工程主管
为了弄清楚这个解决方案是否对你的生意有好处,让我们考虑一下它的利弊。
单体结构的优点
简化开发和部署
有很多工具可以集成以促进开发。此外,所有操作都使用一个目录执行,这使得部署更加容易。有了单片内核,开发人员不需要单独部署更改或更新,因为他们可以一次完成并节省大量时间。
减少交叉关注
大多数应用程序都依赖于大量横切关注点,如审计跟踪、日志记录、速率限制等。单片应用程序由于其单一的代码库,更容易合并这些关注点。当所有内容都在同一个应用程序中运行时,将组件连接到这些关注点会更容易。
更好的性能
如果构建得当,单体应用程序通常比基于微服务的应用程序性能更好。例如,具有微服务体系结构的应用程序可能需要对40个不同的微服务进行40个API调用才能加载每个屏幕,这显然会导致性能降低。由于共享代码和内存,单体应用程序反过来允许软件组件之间更快的通信。
单体式架构的缺点
随着时间的推移,代码库变得越来越麻烦
随着时间的推移,大多数产品的开发和范围不断扩大,其结构变得模糊。代码库开始看起来非常庞大,并且变得难以理解和修改,特别是对于新开发人员