SaaS化应用开发指南

举报
HuaweiCloudDeveloper 发表于 2022/06/22 15:27:49 2022/06/22
【摘要】 SaaS作为一种有效的软件交付机制,让企业IT团队可以将工作的重心从部署和业务系统定制转移到管理业务系统所提供的服务上来;SaaS交付便捷、节省成本等特征,受到很多企业青睐,尤其是中小企业;但SaaS开发初期的复杂性,如人力成本、多租户管理、高可用、弹性伸缩、安全等,让许多企业在业务系统SaaS化转型时有所顾虑。

目录

SaaS专题
        SaaS应用开发指导
        SaaS应用Samples
        SaaS多租路由插件
        不同架构的服务SaaS化方案
                 单体架构
                 微服务架构
                 k8s架构(CCE)
                 Istio架构
        独享资源模式的SaaS服务开发
                 独享资源模式的资源准备
        共享资源模式的SaaS服务开发
                 租户识别
                 租户路由
                 共享资源池模式的资源分配
        租户个性化需求
                 个性化配置
                 元数据驱动设计
                 租户业务定制
                 租户流程定制
        租户管理
                 租户账号系统
                 租户注册
        SaaS系统运维
                 部署
                 CICD
                 弹性伸缩
                 服务发布
                 系统可观测性
                         租户日志数据收集与分析
        SaaS系统运营
                 SaaS服务计费策略
                 SaaS运营数据分析

SaaS专题

SaaS应用开发指导

https://support.developer.huaweicloud.com/doc/zh-cn_topic_0000001271256348-0000001271256348

SaaS应用Samples

https://gitee.com/HuaweiCloudDeveloper/saas-housekeeper

SaaS多租路由插件

https://gitee.com/HuaweiCloudDeveloper/saas-tenant-router-starter

 

不同架构的服务SaaS化方案

单体架构

《请持续关注》

微服务架构

《请持续关注》

k8s架构(CCE)

 《请持续关注》

Istio架构

 《请持续关注》

独享资源模式的SaaS服务开发

独享资源模式的SaaS服务在华为云上可以几种实现模式,例如账号隔离,vpc隔离,子网隔离等,这些在应用开发上没什么特别需要注意的地方,聚焦点在资源的准备与快速的部署

独享资源模式的资源准备

  《请持续关注》

共享资源模式的SaaS服务开发

租户识别

服务要识别请求对应的租户,常用有两种方式,一是根据域名,二是租户名

租户路由

根据租户隔离方式的不同,租户路由的策略也不一样,在我们应用开发指导中有详细的讲解

housekeeper项目采用域名识别,此项目使用了api网关,在用户请求进入api网关时可以识别到用户请求的域名,把租户独占的domain赋予请求头

https://gitee.com/HuaweiCloudDeveloper/saas-housekeeper/blob/master-dev/saas-housekeeper-gateway/src/main/java/com/huawei/housekeeper/gateway/filter/DomainFilter.java

而在微服务中会获取请求头内容,识别租户

https://gitee.com/HuaweiCloudDeveloper/saas-housekeeper/blob/master-dev/saas-housekeeper-tenant-router-starter/src/main/java/com/huawei/saashousekeeper/interceptor/TenantDomainFilter.java

租户标识的存储,每个请求的租户标识使用HystrixRequestVariableDefault存储,可参见:

https://gitee.com/HuaweiCloudDeveloper/saas-tenant-router-starter/blob/master-dev/src/main/java/com/huawei/saas/config/TenantContext.java

租户路由可参见我们依赖的开源插件

https://gitee.com/HuaweiCloudDeveloper/saas-tenant-router-starter

微服务调用其他服务时,上下文需要携带租户标识

例如服务间请求,通过拦截器在openfeign的请求头中加入租户标识:

https://gitee.com/HuaweiCloudDeveloper/saas-tenant-router-starter/blob/master-dev/src/main/java/com/huawei/saas/interceptor/FeignRequestInterceptor.java

例如数据库请求,切换数据库源及schema:

https://gitee.com/HuaweiCloudDeveloper/saas-tenant-router-starter/blob/master-dev/src/main/java/com/huawei/saas/interceptor/MybatisSchemaInterceptor.java

共享资源池模式的资源分配

   《请持续关注》

租户个性化需求

个性化配置

租户会希望在自己的应用上有企业个性化的展现,需要允许租户配置自己的企业元素,例如logo,页面风格等

例如housekeeper服务中租户可配置自己租户服务的页面风格

https://gitee.com/HuaweiCloudDeveloper/saas-housekeeper/blob/master-dev/saas-housekeeper-service-publish-service/src/main/java/com/huawei/housekeeper/service/impl/StyleCustomizationServiceImpl.java

元数据驱动设计

租户的元数据设计可以理解为把部分实体的结构和内容做成可配置化,例如housekeeper项目中,服务发布的服务可自行定义服务各种维度的规格和含义

https://gitee.com/HuaweiCloudDeveloper/saas-housekeeper/blob/master-dev/saas-housekeeper-service-publish-service/src/main/java/com/huawei/housekeeper/service/impl/HouseKeeperServiceSkuServiceImpl.java

租户业务定制

    《请持续关注》

租户流程定制

    《请持续关注》

租户管理

租户账号系统

SaaS账号从作用域的维度可分两种方式

一种是系统内通用,一种是租户域内通用,具体参见SaaS应用开发文档

housekeeper项目采用租户域的账号系统,可参见项目中jwt的生成:

https://gitee.com/HuaweiCloudDeveloper/saas-housekeeper/blob/master-dev/saas-housekeeper-userinfo-service/src/main/java/com/huawei/housekeeper/utils/JwtGenerateTokenUtil.java

租户注册

租户可以通过SaaS管理服务登记自己的信息,通过业务操作获得租户权利,由SaaS admin角色负责租户账号的开通。

 

SaaS系统运维

部署

《请持续关注》

CICD

《请持续关注》

弹性伸缩

《请持续关注》

服务发布

《请持续关注》

系统可观测性

租户日志数据收集与分析

 日志数据需要获取租户的标识

参看我们租户路由的设计中,租户标识存放在sfl4j框架的MDC中,只需在日志输出格式中引用即可

https://gitee.com/HuaweiCloudDeveloper/saas-tenant-router-starter/blob/master-dev/src/main/java/com/huawei/saas/interceptor/TenantDomainFilter.java

 

SaaS系统运营

SaaS服务计费策略

SaaS应用一般采用出租方式收费,而不是像传统软件那样一次性买断。那么对于SaaS厂家而言,针对不同的产品业务、客户群体、市场定位和商业策略,制定出最合适的计费策略则显示尤为重要。

    https://support.developer.huaweicloud.com/doc/zh-cn_topic_0000001321576393-0000001321576393

SaaS运营数据分析

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。