摘要:如果您所在企业希望实行SaaS化改造,可访问了解华为云开发者技术团队的SaaS支持计划。
本文分享自华为云社区《【云享问答】第1期:传统软件如何SaaS化改造,10个问答带你掌握最优解!》,作者:技术火炬手。
如果您所在企业希望实行SaaS化改造,可访问了解华为云开发者技术团队的SaaS支持计划,包含:
- SaaS应用开发技术支持套件,包括SaaS应用开发指南、SaaS开发示例代码、SaaS开发插件以及配套的培训课程。
- 云资源支持,加入华为云SaaS星光计划,申请华为云资源支持。
- 商业渠道支持,SaaS应用上架至华为云应用商店,实现商业变现,参考:SaaS接入方式。
- 在线问题咨询,可提供解决方案、云上开发等问题咨询,提供SLA机制保证。
♦️ 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小时支持服务,在线联系
点击关注,第一时间了解华为云新鲜技术~