写点什么

传统软件如何 SaaS 化改造,10 个问答带你掌握最优解

  • 2023-06-12
    广东
  • 本文字数:5937 字

    阅读完需:约 19 分钟

传统软件如何SaaS化改造,10个问答带你掌握最优解

本文分享自华为云社区《【云享问答】第1期:传统软件如何SaaS化改造,10个问答带你掌握最优解!》,作者:技术火炬手。



如果您所在企业希望实行 SaaS 化改造,可访问了解华为云开发者技术团队的SaaS支持计划,包含:

♦️ SaaS 选型 ♦️

💬 如何判断一家企业是否适合切换到 SaaS 开发?


SaaS 适用于任何行业,例如金融、银行、教育、地产、IT、医药等都可以应用。且 SaaS 更适合中小企业应用,因为中小企业部署快捷、风险较低。如果企业的软件是以下类型,建议对传统软件实行 SaaS 化改造。


1、业务模式较为单一,业务场景较为标准化,可复用性强的产品;


2、数据集中,公司希望利用 SaaS 架构对企业业务进行集中管理和数据分析;


3、面向的甲方数字化水平较低,定向租售开发-部署-维护一体化产研能力;


4、需要多终端操作,面向的对象、作业环境不同,单独开发部署难度较高。

💬 为什么越来越多的企业选择 SaaS 化开发?


SaaS 作为一种有效的软件交付形式,可以让企业 IT 团队工作的重心从部署和业务系统定制,转移到管理业务系统所提供的服务上来。企业部署 SaaS 的好处有以下几点:


1、部署简单,无需硬件准备。传统软件的部署周期通常需要半年或更长的时间,而部署 SaaS 软件不需要考虑复杂的服务器采购、机房布局、网络配置等高度专业的 IT 问题。


2、零维护成本。升级传统软件需要高昂的费用。而 SaaS 软件开发商负责软件升级与维护,持续进行产品更新,无需企业承担软硬件维护费用。


3、随时随地可办公。由于 SaaS 服务是把软件托管在云上,用户可以通过任意的智能终端进行访问,比如手机、电脑、平板等。与传统软件相比,SaaS 产品在移动端运行的能力发展更为出色,用户之间可以实现高效、便捷的移动办公。


4、数据安全更有保障。传统的软件往往需要人工数据备份,或者安装一个复杂的自动化系统。随着 SaaS 应用,数据存储分析技术的发展,SaaS 服务商可以为多个数据中心提供快速灵活的容灾管理解决方案,企业数据更加安全。


5、降低系统架构成本。SaaS 灵活的定价模式,让企业可以在需要时购买相应的软件服务。当企业规模不断扩大时,无需购置新的基础设施;当企业关闭某些业务时,选择停止相关软件服务即可,无需继续对软硬件系统进行管理。

💬 企业在 SaaS 化转型时有哪些关键的问题需要注意?


SaaS 开发过程中的各种问题,如人力成本、多租户管理、高可用、安全性等,让企业在 SaaS 化转型时有所顾虑。华为云在长期的 SaaS 应用上云技术支持实践中,总结了企业在 SaaS 化转型时经常问到的问题,也是本期将为大家解答的内容。


1、租户权限管理:租户应该怎么设计、创建?每个租户下的组织架构是怎么样的?租户的各用户如何做不同角色权限管理?


2、基础设施选择:在什么基础设施上部署 SaaS 系统,是选择公有云还是自有数据中心方式?


3、系统架构设计:SaaS 系统的访问性能、运维监控、系统弹性扩容、安全性以及合规性等如何设计?


4、租户间干扰:如何基于基础设施提供的能力,做好不同租户之间的隔离,减少租户间的相互干扰?


5、数据存储架构设计:如何设计安全可靠,可灵活扩展的数据存储架构?


6、用户定制化:用户需求是什么?需不需要考虑定制化内容或者资源独享问题?需不需要处理定制需求问题?


7、多租计费策略:不同计费模式会影响云上部署架构和成本控制,SaaS 模型商用价格如何设计,提供哪些计费模式。

♦️ SaaS 多租户设计 ♦️

💬 SaaS 多租模式有哪些?不同模式的优缺点和应用场景是什么?


SaaS 应用比较广泛的领域主要有电子邮件、销售管理、客户关系管理(CRM)、财务管理、人力资源管理、计费和协作等。目前国内有相当多的 SaaS 软件公司,就比如钉钉,金蝶,用友等等,以下分析 SaaS 不同模式的应用场景及其优缺点。


SaaS 多租架构可分为以下三种模式


1、独享资源模式:每个租户单独部署一套环境。独享资源模式有独立的硬件和软件开发环境,数据库也只供一个租户使用。


2、共享资源池租户模式:共享资源,采用逻辑隔离。根据部署情况,可以分为如下三类:


A、全共享模式:web 层,应用层,数据层都采用共享资源池部署。


B、数据层共享模式:web 层和应用层每个租户独立部署,共享数据层


C、租户应用环境共享模式:web 层、应用层共享部署,数据层不共享


3、混合租户模式:综合独享资源模式和共享资源池租户模式特点。



💬 独立部署架构与 SaaS 多租架构的区别是什么?从应用本身与运维角度如何理解?


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



独立部署架构在业务发展前期比较有优势,可根据客户需求灵活配置资源量,独立部署架构的开发和运维复杂度都比较低,但随着支持的客户数量增长,不同设计不同部署的孤立项目的增多,供应商不得不面临运维量与资源成本倍数增加等问题,这些问题最终会影响到企业业务的增长和创新,为解决这个问题,系统向 SaaS 演进似乎是必然的选择。


从 SaaS 应用本身来看:


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


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


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


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


从 SaaS 运营与运维角度来看:


运营方面


在技术方面,SaaS 场景的租户管理面负责租户创建,配置管理,SaaS 租户管理员可以在用户购买 SaaS 服务后,配置租户访问域名、租户管理员以及租户权限等信息;


计费模式有按照用户数、活跃用户、特性+服务等级、基础版免费+增值特性付费等多种计费模式,设计优秀的计费模式能保证在租户和产品功能特性持续增加的背景下,仍然能有不错的收益;


运营分析是 SaaS 在实现持续业务增长时必不可少的内容,从技术维度看,涉及用户数据采集、数据实时处理和分析、数据可视化等内容,支持企业决策和管理。


运维方面


为 SaaS 系统建立可观测运维是及时定位和解决用户问题的基础,包括指标监控、应用链路追踪和日志管理等;在 SaaS 应用系统下,在建立统一租户运维设施基础上,也需充分考虑不同租户运维需求。


1、在系统中提供不同层级的资源监控、告警是基础的运维能力,华为云提供了完备能力,如应用运维管理 AOM、云监控服务 CloudEye 等;


2、租户日志管理采集可按照租户维度进行,根据上层分析需求,再做数据的统一聚合;


3、链路追踪通常借助 APM 能力实现,对各个服务调用的性能、健康状态进行监控,及时做资源调整。

♦️ SaaS 云原生典型架构 ♦️

💬 SaaS 应用部署的云原生典型架构包含哪些内容? 华为云 SaaS 技术架构的优势有哪些?


基于长期的技术支持实践经验,华为云结合在产品和技术方面的沉淀,总结了云上典型的 SaaS 云原生应用架构,架构主要分为:


  • 微服务开发框架:SpringCloud、SpringCloud Huawei;

  • 应用部署集群:集群、namespace、Pod;

  • 数据库、中间件:分区、库表;多租数据源管理;

  • 运维监控系统:Metrics、Tracing、Logging;

  • 数据分析运营平台:模型定义、采集、存储、分析-可视化等;

  • CI/CD 流水线:代码托管、检查、打包、部署。



华为云 SaaS 技术架构的特点:


1、微服务化和容器化。微服务化包含两个阶段:微服务拆分和微服务开发。微服务拆分可以参考华为云微服务应用开发相关实践;微服务开发社区中提供了多种开发框架,如 springcloud、service comb 等,目前各大云厂商也提供了相关微服务引擎,如华为云 CSE,与华为云 CSE 微服务引擎对接,提供微服务注册发现、服务治理以及配置管理等能力。开源地址:https://github.com/huaweicloud/spring-cloud-huawei。容器化后的应用可以基于华为云容器引擎 CCE 部署,华为云 CCE 提供灵活的自动弹性伸缩、挂载多种存储类型等能力,并且能轻松对接云上应用运维能力。


2、运维监控。在云原生的 SaaS 化应用系统中,除了解决微服务化和容器化问题,还需要考虑搭建运维监控平台,如日志处理采用 ELK 方案,监控告警采用 Pormetheus+Grafana 方案,应用链路追踪采用 zipkin、skywalking 等方案。基于云上的运维能力,不仅可以更快速搭建监控运维平台,如采用应用运维管理 AOM 实现运维的监控告警;云日志服务 LTS 实现日志采集、分析以及转储;APM 实现应用链路追踪,还能构建“问题发现-问题追踪-问题定位”立体监控运维体系。


3、数据的聚合与流转。对于 SaaS 企业而言,让平台数据发挥价值,支持企业实现“拓客-留客-增长”,建立统一的数据分析平台很重要。云原生 SaaS 应用架构很关键的优势在于能够轻松实现数据的聚合和流转,通过集成 SDK 方式将日志数据、定时任务等数据上报至 LTS ,业务数据库中数据可以通过 DRS 或者 cannal 开源组件抽取至 kafka 等消息队列中;华为云对象存储 OBS 提供结构化和非结构化数据存储能力,并且存储成本低,可以作为统一数据湖底座。基于统一数据湖底座和实时数据接入能力,构建 SaaS 云原生数据分析运营平台,同时,也支持机器学习接入。


4、开发 &部署 CICD 流水线。可采用云上 devcloud 平台能力,也可以采用 Jenkins 搭建,对接华为云 VSS 安全扫描能力和容器镜像仓库 SWR,VSS 能力实现 web 应用发布前的安全扫描;SWR 作为镜像存储仓库,按照组织和版本等策略管理镜像,在 CCE 中可以直接加载 SWR 镜像,配置 service、ingress 等访问策略,完整应用部署。

💬 SaaS 多租户下用户的不同部门权限如何隔离?


SaaS 的多租系统中会有多个租户,每个租户下有多个用户,租户之间相互隔离,互不影响。隔离方式也有很多,比如集群环境隔离。而租户下面的用户权限隔离可以根据用户 id 来区分,根据不同用户做不同权限控制。


我们可以根据部署集群环境来做隔离,分三种:


1、集群环境隔离,不同租户的业务微服务在不同的环境中,租户通过集群完全隔离,租户之间不会互相影响。


2、基于 CCE NameSpace 隔离,Kubernetes 集群为 SaaS 应用开发者提供的 namespace 隔离方式,容器引擎 CCE 在 namespace 粒度提供了网络隔离、资源配额限制等租户管控策略。


3、Pod 共享,所有租户共享 SaaS 业务微服务。


数据层面隔离方式也分三种:


1、共享数据库,共享 Schemas,基于行隔离


2、共享数据库,基于 Schema 隔离


3、基于数据库隔离



业务承载方面:从单一业务系统承载改造为按租户区分,部署不同的无状态容器服务组。


数据层面:从单一对象存储存放改造成按租户去区分,不同的 Bucket 或在 Bucket 中开辟不同租户的前缀去进行存储。


流量分析方面:原本是集中入口,无论是单机部署还是多机部署,其流量入口都是统一的,集中入口没有办法分析不同租户的流量情况。通过 K8s 集群负载区分不同的域名来路,并汇聚访问日志到大数据平台进行分析。

💬 在 SaaS 应用上云实践中,如何保障多租户之间数据的安全性和保障信息 0 丢失?


可以通过独立数据库、共享数据库(逻辑数据隔离)来做到数据的隔离,使用一些安全防护措施如:运维审计(堡垒机)、应用防护(WAF)、访问控制(防火墙)、入侵防御(HIDS/EDR)等保障数据安全。


保障数据不丢失可以通过做好高可用技术架构、数据备份策略、容灾切换方案来实现。

♦️ SaaS 技术支持 ♦️

💬 华为云提供哪些资源帮助企业解决 SaaS 化转型中可能遇到的痛点问题?


针对企业在 SaaS 化转型中可能遇到的痛点问题,华为云开发者技术服务团队为企业准备如下资源:


  • SaaS 应用开发技术支持套件,包括SaaS应用开发指南SaaS开发示例代码SaaS开发插件以及配套的培训课程。

  • 开发指南为 SaaS 应用开发者提供云原生 SaaS 架构、设计等参考;

  • 示例代码为开发者提供 SaaS 开发示例参考代码,使用 SpringCloud 微服务框架,同时提供了接入华为云微服务引擎 CSE 版本;

  • SaaS 开发中通用能力封装成插件,如 SaaS 多租路由插件,提供多租设计通用方案,简化 SaaS 改造时,数据多租路由开发;

  • 除了以上内容,对数据分析日志处理安全扫描等也提供了相关方案,以开放至开源社区

  • 云资源支持,加入华为云SaaS星光计划,申请华为云资源支持。

  • 商业渠道支持,大量伙伴的 SaaS 应用上架至华为云应用商店,实现商业变现,参考:SaaS接入方式

  • 在线问题咨询可以进行解决方案、云上开发 bug 等问题咨询,提供 SLA 机制保证。


点击访问了解支持计划详情

💬 华为云帮助开发者构建 SaaS 应用,有哪些实践案例可以分享?


华为云面向企业开发者、SaaS 业务合作伙伴提供 SaaS 化轻咨询、设计及开发体系化支持能力,促进开发者与华为云之间的持续深度合作。目前在传统制造、工业安全、数字媒体、企业建站等十多个领域都帮助企业构建了 SaaS 应用,极大地提高了业务创新能力和生产效率,降低了开发成本和人力成本。


例如:


与中泰股份合作,将自研 MES 系统进行 SaaS 化改造,形成模具制造行业设计和制造一体化解决方案,上架云商店,交付给行业内中小企业使用。规模化客户交付数量和支撑业务订单营收得到了巨大增长。


与中新赛克合作,针对 ToB 业务转型需做 SaaS 化架构升级。基于华为云云原生进行了 SaaS 多租业务架构改造,提升了应用交付效率,节省了项目交付周期。


与深圳云视点科技合作,联合打造 SaaS 化的内容聚合分发平台,并且在分发资源弹性伸缩、云服务计量、OBS 鉴权体系设计等方面给予了技术指导支持。


  • 想获取更多 SaaS 应用开发的文档工具,欢迎访问华为云技术开发指南

  • SaaS 开发过程中如遇到技术问题,欢迎联系华为云开发者支持工程师,将为您提供 5*8 小时支持服务,在线联系



点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 2
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
传统软件如何SaaS化改造,10个问答带你掌握最优解_开发_华为云开发者联盟_InfoQ写作社区