保险产品SaaS化实践之路(中)

简介: 保险产品SaaS化实践之路

三板斧 3


有的场景下,客户的定制化需求,需要改变产品基线的核心逻辑,而这些需求又无法抽象成可枚举的一些情况,因此Configuration模式无法适用这样的场景。那么如何在不改变产品基线代码的情况下,改变其核心逻辑呢?答案就在我们的第三块基石 – Plugin(可插拔)


我们自研了我们的Plugin Framework,能够在无代码入侵的情况下,实现产品基线的扩展点(Extension Points),同时可以让不同的客户需求以Plugin的形式接入。Plugin Framework按客户实现、国家实现、产品默认实现了三层分层:


Plugin及Lookup机制




需要注意的是,Plugin容易被滥用;因此我们在架构上规定,尽可能用Configuration和Composition模式,仅在不得已的情况下使用Plugin模式,并且需求产品基线架构委员会进行需求和设计审核,才能在产品基线开出Extension Point扩展点。

 

综合上述的三板斧设计模式,我们实现了满足开闭原则的可扩展产品基线:


综合使用三种模式的可拓展产品基线




3  从项目化向SaaS化(产品化),我们如何推进架构设计最终落地?


架构设计很丰满,现实和技术很骨感,我们知道目标在哪里是不够的,我们需要知道通向目标的正确路径。那么在2年前我们还是以大项目交付为核心模式的时候,我们是如何推进上述架构设计最终落地的呢,怎样的路径才是通往目的地的最优路径呢?下图是我们最终选择的方式,它支持了我们今天的成功转型。



我们上面讨论过三板斧的3种模式:Configuration,Composition,Plugin;Plugin模式作为一种尽可能不要用的模式,却是一种兜底的模式;没有Plugin,就支持不了我们产品化的最后一公里,因此它的重要性不言而喻。那么如何无侵入地做到呢?我们自研了众安国际的Plugin Framework(我们计划把该框架开源):


① 引入plugin框架

②定义扩展点-

只需要让你的扩展点接口继承ExtensionPoint 即可


③使用扩展点-

简单的面向接口编程和Spring DI(Autowired)


④项目交付实现扩展点-

还是简单 Annotation,除了业务,你什么都不用关心!

图注:实现扩展点,从而改变基线default的功能

⑤ 可协同,易管理

图注:基线和项目协同的开发、打包、部署



好了,看到这里,我们如何用一套代码,支持所有客户的需求,真正做到产品化和核心精髓相信你已经理解。那么我们就是一家SaaS公司了?等等,还没有!


4  多租户设计与框架


SaaS产品不仅要求一套代码,还要求一套部署支持多客户。这里有另一个极其重要的点,那就是多租户


支持多租户,有其最核心的三要素


多租户三要素1-Security 之 Authentication


多租户三要素2-Context


多租户三要素3.1

数据隔离在Data Model层面进行了第一层隔离,采用tenant_id进行租户的逻辑隔离。


多租户三要素3.2

虽然tenant_id已经做了租户逻辑隔离,但数据库模式还是采用了Per-Tenant的租户隔离模式,以保证更安全的数据隔离,这是第二层的数据隔离。


多租户三要素3.3

数据的二层路由 2-Layer Sharding。


多租户三要素3.4

下图是其它需要多租户改造的数据存储,也要对他们进行多租户改造,才能在多租户架构下实现隔离和安全。


如果大家对我们的多租户框架感兴趣的话,有一个好消息是,我们计划把它们开源,敬请期待!


除了多租户外,高可定制的SaaS订阅模式,也是SaaS产品非常重要的一环:


架构设计一个To B企业级SaaS产品,上面的任何一环都不可或缺,但这就是全部吗?敬请期待我们的《保险产品SaaS化实践之路(下)》!

相关文章
|
存储 人工智能 搜索推荐
【python】python用户管理系统[简易版](源码+报告)【独一无二】
【python】python用户管理系统[简易版](源码+报告)【独一无二】
|
6月前
|
消息中间件 数据采集 NoSQL
秒级行情推送系统实战:从触发、采集到入库的端到端架构
本文设计了一套秒级实时行情推送系统,涵盖触发、采集、缓冲、入库与推送五层架构,结合动态代理IP、Kafka/Redis缓冲及WebSocket推送,实现金融数据低延迟、高并发处理,适用于股票、数字货币等实时行情场景。
799 3
秒级行情推送系统实战:从触发、采集到入库的端到端架构
|
5月前
|
存储 Prometheus 监控
136_生产监控:Prometheus集成 - 设置警报与指标选择与LLM部署监控最佳实践
在大语言模型(LLM)部署的生产环境中,有效的监控系统是确保服务稳定性、可靠性和性能的关键。随着LLM模型规模的不断扩大和应用场景的日益复杂,传统的监控手段已难以满足需求。Prometheus作为当前最流行的开源监控系统之一,凭借其强大的时序数据收集、查询和告警能力,已成为LLM部署监控的首选工具。
|
6月前
|
存储 网络协议 算法
ISIS协议详解
ISIS协议是一种链路状态路由协议,广泛用于大规模网络中。它最初基于OSI模型设计,后经扩展支持TCP/IP协议。ISIS通过SPF算法计算最短路径,使用NSAP地址进行设备寻址,具备灵活的区域划分和分层结构。协议通过L1、L2及L1/2路由器实现区域内部与骨干区域的通信,支持P2P和广播网络类型,具备邻接建立、LSDB同步、路由计算等核心机制,广泛应用于运营商和企业骨干网中。
|
测试技术 持续交付 开发者
Logic Error: 如何识别和修复逻辑错误
识别和修复逻辑错误是软件开发中的重要技能。通过理解程序需求、使用调试工具、打印日志和编写单元测试,可以有效地识别逻辑错误。修复逻辑错误时,需仔细阅读代码,回溯错误来源,并进行全面的重新测试。遵循最佳实践,如保持代码简洁、进行代码审查和使用持续集成,可以进一步减少逻辑错误的发生,提高代码质量。希望本文能帮助开发者更好地识别和修复逻辑错误,编写出高质量的软件。
978 16
|
Java Linux 网络安全
树莓派的开发环境搭建教程
本教程详细介绍如何在树莓派上搭建开发环境,包括系统安装、配置网络、设置开发工具等步骤,适合初学者快速上手。
|
消息中间件 监控 Java
【Kafka节点存活大揭秘】如何让Kafka集群时刻保持“心跳”?探索Broker、Producer和Consumer的生死关头!
【8月更文挑战第24天】在分布式系统如Apache Kafka中,确保节点的健康运行至关重要。Kafka通过Broker、Producer及Consumer间的交互实现这一目标。文章介绍Kafka如何监测节点活性,包括心跳机制、会话超时与故障转移策略。示例Java代码展示了Producer如何通过定期发送心跳维持与Broker的连接。合理配置这些机制能有效保障Kafka集群的稳定与高效运行。
627 2
|
机器学习/深度学习 数据采集 人工智能
【AI大模型】Transformers大模型库(十一):Trainer训练类
【AI大模型】Transformers大模型库(十一):Trainer训练类
722 0
|
存储 监控 测试技术
Kibana 的 Alert—Elastic Stack 实战手册
Kibana 的 Alert 模块主要用于 Elastic Stack 的监控告警。以一种相对较低的使用成本,将复杂的查询条件,编辑完成后监控不同的 Elastic Stack 的技术产品中产生的数据,最终把符合条件的告警信息以需要的方式反馈给用户。
5579 0
Kibana 的 Alert—Elastic Stack 实战手册
|
开发框架 Java Linux
本地部署GeoServe服务并结合内网穿透实现任意浏览器远程访问
本地部署GeoServe服务并结合内网穿透实现任意浏览器远程访问