SaaS云原生应用典型架构技术分享

简介: SaaS服务没有任何软硬件维护费用,服务模式使用非常灵活,企业花费少量的费用便能享受优质服务,让企业集中资金流进行核心业务探索与运营。SaaS是即下载即使用的服务模式,大大节省了系统构架成本。但SaaS开发过程中的各种问题,如人力成本、多租户管理、高可用、安全性等,让企业在SaaS化转型时有所顾虑。围绕当下许多企业青睐的SaaS应用开发,今天给大家带来主题为《SaaS云原生应用典型架构》技术分享。

企业数字化转型,为何SaaS模式如此重要?

随着全球进入后疫情时代,数字经济重要性日益显现。SaaS作为一种有效的软件交付形式,可以让企业IT团队将工作的重心从部署和业务系统定制,转移到管理业务系统所提供的服务上来。

SaaS服务没有任何软硬件维护费用,服务模式使用非常灵活,企业花费少量的费用便能享受优质服务,让企业集中资金流进行核心业务探索与运营。SaaS是即下载即使用的服务模式,大大节省了系统构架成本。但SaaS开发过程中的各种问题,如人力成本、多租户管理、高可用、安全性等,让企业在SaaS化转型时有所顾虑。

在长期的SaaS应用上云技术支持实践中,华为云总结了企业在SaaS化转型过程中遇到的很关键的问题:

  • 基础设施选择:在什么基础设施上部署SaaS系统,是选择公有云还是自有数据中心方式?
  • 系统架构设计:SaaS系统的访问性能、运维监控、系统弹性扩容、安全性以及合规性等如何设计?
  • 数据存储架构设计:如何设计安全可靠,可灵活扩展的数据存储架构?

不仅如此,租户权限管理、租户间干扰以及多租计费策略等问题同样困扰企业转型。

一图了解SaaS多租户架构

其实,很多人对于一些SaaS技术问题还是知之甚少,例如企业在进行SaaS企业软件选型时,仍不了解“多租户”与“独立架构”是什么概念,二者之间有什么区别。

用现实中的房子例子是很好解释的。“独立架构”如同一个别墅,里面有属于自己的餐厅、房间、厨房等设施,所有设施都是独立配置、部署的;“多租户”就如同住在公寓,每个人有一个属于自己的房间,健身房、客厅等属于公共区域,大家共享这些资源。

独立部署架构在业务发展前期有比较有优势,可根据客户需求灵活配置资源量、独立部署。但随着企业增长,老的业务系统依旧存在,企业不得不面临运维效率、成本等挑战,这些挑战最终会影响到企业业务的增长和创新。为解决这个问题,系统向SaaS演进似乎是必然的选择。从SaaS应用本身来看:

image.png

与独立部署不同,在SaaS系统中,有租户概念,通常一个企业或者组织作为一个租户(Tenant),租户下会有多个用户;租户与租户之间会共享一定资源,为保证租户安全性,在租户架构设计时,会做好逻辑或者物理隔离,逻辑隔离和物理隔离也可以同时存在,如SaaS混合部署模式。在创建租户时,需要分配数据空间和配置租户路由规则,租户和租户下的用户可能有不同的权限配置,根据路由规则获取授权信息。

租户路由是SaaS应用的核心模块,当用户发起请求时,租户路由模块根据请求携带的租户ID信息,将请求路由到该用户所属租户运行环境、数据空间等。在SaaS租户隔离的逻辑下,租户路由模块是保证租户所属用户请求互不干扰的关键。华为云技术团队开发了租户路由模块,并进行了开源,可前往gitee的saas-tenant-router-starter项目了解或者贡献。

SaaS改造升级的方向通常是容器化的微服务架构,华为云企业级云容器引擎CCE可应用提供容器运行和编排环境,基于云容器引擎可以快速实现集群创建、应用部署和运维管理;在SaaS应用场景下,CCE集群可以提供集群、namespace以及pod层级的资源隔离;华为云微服务引擎CSE为SaaS应用提供微服务应用注册发现、配置下发、服务治理等能力,其中,配置下发能支持在租户创建时,配合消息总线,动态配置多租户运行环境。

在云上构建SaaS应用时,租户间隔离从应用层、数据库到基础设施层(计算、存储以及网络)都是应该关注的,在应用层我们通过租户路由插件实现租户间隔离;数据库层多租模式可支持数据库实例、数据库schema以及表字段实现隔离;在计算资源层,租户间隔离借助云容器引擎CCE的namespace和pod能力;在网络层面,可通过VPC、子网实现租户间隔离,每个租户应用可以放在一个VPC或者一个子网中,但是租户数量会受到可创建的VPC和子网配额限制。

SaaS多租户架构不仅包含SaaS基础应用,还提供了配套的 SaaS运营与运维平台。这也是相对于独立部署架构的独特优势。从SaaS运营与运维角度来看:

  • 运营方面:

在技术方面,SaaS场景的租户管理面负责租户创建,配置管理,SaaS租户管理员可以在用户购买SaaS服务后,配置租户访问域名、租户管理员以及租户权限等信息;
计费模式有按照用户数、活跃用户、特性+服务等级、基础版免费+增值特性付费等多种计费模式,设计优秀的计费模式能保证在租户和产品功能特性持续增加的背景下,仍然能有不错的收益;
运营分析是SaaS在实现持续业务增长必不可少的内容,从技术维度看,涉及用户数据采集、数据实时处理和分析、数据可视化等内容,支持企业决策和管理。

  • 运维方面:

为SaaS系统建立可观测运维是保证良好租户、及时定位和解决用户问题的基础,包括指标监控、应用链路追踪和日志管理等;在SaaS应用系统下,在建立统一租户运维设施基础上,也需充分考虑不同租户运维需求。
在系统中提供不同层级的资源监控、告警是基础的运维能力,华为云提供了完备能力,如应用运维管理AOM、云监控服务CloudEye等;
租户日志管理采集可按照租户维度进行,根据上层分析需求,再做数据的统一聚合;
链路追踪通常借助APM能力实现,对各个服务调用的性能、健康状态进行监控,及时做资源调整。

多种多租户架构方式,肯定有符合你的那一款

多租户架构方式,使得不同企业之间共享代码及基础设施成为可能,从而提高了代码及底层基础设施的效率,而通过这种资源使用的效率提升,更是降低了SaaS服务的运营成本。事实上,SaaS应用的成功很大程度上依赖于多租户架构。

当然,企业在考虑搭建SaaS系统时,需要优先确定哪种租户模式适合您的客户和业务特点,不同租户模式并不会影响您的业务功能,但对商业模式、技术架构、租户隔离、租户成本以及后续运维运营费用会产生影响。从租户资源共享程度来看,多租户模式可以按如图所示,分为三类:独享资源租户模式、共享资源池租户模式、混合租户模式

image.png

独享资源租户模式
每个用户单独交付部署一套环境,例如,像具有“web层-应用层-数据层”多层应用系统,每个用户得到一套独立的web层、应用层以及数据层,每一层之间互不共享,实际上是一种物理隔离模式,开发实现较为容易,但随着用户数增多,维护成本会增加,每套系统实际产生的收益会减少。

共享资源池租户模式
共享模式能提高资源利用效率,设计良好资源共享模式和商业策略将会为企业提升盈利能力;共享资源池模式下,每个用户共享相同的资源,不同用户之间采用逻辑隔离方式,为了避免租户间互不影响,在租户架构设计和开发上会有些复杂,但会带来长期的收益。由于现在多采用分层架构进行开发,为了方便展示,我们将系统架构分为三层:web层、应用层以及数据层。针对每一层级,我们根据部署情况,可以分为如下三类:

全共享模式

web层、应用层以及数据层都采用共享资源池模式部署。对于用户体验环境,可以优先考虑全共享资源池模式,但并不等同于全共享模式只适合用户体验环境使用,租户业务量稳定且对计算、内存以及数据库IO等资源需求稳定的场景,全共享模式也是合适的。

数据层共享模式

web层和应用层每个租户独立部署,但共享数据层,例如数据层的关系数据库-MySQL,可采用不同层级的逻辑隔离方式,如数据库实例、数据库database以及表级别隔离方式。对计算资源和内存资源消耗比较大的业务场景,如AI分析、大数据计算等,可以优先考虑数据层共享资源池模式,应用层可以进行物理隔离模式部署,每个租户应用层可以独享资源,互不干扰。

租户应用环境共享模式

数据层不共享,例如每个租户配置一个数据库实例,web层和应用层采用共享方式部署,共享相同的租户运行环境,如采用云容器引擎CCE集群,按业务模块部署,根据租户需求弹性扩容node节点和容器pod。对数据库IO要求比较高,应用层处理简单业务逻辑的业务场景,如OA、ERP等,可以优先考虑应用层共享资源池模式,数据层进行物理隔离模式部署,每个租户应用层可以独享资源,互不干扰,如在华为云上,可以采用不同的RDS实例进行隔离。

混合租户模式
综合独享资源模式和共享资源池租户模式特点,部分用户采用共享资源池租户模式,另一部分用户采用独享资源模式;在交付系统时,根据客户对费用、资源隔离性和安全性要求,选择对应交付模式。

一个良好设计、架构优雅的SaaS应用可以给应用提供商和客户带来双赢。华为云SaaS 服务架构帮助企业应用SaaS的过程中,真正获得交付门槛低、配置要求低、技术难度低、操作难度低、使用成本低等服务价值。

相关文章
|
20天前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
18天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
17天前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
20天前
|
弹性计算 运维 Cloud Native
云原生架构的崛起与未来展望
在数字化转型的浪潮中,云原生架构凭借其高效、灵活和可扩展的特性,正逐渐成为企业IT战略的核心。本文旨在探讨云原生架构的定义、关键特性、实施优势以及面临的挑战,同时展望未来的发展趋势。通过深入分析,我们期望为读者提供一个关于云原生架构全面而深入的视角,助力企业在云计算时代做出更明智的决策。
31 3
|
22天前
|
Cloud Native API 持续交付
云原生时代的微服务架构设计
随着云计算的蓬勃发展,云原生概念逐渐成为IT行业的热点。本文将通过深入浅出的方式,介绍在云原生环境下,如何设计一个高效、可扩展的微服务架构。文章不仅涉及理论概念,还将结合实际代码示例,帮助读者理解微服务架构的核心要素和设计原则,以及如何在云平台上实现这些设计。
|
17天前
|
Cloud Native API 持续交付
云原生架构下的微服务治理策略与实践####
本文旨在探讨云原生环境下微服务架构的治理策略,通过分析当前面临的挑战,提出一系列实用的解决方案。我们将深入讨论如何利用容器化、服务网格(Service Mesh)等先进技术手段,提升微服务系统的可管理性、可扩展性和容错能力。此外,还将分享一些来自一线项目的经验教训,帮助读者更好地理解和应用这些理论到实际工作中去。 ####
34 0
|
18天前
|
Cloud Native 持续交付 云计算
云原生架构的崛起:企业数字化转型的加速器
在当今快速发展的技术环境中,企业正面临着前所未有的变革压力。本文深入探讨了云原生架构如何成为推动企业数字化转型的关键力量。通过分析其核心概念、优势以及实施策略,本文旨在为读者提供对云原生技术的全面理解,展示其在现代企业中不可或缺的作用。
23 0
|
24天前
|
Cloud Native 持续交付 云计算
云计算的转型之路:探索云原生架构的崛起与实践####
随着企业数字化转型加速,云原生架构以其高效性、灵活性和可扩展性成为现代IT基础设施的核心。本文深入探讨了云原生技术的关键要素,包括容器化、微服务、持续集成/持续部署(CI/CD)及无服务器架构等,并通过案例分析展示了这些技术如何助力企业实现敏捷开发、快速迭代和资源优化。通过剖析典型企业的转型经历,揭示云原生架构在应对市场变化、提升业务竞争力方面的巨大潜力。 ####
28 0
|
27天前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
42 3
|
29天前
|
Cloud Native 持续交付 云计算
云原生架构的演进与挑战
随着云计算技术的不断发展,云原生架构已成为企业数字化转型的重要支撑。本文深入探讨了云原生架构的概念、发展历程、核心技术以及面临的挑战,旨在为读者提供一个全面了解云原生架构的视角。通过分析Kubernetes、Docker等关键技术的应用,以及微服务、持续集成/持续部署(CI/CD)等实践案例,本文揭示了云原生架构在提高应用开发效率、降低运维成本、增强系统可扩展性等方面的显著优势。同时,也指出了云原生架构在安全性、复杂性管理等方面所面临的挑战,并提出了相应的解决策略。