一、前言

在做企业服务类(ToB)的产品时,我们经常会遇到如下场景:

每个客户拿着他们的需求清单,来咨询我们的产品是否可满足他们的诉求。如图所示:

每个客户的需求有重叠的内容,也有不一样的内容,而这些需求,在某一领域均具有较强的通用性。

如何满足这些客户需求的同时又能使各个需求沉淀为标准功能,而不仅仅是为了交付项目?这成为ToB类产品经理思考最多的问题。

为支撑客户诉求,基本的做法是抽象各个需求,落地为标准功能,将各个功能拼装成一个产品。但是一段时间后大家就会发现功能越堆越多、产品越做越庞大,但是用户体验却越来越差,产品开发维护越来越困难。
如何既能满足客户诉求,又能解决产品存在的这些问题?模块化设计是一个方向。后面我们展开介绍下,数栈在模块化设计方面的一些经验供参考。

二、模块化设计介绍

(一)目的

  • 从商务销售的角度说,产品模块可自由组合报价,贴合不同客户的需求,提高产品销售的成单率。
  • 从产品研发的角度说,减少重复造轮子的现象,提高研发效率和产品扩展性。

(二)落地经验
模块化设计在数栈平台的落地实施,从大到小主要分为下面三种方式:

  • 子产品化
  • 公共模块
  • 组件/插件化开发

1、子产品化
1)需求背景:
每个客户,甚至同一个客户在不同阶段,对数据中台的理解都不尽相同。

  • 比如客户A是个中等规模企业,希望能有款产品帮助他建设离线数仓,满足基本的数据开发诉求,那数栈的离线开发模块就可以满足他们的诉求。
  • 比如客户B是个大型的集团企业,希望能从数据开发、数据服务、数据治理等多个方面搭建起集团数据中台,那就得输出一整套数栈去满足该客户。

2)设计思路:

  • 产品上——根据业务逻辑,各个模块独立解耦,定位升级为子产品,负责解决不同的业务场景诉求。
  • 商务上——销售时可单独报价输出,也可组合报价输出。

3)落地成果:
数栈作为一款数据中台产品,其中包含了:离线开发、实时开发、算法开发、数据服务、数据资产、数据质量、智能标签等子产品,每个子产品可解决不同的业务场景诉求,并支持独立、组合部署。

2、公共模块
1)需求背景:
数栈的各个模块独立化成子产品后,虽然可以解决不同的业务场景诉求,但是在数据中台这个框架内,仍然会存在一些相同的基础功能诉求,比如用户体系、数据源管理、任务运维等。如果每个子产品内部独立实现,会存在两个问题:

  • 增加了用户的使用成本。比如相同的用户、相同的数据源需要在各个子产品内多次维护,而且还容易造成理解歧义。
  • 增加了产品的研发成本。相同的功能需要重复实现,重复造轮子,浪费研发资源和运维成本。

2)设计思路:

  • 剥离各个子产品中的通用功能作为公共模块,统一进行维护管理,然后为各个子产品提供服务。
  • 公共模块的设计需要充分调研各个子产品的诉求。对于通用诉求,抽象出标准功能;对于拓展诉求,提供配置化功能;对于个性诉求,由子产品自行实现。

3)落地成果:

3、组件/插件化开发
1)需求背景:
如果说前两部分的模块化设计是对产品经理能力的考验,那这部分内容更多是对开发人员的要求。

下面介绍我们在日常工作中遇到过三个问题场景:
a、产品设计时,需要新增一个输入框,要求是:属于必填项、内容格式限制中英文、长度限制255字符。

需求很简单,但是每次评审时,产品经理都得给研发说明如果为空时怎么提示、内容不符合格式要求时怎么提示、长度超过限制时怎么处理,沟通成本极大,而这仅仅是整个原型设计中1%都不到的内容。

b、产品设计时,需要复用另一个模块中的表单,表单中维护的各个表单项、表单项关联逻辑均相同。
功能完全一致,但是研发调研后发现,原有的表单处理逻辑和业务处理逻辑强耦合,导致表单代码无法复用,需要重新独立开发。

c、在产品迭代过程中发现存在一类需求,更新相对频繁,需求逻辑具有一定共性,而且更新不会涉及已有功能的改动。
这类需求对于开发,和公共模块之于产品类似,可以抽象为一种公共技术能力对外提供服务。比如我司经常会遇到的需求有:新增支持一种数据源、引擎新增一种任务类型等。

2)解决方案:

  • 前端沉淀标准组件库。对于一些常用的设计,通过组件复用来减少开发和产品的工作量;目前我们已沉淀30+前端组件,并在持续迭代中。
  • 代码的低耦合设计。这部分要求比较虚,而且没有非常明确的边界,依赖开发经验和对业务的理解,需要持续成长。
  • 插件化设计。区分应用层代码和底层代码,底层代码进行插件化封装,可为上层不同的应用提供支持,在支持快速迭代的同时又不会影响已有功能,这样应用层开发可以投入更多地精力去支持业务。目前已落地:数据源插件、数据同步插件、Engine插件、血缘解析插件。

三、总结思考

模块化设计是一种解决方案,并不是最终目的,因此,在产品设计时不能为了模块化而模块化。尤其是产品初期,此时产品功能并不丰富,而且为了快速迭代抢占市场,并不适合投入较多的精力去做这个事情。但是一旦产品进入稳定发展期,产品经理和研发同学都应该开始思考模块化设计在日常工作中的应用了。

模块化设计并不是产品换个名称、独立做个页面就是模块化了,业务层面如何划分、模块之间如何配合、插件剥离的边界在哪,代码逻辑怎么解耦等等,这些都是需要思考的地方。

数栈是云原生—站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变化的数据,是全域、异构、批流一体的数据同步引擎。大家喜欢的话请给我们点个star!star!star!

github开源项目:https://github.com/DTStack/flinkx

gitee开源项目:https://gitee.com/dtstack_dev_0/flinkx

数栈产品分享:干货解读数据中台产品「模块化」设计思路相关推荐

  1. 挖掘企业数据矿产,袋鼠云数栈(DTinsight)助力企业搭建数据中台

    2017年5月,英国<经济学人>杂志发表文章,将数据比作"未来的石油".自那以后,数据是"21世纪最宝贵的资源"这种观点便传播开来. 石油在进入消费 ...

  2. 阿里数据总监分享《阿里数据中台建设实践案例》,PPT+语音讲解!

    戳蓝字"CSDN云计算"关注我们哦! 作者 |  技术领导力 责编 | 阿秃 本文整理自,阿里巴巴集团数据部商业应用总监列文,在"2019年阿里云(上海)峰会" ...

  3. 定位云原生数据中台,「智领云」获数千万元A轮融资

     点击"蓝字"关注我们 来源 | 36氪 作者 | 张丞 编辑 | 咏仪 36氪获悉,「智领云」获金沙江联合资本领投,线性资本跟投的数千万元A轮融资.本轮融资将主要用于市场拓展和产 ...

  4. 微火发布数据中台产品,加速商户数字化转型经营

    2021年7月5日,微火发布"数据中台"产品,其战略目标为"每一个商户主体都可拥有自已的数据中台",据了解微火为温州专帮信息科技旗下有限公司产品.为国内智慧数字 ...

  5. 简单谈谈最近在看的几本书「数据中台,用户画像」

    本文已收录github:https://github.com/BigDataScholar/TheKingOfBigData,里面有大数据高频考点,Java一线大厂面试题资源,上百本免费电子书籍,作者 ...

  6. oracle数据集成产品,甲骨文推出Oracle数据集成产品

    日前,甲骨文推出构成Oracle数据集成产品线基础的Oracle GoldenGate 11g和Oracle数据集成器企业版11g,这两款新产品是Oracle融合中间件产品系列的组成部分. 在过去几年 ...

  7. 产品经理眼里的数据可视化产品定位

    一听产品经理这四个字,想必最头疼的该是程序员了.<还珠格格>里有句话"还记得大明湖畔的夏雨荷吗?",小编要说的是"还记得中国平安的那个产品经理和APP程序员吗 ...

  8. 4万字 全面解读数据中台、数据仓库、数据湖等概念!建议收藏!

    作者丨修鹏李 建议阅读需50分钟 如今,随着诸如互联网以及物联网等技术的不断发展,越来越多的数据被生产出来-据统计,每天大约有超过2.5亿亿字节的各种各样数据产生.这些数据需要被存储起来并且能够被方便 ...

  9. 【白皮书分享】2022数据中台交付标准化白皮书-阿里云+埃森哲.pdf(附下载链接)...

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 [免费下载]2022年2月份热门报告盘点 2022年中国人工智能人才培养报告.pdf 2021中国AI商业落地市 ...

最新文章

  1. Django MTV模型思想
  2. 使用BPF跟踪Linux内核
  3. eclipse运行时出现Unable to execute dex
  4. python 测试用例中设置执行时间_Python基于unittest实现测试用例执行
  5. 数据结构特性解析 (四)LinkedList
  6. mysql 自后向前截取函数_【转载】Sqlserver使用Right函数从最右边向前截取固定长度字符串...
  7. java 操作窗口_java selenium (十二) 操作弹出窗口
  8. Java集合(7):散列与散列码
  9. Java虚拟机栈介绍
  10. 今天的几点感悟_20160429
  11. 在Jenkins平台上运行Jmeter
  12. 【学堂在线数据挖掘:理论方法笔记】第10天(4.4)
  13. vue3移动端腾讯地图坐标拾取,获取当前定位(腾讯、高德、百度、天地图),火星坐标GCJ-02–>百度坐标BD-09,根据坐标经纬度计算两点距离的方法,点击链接打开地图导航的方法
  14. MAC中配置SDK环境变量
  15. php mysql begin_PHP mysqli_begin_transaction() 函数用法及示例
  16. 血仍未冷——写在37岁生日
  17. action中获取jsp页面的参数的方法
  18. 排球分组循环交叉编排_第一届“黄河金三角杯”全国学生排球邀请赛竞赛规程...
  19. 网络安全(2) -- 关于一次XSS攻击-图片(img标签)的onerror事件
  20. 踩坑日记:Parameter ‘XXX‘ not found. Available parameters are [param5, param6]解决一下午。。。。

热门文章

  1. 受损固态硬盘(SSD)数据恢复方法(福利:固态硬盘免费恢复数据)
  2. 论文阅读-社交媒体上的谣言检测:数据集、方法和机会
  3. SQL server数据库的操作步骤·Transact-SQL创建
  4. Xcode 常用编译选项设置【推荐】
  5. 课后作业4:个人总结
  6. Java中的Try with Resources语句介绍
  7. i7 12650h参数 酷睿i712650h属于什么档次
  8. 数据分析大数据面试题大杂烩01
  9. 五分钟学会python_果粉有福了!5分钟学会用Python统计自己最爱听的音乐
  10. 下载的turbo c 3.0 怎样安装