您当前所在的位置:首页 / 新闻中心 / 常见问题
新闻中心
行业资讯
常见问题
知识百科
产品技术
推荐新闻

如何使用云软件架构编写一次并提供多种服务

发表于:2019-02-11

通常,软件的性能或功能的演变是由业务驱动的。用户对现代软件的期望很高。对令人满意的体验的要求不断增长和深化。解决方案必须快速,全球可用,并且在不同的流量负载下可靠。此外,开发解决方案必须具有可扩展性和成本效益 开发人员必须能够更新代码,对其进行测试并以高精度和高速度将其部署到多个位置。

云软件架构

要实施此类软件,团队必须在规划和开发过程中投入相当大的精力。为了证明这些努力的合理性并使软件更高效和可重用,我们已开始稳步转向云计算。然而,企业仍在提出这样的问题:多租户云应用架构如何帮助您提高效率和规模?

多租户云架构的好处

今天,尽管数据集存在差异,但解决方案功能可以应用于多个用例 - 通常只需很少的更改。这种需求促使云提供商创建创新的解决方案和工具,使开发团队能够重用硬件并优化基础架构的成本。但是,为了利用云提供的机会,我们需要调整我们编写的软件的架构。新架构必须与托管环境的细节保持一致,并充分利用云的优势。这正是多租户架构闪耀的地方。

多租户云应用程序架构允许开发团队编写一次代码,在一个代码库中实现功能而无需重复,并为多个业务/项目提供服务,同时满足他们的安全性,性能和业务需求。租户是用于指代软件的每个客户端的术语。

多租户云应用程序架构方法

云计算的作用及其类型

云计算的核心功能是提供可轻松共享的物理基础架构。这使得云成为本地“内部部署”托管的替代方案,从而大大降低了成本和风险。通过采用云基础架构,我们将努力从部署和维护此类环境转移到编写实际软件。这使我们能够更充分地满足业务需求。以这种方式转移职责最好描述为:云提供商将环境作为服务公开,我们使用该服务来托管我们的软件。

云服务运行的主要模型有三种:

  • 软件即服务(SaaS),专为最终用户设计并通过Web提供。多租户住在这里。

  • 平台即服务(PaaS),这是一组工具和服务,旨在快速高效地部署这些应用程序。

  • 基础架构即服务(IaaS),即为其提供支持的硬件和软件 - 服务器,存储,网络和操作系统。

使用SaaS模型,提供商向客户许可应用程序。这可以通过按需服务,通过“按需付费”模式进行订阅,也可以在有机会从用户以外的流中获得收入时免费进行。例如,那些替代收入流可以是广告。多租户架构是我们如何实施我们的软件以成为SaaS。

您应该选择哪一种:单租户与多租户

单租户基本上是该软件的单个实例。每个租户(客户)都有自己的数据库和资源。比较单租户与多租户方法,没有单租户共享资源。当有新客户端时,您需要设置其数据库,并且通常需要将更改合并到代码中以满足业务需求。使用旧架构的桌面应用程序和软件通常使用此模型。

另一方面,多租户描述了软件的单个实例服务于多个客户的场景。每个客户使用相同的软件实例,共享相同的资源,并且通常使用相同的数据库。一个客户的用户代表一个封闭的组,其作为单个实体(租户)收费和处理。通常,这些团体是不同法律实体的成员。旨在为具有单个运行时实例的多个租户提供服务的应用程序称为多租户应用程序。

多租户应用程序寻求映射属于特定租户的数据集,并且永远不会暴露不属于当前登录用户的租户的数据。这是通过数据安全和隐私限制实现的。

拥有多个租户可让您快速交付服务,而无需额外的软件资源和代码更改。当您拥有多个客户端和类似功能时,单租户与多租户选择变得毫无疑问。多租户长期降低了所有租户的开发和维护成本,并为团队提供了对整个基础架构的更好控制。

在单租户与多租户架构之间进行选择时,使用多租户的一些好处包括:

  • Web访问商业软件

  • 从中央位置管理的应用程序

  • 以“一对多”模型提供的应用程序

  • 不需要处理软件升级和修补程序的最终用户

  • 应用程序编程接口(API),允许在不同软件之间以及通常在不同供应商之间进行集成

使用多租户扩展您的软件

构建利用多租户原则的软件本身拥有更好的代码重用,同时保留了性能,安全性和可伸缩性。

多租户架构最重要的方面是如何在应用程序中组织数据。在决定使用哪种数据模型时,应仔细考虑这一点。

多租户架构案例研究

在MentorMate,我们经常利用多租户方法的力量。它降低了我们和客户的成本。我们设计并建立了多租户人力资源管理系统。它的创建是为了服务我们的公司,以及未来的其他公司,以改善招聘流程。

选择多租户数据模型

下图显示了用于实现多租户数据架构的三种不同数据库设计。每种方法都有自己的优点和缺点。

专用数据库

此方法为每个新租户分配一个新数据库。在不同数据库中分离租户数据是实现隔离的最简单方法。如果您的软件逻辑也允许,它将允许您扩展您选择的数据库。这种数据库设计往往会导致硬件和维护成本增加。您需要考虑到您还受到服务器可以支持的数据库数量的限制。此解决方案适用于对数据隔离有强烈要求的客户端以及客户端数量不太大的客户端。

就我们的人力资源管理软件而言,我们预计会有很多租户。具有极其严格的数据隔离不是必需的,这种特殊方法对我们和我们的客户来说意味着更高的成本。它们中的每一个都需要一个单独的数据库,在云环境中是昂贵的。在这种情况下,专用数据库数据模型不是正确的方法。

专用架构

此方法涉及将所有租户存储在单个数据库中,并通过为其表创建不同的模式来分隔每个租户。通过这种方式,每个租户将在同一个数据库中拥有自己的一组表。此数据库设计通过为所有租户使用相同的数据库来降低硬件成本。

将此数据模型应用于我们的HR管理系统将需要额外的努力来构建在表模式之间切换的机制,从而增加我们的开发成本。我们决定不使用专用的架构数据模型。

共享表

此方法涉及使用所有表的相同模式将所有租户的数据存储在同一数据库中。添加了一个特殊列以将每条记录与其自己的租户相关联。通常,该列名为TenantId,并使用外键指向特定租户。硬件成本仍然很低,但您可能需要进行一些额外的开发,以确保租户数据永远不会被其他租户访问。

在构建人力资源管理系统时牢记我们的业务需求,这种方法是我们的最佳选择。因为我们有一个数据库用于存储所有租户的数据,所以它使基础设施成本降低。

我们使用TenantId列分隔了不同的租户。我们需要确保只有数据隐私,并且我们构建了一种机制来提供所需的安全级别。这减少了开发时间和基础设施成本,完全符合我们的需求。

由于我们的决定而出现的唯一严峻挑战将是拥有大量用户和数据的租户大幅增加。然后,访问时间会变慢。尽管如此,我们已经找到了克服这一挑战的聪明方法。一个提示是使用像Elasticsearch这样的软件来加速某些操作。

如何选择合适的多租户架构方法?

在为SaaS应用程序选择数据库模型时,可以考虑一些事项。

租户数量

如果您希望拥有数百或数千个租户,您将更有可能希望降低硬件成本并选择共享表或共享模式模型之类的方法。那是我们的情况。我们希望有许多租户使用我们的人力资源管理工具,这就是我们想要“更多共享”解决方案的原因。

存储数据

如果您希望您的租户或其中大多数人存储大量数据,您更可能希望为您的应用程序使用专用数据库模型。

安全要求

像银行和其他处理敏感信息的其他租户如果不向他们提供专用数据库并确保必要的安全级别以保证他们的数据安全,他们甚至不会考虑您的应用程序。

结论:多租户架构

正如我们之前看到的,三种数据模型中的每一种都有其自身的优缺点。在设计重要层(数据库)时,您需要仔细考虑租户的数量及其业务需求。在某些情况下,选择正确的方法可能并不那么容易。如果您的应用程序将存储对租户敏感的数据,那么在准备生产之前,您需要更大的开发工作来构建安全策略。多租户架构为您提供了构建应用程序的强大功能和多功能性,同时考虑到资源共享。

游客