架構優化與業務迭代,你會怎麼選?

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"​ 引子"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於每個軟件系統,我們都可以通過業務和架構兩個維度來體現它的價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"尤其是軟件開發人員,應該確保自己的系統在這兩個維度上的實際價值都能長時間維持在很高的狀態。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不過很可惜,他們可能更多情況只關注一個維度,而忽略另一個;"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"假如關注了錯誤的維度,這導致了系統價值最終趨降爲0,非常可惜。"}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"1、業務與技術兼顧的難題"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在我們日常工作中,業務迭代支持與系統架構技術優化就如同魚與熊掌一樣,不可同時兼顧。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"case1"},{"type":"text","text":":"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當我們發現系統性能有些差,評估需要考慮優化一下,降低系統接口平響,同時提升用戶體驗..."}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但是這時候產品同學風風火火的跑過來說,最近有個業務改版需求/新業務功能需要緊急上線支持一下....."}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Q:你會怎麼辦?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"-- 要不技術優化的事,等這次需求完成後再說吧..."}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"case2"},{"type":"text","text":":"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們的每到年初就要做得技術規劃,是不是總感覺計劃趕不上變化..."}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"每到年中、年末覆盤時候,現實總會與規劃大相徑庭,要麼是規劃的事沒有做或者換了個低成本方案簡單實現了,要麼是中途出現了一些新的事情打亂了原來的規劃計劃。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Q:重新來一遍,你會怎麼來避免?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"-- 規劃 vs 變化"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以上的情況工作中大家應該挺常見的,那遇到類似的問題我們應該秉承什麼原則呢?有沒有有效解決的措施呢? "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"2、業務與技術哪個更重要?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"美國前總統艾森豪威爾提出個經典的“"},{"type":"text","marks":[{"type":"strong"}],"text":"緊急/重要矩陣"},{"type":"text","text":"”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我有兩種難題:緊急的和重要的,而緊急的難題永遠是不重要的,重要的難題永遠是不緊急的。"}]}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/0b/0b4c47588d40d80b2b69fe7285329c21.jpeg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"border"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Q:哪個維度更重要?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在研發同學看來,重要級別一目瞭然:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"重要的事"},{"type":"text","text":":架構設計優化,讓系統具有足夠的“彈”性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"緊急的事"},{"type":"text","text":":業務迭代支持,讓系統支撐業務持續發展"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"例如:日常業務迭代支持一貫緊急高優,但從架構設計合理性建設看來,似乎沒有那麼多關聯;而系統技術優化看來很重要,但往往沒有機會排的上期。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"關於哪個更重要的討論,當然仁者見仁智者見智"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"假如對於這個問題,由業務部門來回答,那就是業務更重要-系統支持業務迭代,保障業務正常發展很重要。 "}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"3、研發更需要關注什麼?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們可以試着將此四類情況做下排序:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1)重要且緊急"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2)重要不緊急"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"3)不重要但緊急"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"4)不重要且不緊急"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"系統架構設計優化:"},{"type":"text","marks":[{"type":"strong"}],"text":"重要"},{"type":"text","text":"(佔據第1、2位)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"業務迭代支持:"},{"type":"text","marks":[{"type":"strong"}],"text":"緊急"},{"type":"text","text":"(佔據第1、3位)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但是我們日常工作中,業務部門與研發部門經常犯的錯誤就是將第三優先級的事情提到了第優先級去做。將重要的系統技術優化事項被業務迭代所排擠。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們研發人員經常會抱怨,沒有時間來做技術優化,自我調侃爲:“又在搬磚...”、“又在加班寫BUG了...”"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"似乎我們忘記了:業務部門就是隻盯着業務的,對於系統架構的評估和優化,"},{"type":"text","marks":[{"type":"strong"}],"text":"本來就是研發人員的工作職責!"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"如何平衡好這兩者的工作,是研發人員的晉級修養之路。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不要忽略系統架構的價值,假如有一天系統難以維護到只能推翻重來的地步,可以說是系統技術優化跟不上業務快速迭代,同時側面說明了研發同學的本職工作做得不夠格。 "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"4、可供參考的實踐方案"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"上面說了很多技術架構優化與業務迭代支持兩者難以平衡的難題。那有沒有可以平衡的好方法呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我從自身工作實踐中整理一些經驗,主要就是“"},{"type":"text","marks":[{"type":"strong"}],"text":"總-分-總"},{"type":"text","text":"”的原則,供大家試用參考:"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"1、【總】項目立項,評估目標收益"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"做事要有價值,尤其技術優化類項目,一定要想明白收益點是什麼,同時搞清楚投入產出的性價比如何。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這個階段建議多花點時間,多調研分析下,建議目標儘量可量化,可達成。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"【項目目標制定-示例】"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"項目:XX系統性能優化"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目標:系統服務平響 <= 200ms(90分位值 <= 500ms)"}]}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"2、【分】拆分細化,評估優化改造範圍"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"確定目標後,需要將目標進行動作拆解,並評估每項動作的目標達成佔比以及優先級。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"功能點拆分注意要以終爲始,保障不要偏離目標。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"具體的方法可參考:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1)按流程邏輯拆分"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2)按工作模塊拆分"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"3)按數據流拆分"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可能前期對於各個點的評估並不一定太準,允許後期調整,但不應該大幅度調整,否則需要重新做下考量。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"【項目細化拆分-示例】"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"併發、服務依賴優化、cache、表結構拆分、表索引優化、邏輯優化(循環套循環)、Redis 大Key優化、資源隔離 等等"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"3、【總】歸類收斂,規劃可行的項目里程碑"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"功能評估按同一類型進行歸類,將各子優化項拆分到日常業務迭代中去,或者穿插到各需求開發間隙中去,小步快跑,保障項目穩步推進。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"【歸類收斂-示例】"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/ce/ce0ee894211569468bfdf9bed7bf2934.jpeg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"border"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"4、【保障】彙報跟進,項目迭代進度推進"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可建立以每週爲單位的項目彙報制度,召集相關同學定期例會跟進,項目進度&問題持續Review,保障項目整體推進進度。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"項目進度彙報主要關注點:"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/94/94c4148cd227d68a4c76422f865d1330.jpeg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"border"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"總結"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"很多人將業務與技術之間理還亂的關係稱爲“"},{"type":"text","marks":[{"type":"strong"}],"text":"相愛相殺"},{"type":"text","text":"”,其實技術與業務並不是對立的,而是相輔相成的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術作爲理論基礎,業務作爲實踐去檢驗落地。我們所學的技術,業務是我們的落地點,業務成功了同樣能反襯體現出技術價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Thanks for reading!"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章