在作企業服務類(ToB)的產品時,咱們常常會遇到以下場景:html
每一個客戶拿着他們的需求清單,來諮詢咱們的產品是否可知足他們的訴求。如圖所示:前端
每一個客戶的需求有重疊的內容,也有不同的內容,而這些需求,在某一領域均具備較強的通用性。git
如何知足這些客戶需求的同時又能使各個需求沉澱爲標準功能,而不只僅是爲了交付項目?這成爲ToB類產品經理思考最多的問題。github
爲支撐客戶訴求,基本的作法是抽象各個需求,落地爲標準功能,將各個功能拼裝成一個產品。可是一段時間後你們就會發現功能越堆越多、產品越作越龐大,可是用戶體驗卻愈來愈差,產品開發維護愈來愈困難。
如何既能知足客戶訴求,又能解決產品存在的這些問題?模塊化設計是一個方向。後面咱們展開介紹下,數棧在模塊化設計方面的一些經驗供參考。算法
(一)目的框架
(二)落地經驗
模塊化設計在數棧平臺的落地實施,從大到小主要分爲下面三種方式:運維
一、子產品化
1)需求背景:
每一個客戶,甚至同一個客戶在不一樣階段,對數據中臺的理解都不盡相同。ide
2)設計思路:模塊化
3)落地成果:
數棧做爲一款數據中臺產品,其中包含了:離線開發、實時開發、算法開發、數據服務、數據資產、數據質量、智能標籤等子產品,每一個子產品可解決不一樣的業務場景訴求,並支持獨立、組合部署。工具
二、公共模塊
1)需求背景:
數棧的各個模塊獨立化成子產品後,雖然能夠解決不一樣的業務場景訴求,可是在數據中臺這個框架內,仍然會存在一些相同的基礎功能訴求,好比用戶體系、數據源管理、任務運維等。若是每一個子產品內部獨立實現,會存在兩個問題:
2)設計思路:
3)落地成果:
三、組件/插件化開發
1)需求背景:
若是說前兩部分的模塊化設計是對產品經理能力的考驗,那這部份內容更可能是對開發人員的要求。
下面介紹咱們在平常工做中遇到過三個問題場景:
a、產品設計時,須要新增一個輸入框,要求是:屬於必填項、內容格式限制中英文、長度限制255字符。
需求很簡單,可是每次評審時,產品經理都得給研發說明若是爲空時怎麼提示、內容不符合格式要求時怎麼提示、長度超過限制時怎麼處理,溝通成本極大,而這僅僅是整個原型設計中1%都不到的內容。
b、產品設計時,須要複用另外一個模塊中的表單,表單中維護的各個表單項、表單項關聯邏輯均相同。
功能徹底一致,可是研發調研後發現,原有的表單處理邏輯和業務處理邏輯強耦合,致使表單代碼沒法複用,須要從新獨立開發。
c、在產品迭代過程當中發現存在一類需求,更新相對頻繁,需求邏輯具備必定共性,並且更新不會涉及已有功能的改動。
這類需求對於開發,和公共模塊之於產品相似,能夠抽象爲一種公共技術能力對外提供服務。好比我司常常會遇到的需求有:新增支持一種數據源、引擎新增一種任務類型等。
2)解決方案:
模塊化設計是一種解決方案,並非最終目的,所以,在產品設計時不能爲了模塊化而模塊化。尤爲是產品初期,此時產品功能並不豐富,並且爲了快速迭代搶佔市場,並不適合投入較多的精力去作這個事情。可是一旦產品進入穩定發展期,產品經理和研發同窗都應該開始思考模塊化設計在平常工做中的應用了。
模塊化設計並非產品換個名稱、獨立作個頁面就是模塊化了,業務層面如何劃分、模塊之間如何配合、插件剝離的邊界在哪,代碼邏輯怎麼解耦等等,這些都是須要思考的地方。
數棧是雲原生—站式數據中臺PaaS,咱們在github和gitee上有一個有趣的開源項目:FlinkX,FlinkX是一個基於Flink的批流統一的數據同步工具,既能夠採集靜態的數據,也能夠採集實時變化的數據,是全域、異構、批流一體的數據同步引擎。你們喜歡的話請給咱們點個star!star!star!
github開源項目:https://github.com/DTStack/flinkx
gitee開源項目:https://gitee.com/dtstack_dev_0/flinkx