优化 SaaS 解决方案中每租户成本的可见性

作者: Ujwal Bukka | 202 3

作者:亚马逊云科技 高级合作伙伴解决方案架构师 Ujwal Bukka

运营软件即服务 (SaaS) 解决方案面临的最大挑战之一是衡量各个租户的资源消耗,以了解其使用模式、成本属性等。SaaS环境的动态性质和不断变化的需求使其更具挑战性。

在这篇博客中,我将讨论衡量租户资源消耗的策略,并举例说明如何将这些策略应用于SaaS环境以获得成本分配。我将简要介绍如何使用收集的租户资源消耗数据来优化SaaS架构,改善SaaS环境的运营足迹并推动业务决策。

衡量租户资源消耗对于确定运营SaaS环境的成本、计算每个租户的成本、描述租户的活动和消费模式以及收集更多相关见解至关重要。

这些见解对于就如何构建、销售和营销您的 SaaS 应用程序做出战略决策的业务团队非常有价值,对于技术团队来说,他们可以使用这些数据就如何设计、扩展和操作 SaaS 应用程序中各种类型的组件做出战略决策。

衡量资源消耗挑战

根据您构建 SaaS 解决方案所在的行业,您可能有共享资源的租户(池模型),有些租户可能需要一组单独的资源供他们使用(筒仓模型)。尽管这将影响衡量租户资源消耗的方式,但它并不是唯一的衡量维度。

在某些情况下,衡量资源消耗涉及测量应用程序级指标,例如应用程序编程接口 (API) 请求和交易次数,这些都是计算每个租户成本的必备条件。请参阅此 博客 ,详细了解如何衡量资源消耗和成本归因挑战。

衡量资源消耗的策略

衡量资源消耗需要 SaaS 提供商创建消耗映射模型,该模型可以清晰地了解租户如何消耗系统资源,如图 1 所示。

图 1 — 租户资源消耗映射

目标是收集数据,使您能够为系统的每个租户分配一定百分比的消费。在租户可能共享系统部分或全部资源的多租户环境中,整理这种消耗视图可能具有挑战性。请参阅此 研讨会 ,了解如何收集租户消费、推导租户消费百分比以及计算每个租户的成本。

没有适用于所有架构的单一模型可以衡量租户资源消耗,而是在为应用程序选择策略时应考虑的一些常见策略。首先,查看您的 SaaS 环境的总体成本概况,并确定您的应用程序如何影响账单中的成本。您可能会发现,架构的某些部分对账单的贡献最大(例如数据存储或计算功耗)。为了获得成本方面最重要的见解,请从收集有关这些部件的数据开始。在账单缴费较少的领域度过时光没有多大价值。

为了深入了解成本高昂的组件,您可以在两种方法之间进行选择,也可以将它们组合起来。

  1. 粗粒度方法 :这种方法 侵入性较小,用于估算租户消费
  2. 精细的方法 :您将在其中添加计量工具、发布与成本相关的事件以及汇总和汇总消耗指标。

这两种方法都可以在基础设施(亚马逊网络服务)或应用程序级别上使用。选择这种方法归结为平衡您所追求的消费细节水平以及分析和捕获归因消费所需的数据的复杂性。我们建议考虑哪种方法最适合组件(即微服务或功能)级别,而不是对整个 SaaS 环境使用一种方法。现在我们已经解释了这些方法,让我们更详细地回顾一下。

粗粒度方法

这种方法是根据一般租户活动来估算租户消费。您可以将近似的租户资源消耗量应用于账单数据,以计算每个租户的成本。例如,假设您的 SaaS 应用程序包含数据存储元素。

理想情况下,您应该找出租户存储的数据量,然后计算每个租户的成本。但是,作为近似值,您可以捕获与数据存储交互的每个租户的活跃用户数量,并将其视为租户活动,以推断出大概的租户使用情况,并将其应用于账单数据以计算每个租户的成本。

假设如果租户一的活跃用户占你的 SaaS 应用程序总活跃用户数的 10%,那么你可以将大约 10% 的 SaaS 应用程序账单费用分配给租户 1。

此处的方法尝试将用户数量/调用频率映射到租户活动,然后从中推断出租户消耗量,并使用该数据来计算每个租户的成本。有时,如上所述,在给定的SaaS应用程序中,用户/呼叫数量可能与消费量不完全相关,但这可能是一个合理的折衷方案。

您还可以使用诸如 AW S 成本和使用情况报告之类的 亚马逊云科技 服务 ,这些报告 包含一组全面的成本和使用量数据,用于估算租户资源消耗。如果您为资源添加标签并通过 亚马逊云科技 账单控制台 下的成本分配标签激活这些用户定义的标签, 则 亚马逊云科技 成本和使用率报告会将您的标签包含在成本和使用量报告中,然后您可以按标签对这些数据进行分组,得出大概的成本和使用量值。

细粒度方法

这种方法是使用您的应用程序和/或 亚马逊云科技 服务捕获详细的租户数据。首先,在解决方案堆栈中引入指标工具,然后收集架构中各种资源的消耗指标。例如,图 2 显示了如何使用指标工具基础架构来收集应用程序微服务使用指标,然后衡量租户使用情况。

图 2 — 使用指标仪表基础架构捕获详细的租户使用情况

在这里,应用程序代码将捕获有关租户如何使用服务及其相关资源的详细指标数据。应用程序代码会将指标数据作为事件发布,您将使用由以下核心 亚马逊云科技 服务组成的指标工具基础设施捕获这些事件:

  • 亚马逊 CloudWatch
  • 亚马逊云科技 Lambda
  • 亚马逊 Kinesis Data Firehose
  • 亚马逊 Simple Storage Servic e (亚马逊 S3)

然后,您将能够聚合这些已发布的事件数据,并根据自己的建模策略对其进行分析,得出租户间的消费分布,然后推导出每个租户的成本。

根据最能支持您需求的工具,您可以使用任何其他工具或技术来构建指标工具基础架构。请参阅此 博客 ,了解如何构建指标工具基础设施和捕获详细指标。

在某些情况下,您只能使用亚马逊 CloudWatch 和 亚马逊云科技 X- Ray 等 亚马逊云科技 服务收集的数据(而非使用应用程序 代码)来收集细粒度数据。例如,如果您的应用程序使用 Amazon Dynam oDB,则可以查询您的亚马逊 CloudWatch 日志以获取对数据库的调用列表,或者使用亚马逊 DynamoDB API 来获取每次调用 Amazon DynamoDB 表所消耗的容量单位量。

最后,使用数据按租户对指标进行分组,并将这些信息存储在您选择的数据存储中。请参阅此 博客 ,以更好地了解如何实现这种方法。

孤立的资源

在某些情况下,出于合规性、监管或隔离要求,您可能需要仅为一个租户预置一组单独的资源。根据客户要求,您可以在单独的 亚马逊云科技 账户或单个 亚马逊云科技 账户中预置这些孤岛资源,并使用 亚马逊虚拟私有云 (Amazon VPC) 和 亚马逊身份和访问管理 (亚马逊云科技 IAM) 策略和角色等亚马逊云科技 结构来强制执行租户隔离。

在每个租户都有一个账户的情况下,衡量资源消耗非常简单。该 亚马逊云科技 账户中消耗的所有资源都可以归因于该租户。也就是说,请记住,这种格式不能提供细粒度的可见性。

在单个账户中预置筒仓资源时,您可以使用 亚马逊云科技 标签来标记资源。使用唯一的租户 ID 标记资源将有助于区分租户的数据。可能的下一步可能是使用该 亚马逊云科技 账户中的 亚马逊云科技 成本和使用情况报告,该报告将按标签显示您的成本和资源使用情况明细。

汇集资源

在池化组件中,多个租户将共享资源。在这里,衡量租户的资源消耗将具有挑战性,但是我们上面讨论的策略在这里派上用场。务必选择对您的 亚马逊云科技 账单贡献最大的领域来衡量资源消耗。然后,根据您的要求,使用粗粒度或细粒度的方法来计算资源消耗。

根据您的 SaaS 解决方案的架构,选择最能模拟租户资源消耗的租户活动维度是有意义的。例如,用于捕获每个租户在数据库中存储的数据量。在这里,你可以应用上述粗粒度方法,在数据库中查询属于某个租户的数据量,或者捕获租户与数据库交互的次数,以了解租户的大致使用量。

更常见的是,您可能需要获取有关租户消费的更多详细信息。例如,如果您的 SaaS 环境有 CPU 密集型工作负载,则可以使用计算执行时间来模拟租户使用情况。

在这里,你可以让你的微服务调用一些抽象库,它将发布计算执行时间指标以及租户上下文。如图 2 中的细粒度方法所述,然后,您可以构建一个指标分析流程来捕获这些指标信息并将其存储。然后,根据您的策略,您可以使用此指标数据来计算租户资源消耗和每个租户的成本。

亚马逊云科技 使用情况数据收集

SaaS 解决方案可能使用各种 亚马逊云科技 服务。租户配置和使用资源的方式因服务而异。因此,衡量租户资源消耗的方法也会有所不同。

您可能需要构建一个特定的流程来汇总或收集 亚马逊云科技 服务生成的数据,然后使用该流程来衡量租户资源消耗。例如,对于存储服务,您可能需要构建一个收集每秒输入/输出操作数 (IOPS) 和存储占用空间数据的流程,以衡量租户资源消耗。对于计算服务等其他服务,该方法将有所不同。

应用程序级使用情况数据收集

如前所述,您可以根据资源类型和 亚马逊云科技 服务来衡量资源消耗。但是在某些情况下,从应用程序的角度了解资源消耗模式很有价值。应用程序级资源消耗可让您更深入地了解各种租户如何消耗您的整体架构资源,并阐明应用程序的使用模式。

例如,应用程序级资源消耗数据收集涉及捕获详细的应用程序级指标,例如每个租户的 API 调用次数、从每个租户的数据库中检索的项目数、在每个租户的计算层完成请求所花费的时间。如本 博客 所示,在此处使用指标收集和提取机制非常方便 ,该指标工具基础架构可以从架构的不同区域捕获这些不同的指标,并可以存储在公共存储库中。

然后,根据您的业务策略,您将建立一个模型,在该模型中,您将使用部分或全部捕获的个人指标来计算租户总消费数据。使用 亚马逊云科技 成本分析工具(如 亚马逊云科技 成本和使用情况报告、亚马逊云科技 Cost Explorer)或其他合作伙伴工具(如 CloudZero 或 Stripe),使用应用程序级租户使用数据来计算每个租户的成本。

租户资源消耗数据的使用方法

租户消费数据是有价值的信息。正如我们所提到的,这些数据不仅有助于了解如何向客户收费,还有助于推动业务决策,例如定义产品等级、了解现有或新推出的产品功能的受欢迎程度以及制定产品路线图。

在技术方面,这些数据也可以用来改善SaaS环境的运营足迹。将这些数据采集到运营仪表板或视图中可以提供不同的见解,例如系统响应多租户环境不断变化的负载的能力。它可以帮助您识别最活跃地消耗系统资源的租户,并了解租户如何对架构的关键元素施加负担。

您可以使用这些数据来优化架构并主动管理租户运行状况,识别可能接近 SLA 阈值的租户,识别体验受到限制的租户,还可以识别其他即将出现的架构问题。请参阅 博客 的 “SaaS 指标可视化” 部分,详细了解 如何使用租户资源消耗数据构建不同的可视化。最后,您还可以使用租户使用数据以更多方式优化当前的 SaaS 架构,例如优化扩展、分层和限制策略,以创建更高效的多租户架构。

结论

尽管没有单一的方法可以衡量租户资源消耗,但您可以使用我们在博客中讨论的策略来构建适合您的架构的解决方案,从而提供有关租户资源消耗的见解。亚马逊云科技 架构完善的 SaaS 镜头成本优化支柱 (扩展了 亚马逊云科技 架构完善框架的成本优化支柱)提供了有关该主题的更多指导。

接下来,您可以使用 SaaS Lens 从成本角度评估您当前的架构,然后获得有关如何优化 SaaS 解决方案成本优化的建议。根据SaaS Lens用户的反馈,这是SaaS提供商当今面临的常见挑战。

关于 亚马逊云科技 软件即服务工厂

亚马逊云科技 SaaS Factory 可在 SaaS 旅程的任何阶段为组织提供帮助。无论是想在 亚马逊云科技 上开发新产品、迁移现有应用程序,还是优化 SaaS 解决方案,我们都可以提供帮助。访问 亚马逊云科技 SaaS 工厂洞察中心 ,了解更多技术和业务内容及最佳实践。

我们鼓励 SaaS 构建者联系他们的客户代表,询问参与模式,并与 亚马逊云科技 SaaS Factory 团队合作。

注册以随时 了解 亚马逊云科技 上最新的 SaaS 新闻、资源和活动。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。