鄭昀 建立于2016/3/30 最後更新于2016/4/8
關鍵詞:技術預研課題,平台設計,應用場景,故事,資訊架構,業務流程,資料流程
本文檔适用人員:全體研發
提綱:
如何從零開始搭建一個技術平台?
應用場景其實就是我們的願景
從應用場景推導出故事
從故事推導出資訊架構和業務流程
一,如何從零開始?
如果讓你把下面這套技術體系串聯起來,從零開始建構一個技術平台,你如何做需求分析呢,在沒有産品經理幫助你梳理的情況下?
下面這些系統涵蓋了我們研發測試運維日常工作的方方面面:
idcenter:它定義使用者、使用者組、權限。研發測試都有了唯一的身份和權限集合,貫穿所有系統。
idb:資料庫自動化運維系統能把資料庫建帳号、授予權限、建表、改表結構、刷庫這些日常操作都變成流程,dba稽核通過後就可以自動執行,以及自動復原。
touchstone:容器私有雲的管理控制台,管理鏡像庫、應用、容器、主機等。日常釋出就在這裡做。
jobcenter:定時任務排程和管理。
summoner:大型計算任務的排程和管理。雲縱傭金計算就是在這上面跑的。
notify:異步消息可靠推送。所有的異步消息都走這個中間件。
discache:管理memcached和redis。
oap:運維自動化系統。主要是資産管理、資源管理和釋出。
secret:天機和鷹眼。資料庫、java、php、業務名額,監控報警都做進來了。
你就是一個說故事的人,為了保證大家對故事的了解沒有偏差,是以大家『都希望你說得具體點兒(user story),把故事落實在産品的需求點(product backlog),然後在這些需求點裡面排出優先級(sprint backlog),然後排出版本(version),這樣兄弟們做開發和不斷燃燒(burn up)』。[注1]
即,
/*
先有場景, \
再有故事, \
通過故事拆解出資訊架構,即菜單結構和功能點, \
最後歸入某個版本, \
在所有的故事、功能點和版本都确定之後,我們就進入不斷的排序優先級和循環的過程。
*/
二,何謂應用場景?
大家也許會注意到,當我發起技術預研課題時,我通常都會給出我想象中的、心目中這個課題的願景,以一個目标使用者是如何使用這個平台的應用場景的方式。
譬如說:
本地生活服務商戶“魔鏡”計劃
願景:
為公司分銷、共創和營運的決策提供門店資料支撐,提供(自助)可視化資料和自助資料查詢能力
應用場景舉例:
場景一:
開站決策支援:哪些城市值得開站,哪些不值得?
背後的資料支撐:
開展過網際網路營銷服務并且經營得尚可的門店清單以及銷售情況
場景二:
餐飲和美業品類下,優先向哪些商戶推縱橫客?
門店的位址電話,使用者活躍度,門店星級,團購和外賣商品數,折扣領取次數等
這就是願景和場景。
我們對于上遊業務部門流轉過來的需求,也必須熟練運用下面這種逆推能力:
先構造出合乎邏輯的多種應用場景,然後回頭審視自己的概念設計、功能設計、資訊架構設計是否正确。如果你的表結構等設計不符合這些應用場景,必定是你的設計不對。
why?
不合邏輯,必有問題。
再舉一個應用場景例子:
預研課題:cloudengine
場景ce-main-004:伺服器申請
伺服器申請的步驟有:
選擇應用
選擇虛拟化技術(注:即容器還是虛拟機)
填寫節點數
修改應用配置(注:可選)
配置設定伺服器
伺服器初始化
添加監控等各種運維基礎設施
部署應用
checkservice等自檢
收集監控資料
伺服器申請成功提示
使用者:研發經理,配管,sa
目的:既能在環境初始化時解決 stable 環境的釋出,也能在環境就緒之後建立臨時應用時的伺服器申請和釋出。
有了應用場景,就可以針對不同的使用者設計故事。
三,從應用場景推導出故事
順着場景展開,就可以得到一個又一個的故事。
譬如說,對于上面的場景,我們可以針對使用者“研發經理小丁”來設計 user story,我們看到了什麼,操作了什麼,又得到了什麼結果:
對應的場景:場景ce-main-001,登記和維護應用
使用者:研發經理小丁
故事ce-main-001-story-01:
小丁
ce
登入ce,從左側菜單“應用管理”,選擇“應用清單”
展示登記備案的應用清單。
清單展示,字段有:
應用中文名
應用codename
應用類型
應用領域
代碼倉庫
狀态
建立人,建立時間
最後一次維護人,最後一次維護時間
更多操作
本清單頁可以按應用類型篩選。
”更多操作“區域裡有以下操作入口:
編輯
删除
點選清單頁上的“新增應用”按鈕
應用中繼資料字段有:
應用描述
應用配置資訊
預設通路端口
狀态:啟用/禁用
點選新增應用頁上的“儲存”按鈕
生成新應用,提示儲存成功,一段時間後跳轉回清單頁
越細越好,越有助于研發同學設計頁面,了解系統需要提供哪些接口和資料。
四,從故事推導出資訊架構和業務流程
順着故事,我們可以假想出人們是怎麼抵達這些故事的。與此同時,即使是同一個應用場景,也會有多種進入途徑。
譬如說,小丁同學既可以在首頁的工作台上進入應用維護功能,也可以在二級菜單上找到對應的入口。如下圖所示:

通過上圖,我們可以整理出資訊架構:
首頁(工作台):應用快捷入口,環境快捷入口,……
應用管理-應用清單(建立應用、編輯應用)
環境管理-環境清單(公共配置檢視、公共配置編輯)
故事越寫越多,進入途徑梳理清楚之後,我們就能總結出需要哪些 dashboard、一級菜單、二級菜單,進一步還能整理出業務流轉流程。
以上這種思考問題和推演方法,有助于我們從零開始,一點點切入平台,而不是像下面這樣“拍腦袋”地逆向設計:
先構想一級菜單和二級菜單
再構想菜單點選之後需要實作的功能點
最後在做頁面組織
我們的技術預研課題一般都圍繞着這四個核心概念:
資源
資料
流程
操作
開始建構一個體系。
我們順着 場景——>故事——>資訊架構——>業務流程——>版本以及版本包含的功能點,就可以把我們所掌握的資源(虛拟機叢集、docker叢集、實體機、……),外界采集的資料(組織架構、員工資訊、有效門店、交易……),業務流轉的流程,各個部門的操作,順利地結合起來。
注1:
這段『user story-product backlog-sprint backlog-version-burn up』的文字出自于《産品的視角:從熱鬧到門道》(百度産品架構師魯克著)。
延伸閱讀:
<a href="http://www.cnblogs.com/zhengyun_ustc/p/upgrade.html">技術高手如何煉成</a>
技術平台方案集:
<a href="http://www.cnblogs.com/zhengyun_ustc/p/summoner.html">#研發解決方案#分布式并行計算排程和管理系統summoner</a>
<a href="http://www.cnblogs.com/zhengyun_ustc/p/idb.html">#研發解決方案#idb-資料庫自動化運維平台</a>
<a href="http://www.cnblogs.com/zhengyun_ustc/p/flowguard.html">#研發解決方案#基于apriori算法的nginx+lua+elk異常流量攔截方案</a>
<a href="http://www.cnblogs.com/zhengyun_ustc/p/m2m.html">從宏觀到微觀——天機與鷹眼聯手</a>
<a href="http://www.cnblogs.com/zhengyun_ustc/p/55solution2.html">#研發解決方案介紹#tracing(鷹眼)</a>
<a href="http://www.cnblogs.com/zhengyun_ustc/p/55solution4.html">#研發中間件介紹#異步消息可靠推送notify</a>
<a href="http://www.cnblogs.com/zhengyun_ustc/p/55solution5.html">#研發解決方案介紹#idcenter(内部統一認證系統)</a>
<a href="http://www.cnblogs.com/zhengyun_ustc/p/55solution3.html">#研發解決方案介紹#基于持久化配置中心的業務降級</a>
<a href="http://www.cnblogs.com/zhengyun_ustc/p/55solution8.html">#研發中間件介紹#定時任務排程與管理jobcenter</a>
<a href="http://www.cnblogs.com/zhengyun_ustc/p/55solution9.html">#研發解決方案介紹#基于statsd+graphite的智能監控解決方案</a>
<a href="http://www.cnblogs.com/zhengyun_ustc/p/55solution10.html">#研發解決方案#discache-分布式緩存查詢與管理系統</a>
<a href="http://www.cnblogs.com/zhengyun_ustc/p/55solution6.html">#研發解決方案介紹#基于es的搜尋+篩選+排序解決方案</a>
<a href="http://www.cnblogs.com/zhengyun_ustc/p/55solution7.html">#資料技術選型#即席查詢shib+presto,叢集任務排程hue+oozie</a>
-eof-