Java程序員如何運用所掌握的技術構建一個完整的業務架構?
近幾年開始做一些新系統架構設計的工作,也參與了兩三個新系統的建設工作,我就按照我的理解,說一下我的工作步驟,由于經驗也不多,所以有錯誤的地方請留言指正。
業務的理解
首先,業務的理解是必不可少的,你不可能脫離業務去空想一個架構,這個是不切實際的:
1.前期的業務溝通我都是會參加的,并且我參與的系統大多數都是老系統的重構,所以老系統是什么樣子,都需要進行了解。
2.業務的需求究竟是一個什么樣子的,需要深度挖掘,避免遇到假需求。
3.和周邊系統有哪些交互,這個是必須了解的。
4.老系統有哪些缺陷,是需要在新系統避免的。
5.對新系統的業務壓力和數據量,需要有一個評估。
如何設計
在設計的過程中,技術知識的儲備很重要,你需要了解每項技術的優缺點和適用場景,常見問題的解決方案。
1.首先說說什么是“假需求”,比如一個人管你接紙巾(需求),你沒有(無法滿足需求),你是直接說“我沒有”還是說“你要紙巾做什么(挖掘客戶真實需求)”。對方說“我要紙巾擦桌子(真實需求)”。你正好有抹布,不就滿足對方真實的需求了么。挖掘出用戶真實的需求之后,才能避免一些無用的機構設計。
2.和周邊系統交互問題,這個也很關鍵:如果有系統會請求你的服務,并且對方系統是24小時運行的,那么你必須考慮集群部署+灰度發布了;如果你和另外一個系統的交易實時性要求不是那么的高但是請求很頻繁,那么就可以考慮引入消息中間件。
3.老系統的缺陷,是一定要避免再次入坑的。比如老系統某些功能在效率上很差,那么在新系統的設計中,是不是就可以考慮引入內存數據庫。
4.業務壓力的評估,是必不可少的。如果并發量比較高,那么需要多少資源實現都要評估出來,并且集群+負載均衡。如果數據量很大的話,是不是考慮讀寫分離,甚至分庫分表。
5.架構設計包括系統功能結構設計、系統技術架構設計(所用技術及分層)、數據架構設計、系統部署方案、網絡部署方案等等。

