架構原則1:不要使用Stored Procedure,因為這會讓業務邏輯難以維護。資料庫管理系統(DBMS)裡面可以直接執行PL/SQL等程式,這種程式叫做Stored Procedure。這些年我在許多金融公司的工作經驗讓我發現Stored Procedure的問題重重,導致業務邏輯難以維護,應該盡量避免使用Stored Procedure。當然,不排除有人能把Stored Procedure的程式碼寫得非常好,有很好的抽象隔離和模組化,使得系統容易維護,但我看到的實際狀況都不是如此,且Stored Procedure讓業務邏輯和資料的儲存結構結合得太緊密,這在未來系統調整時也會一個巨大的風險。
有人認為Stored Procedure直接在資料庫內處理資料,執行效率比較好。但任何選擇都有機會成本和風險,Stored Procedure非常可能會帶來業務邏輯難以維護的危害,比起它帶來執行效率提升的利益,大多數的情況下我們會選擇「讓業務邏輯好維護」。效率當然重要,但在這個時代,執行效率的提升通常會透過彈性靈活的分散式系統來達成,而不是透過單一個龐大系統效率的垂直提升。
架構原則2:一個系統內部可以包含儲存和程式碼,但系統間不能共用資料庫。一個系統應該完整地控制自己的資料庫,所有對資料庫的存取都必須透過系統本身,不能直接去讀寫資料庫,不光是不允許其他系統「寫入」此資料庫,就連「讀出」資料也不行。如此以來,系統之間的依賴只透過API,當系統根據需要調整自己的資料格式和資料解讀方式時,其他系統並不會受到影響。
架構原則3:邏輯容易變動的程式碼必須剝離成另一個系統,容易變動者(例如應用系統)可以依賴較不容易變動者(例如平台系統)。提前做好這個剝離的動作,後續在業務功能變化時,好處就很明顯了:需要要修改和測試的部分就會最小化,範圍可控。
架構原則4:任何系統都不能依賴容易變動的系統。這一條原則和上一條原則是有關聯的。容易變動的系統可能API的規格不穩定,且內部功能的穩定性也比較低,依賴這樣的系統就會導致你的系統也很容易受到影響。
架構原則5:被調用方必須提供清晰、文件化的API。當我做系統設計評審時,我非常關心API設計的良窳。好的API可以讓使用者一目了然,且有說明清楚的文件。關於API的設計,我的經驗是「核心系統」的API要做到彈性至上,API的數量少,但每個API的參數個數比較多,這麼設計的好處是可以避免核心系統經常需要修改。比較靠近應用的系統要做到使用的方便性至上,API的數量多,但每個API的參數個數比較少(且盡量讓參數有預設值,可以空缺不設定)。
架構原則6:使用者界面要被剝離出來,且使用者界面內盡量不要有邏輯。使用者界面內可以有佈局(layout)和操作等和業務無關的程式邏輯,但只要和業務有關的邏輯,一定要剝離出來。這麼做的好處是,可以在不同的終端設備之間共用業務邏輯。
精選專案.網頁設計.RWD響應式網站 / 休閒餐飲類
網站技術:PHP . Javascript/MySql . ORACLE
RWD響應式網站設計/網頁設計,網頁切版,後台程式管理,可於各種裝置進行網頁瀏覽(PC、平板、手機)。
網頁設計.RWD響應式網站.企業形象網站 / 服務類
網站技術:PHP . Javascript/MySql
向以勞動法專業律師團隊自詡,提供最專業法律相關服務的律師事務所暨企業管理顧問。
網頁設計.RWD響應式網站.無障礙網頁 / 農林漁牧類
網站技術:Javascript
致力於花蓮與宜蘭地區的農業事務,像是農作物推廣、技術改良或是新興發展等等。除了推動台灣農作物的發展,也提供民眾遊玩地點,可以體驗農村的好山好水,感受農作物的生長與農民的辛苦。
由於網站的資訊較多,大多皆以文字呈現。將比較重要的區塊額外用區塊獨立在左側,以利閱讀。 當滑鼠移到選單時也會直接就跳出子選單,不用逐筆的去尋找。
電話:(02)2739-9096 | 傳真:(02)2739-6637 | 客服:[email protected] | 臺北市信義區和平東路3段257號6樓map
© 2019 傑立資訊 All rights reserved.| 網站隱私政策