成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

系統(tǒng)架構(gòu)設(shè)計(jì)之可維護(hù)性和可演化性

開發(fā) 架構(gòu)
“良好的操作性經(jīng)常可以化解軟件局限性,而不規(guī)范操作則會輕松擊垮軟件”。雖然某些操作可以而且應(yīng)該自動化 ,但最終還是需要人工執(zhí)行配置并確保正常工作。

可維護(hù)性

軟件大部分成本其實(shí)不在最初開發(fā)階段,而是在于整個(gè)生命周期內(nèi)的持續(xù)投入,包括維護(hù)與bug修復(fù),監(jiān)控系統(tǒng)來保持正常運(yùn)行、故障排查、適配新平臺、搭配新場景、技術(shù)缺陷完善及增加新功能。

可惜許多程序員不喜歡維護(hù)這些所謂的遺留系統(tǒng),例如修復(fù)他人埋下的bug或使用過時(shí)的開發(fā)平臺或被迫做不喜歡的工作。每個(gè)遺留系統(tǒng)總有過期理由,所以很難給出通用建議該如何對待它們。

但換個(gè)角度,可從軟件設(shè)計(jì)時(shí)就開始考慮,盡可能減少維護(hù)期的麻煩,甚至避免制造出易過期系統(tǒng)。為此,需特別關(guān)注軟件系統(tǒng)的三個(gè)設(shè)計(jì)原則:

  • 可運(yùn)維性方便運(yùn)維團(tuán)隊(duì)來保持系統(tǒng)平穩(wěn)運(yùn)行。
  • 簡單性簡化系統(tǒng)復(fù)雜性,使新工程師能夠輕松理解系統(tǒng)。注意這與API的簡單性不同
  • 可演化性后續(xù)開發(fā)能輕松對改進(jìn)系統(tǒng),并根據(jù)需求變化將其適配到非典型的場景,也稱為可延伸性、易修改性或可塑性

類似可靠性、可擴(kuò)展性,實(shí)現(xiàn)這些目標(biāo)也沒簡單解決方案。但我們首先還是要建立對這三個(gè)特性的理解。

1.可運(yùn)維性:運(yùn)維更輕松

“良好的操作性經(jīng)常可以化解軟件局限性,而不規(guī)范操作則會輕松擊垮軟件”。雖然某些操作可以而且應(yīng)該自動化 ,但最終還是需要人工執(zhí)行配置并確保正常工作。

運(yùn)維團(tuán)隊(duì)對保持軟件系統(tǒng)順利運(yùn)行至關(guān)重要。優(yōu)秀團(tuán)隊(duì)通常至少負(fù)責(zé):

  • 監(jiān)視系統(tǒng)健康狀況,井在服務(wù)出現(xiàn)異常狀態(tài)時(shí)快速恢復(fù)服務(wù)
  • 追蹤問題原因,例如系統(tǒng)故障或性能下降
  • 保持軟件和平臺至最新狀態(tài), 如安全補(bǔ)丁
  • 了解不同系統(tǒng)如何相互影響,避免執(zhí)行帶有破壞性的操作
  • 預(yù)測未來可能問題,并在問題發(fā)生前解決(例如大促之前就完成機(jī)器擴(kuò)容)
  • 建立用于部署、配置管理等良好的實(shí)踐規(guī)范和工具包
  • 執(zhí)行復(fù)雜的維護(hù)任務(wù), 例如將應(yīng)用程序從1個(gè)平臺遷移到另1個(gè)平臺
  • 建立用于部署、配置管理等良好的實(shí)踐規(guī)范和工具包
  • 配置更改時(shí),維護(hù)系統(tǒng)的安穩(wěn)
  • 制定流程,規(guī)范操作行為,并保持生產(chǎn)環(huán)境穩(wěn)定
  • 保持相關(guān)知識的傳承(如對系統(tǒng)理解),及時(shí)復(fù)盤存檔。如發(fā)生團(tuán)隊(duì)人員離職或新員工加入

良好可操作性意味著日常工作的簡單,使運(yùn)維團(tuán)隊(duì)能專注更高附加值的任務(wù)。數(shù)據(jù)系統(tǒng)設(shè)計(jì)可以在這方面貢獻(xiàn)很多, 包括:

  • 提供對系統(tǒng)運(yùn)行時(shí)行為和內(nèi)部的可觀測性,方便監(jiān)控
  • 支持自動化, 與標(biāo)準(zhǔn)工具集成
  • 避免綁定特定機(jī)器,這樣在整個(gè)系統(tǒng)不間斷運(yùn)行的同時(shí),允許機(jī)器停機(jī)維護(hù)
  • 提供良好的文檔和易于理解的操作模式,諸如“如果我做了X,會發(fā)生Y”
  • 提供良好的默認(rèn)配置,且允許管理員在需要時(shí)方便修改默認(rèn)值
  • 嘗試自我修復(fù),在需要時(shí)讓管理員手動控制系統(tǒng)狀態(tài)
  • 行為可預(yù)測,減少意外發(fā)生

2.簡單性:簡化復(fù)雜度

小軟件項(xiàng)目通常能寫出簡單而漂亮的代碼 ,但隨項(xiàng)目變大,就越復(fù)雜和難理解。這種復(fù)雜性拖慢后續(xù)的開發(fā)效率,增加維護(hù)成本。一個(gè)過于復(fù)雜的軟件項(xiàng)目被稱為大泥潭。

復(fù)雜性有各種表現(xiàn)方式:

  • 狀態(tài)空間的膨脹
  • 模塊緊耦合
  • 令人糾結(jié)的相互依賴關(guān)系
  • 不一致的命名和術(shù)語
  • 為了性能而采取的特殊處理
  • 為解決某特定問題而引人的特殊框架等

復(fù)雜性使維護(hù)變得越來越困難, 最終導(dǎo)致預(yù)算超支和開發(fā)進(jìn)度滯后。對復(fù)雜軟件系統(tǒng),變更而引人潛在錯(cuò)誤的風(fēng)險(xiǎn)會顯著增大,最終開發(fā)人員更加難以準(zhǔn)確理解、評估或更加容易忽略相關(guān)系統(tǒng)行為,包括背后的假設(shè),潛在的后果,設(shè)計(jì)之外的模塊交互等。而降低復(fù)雜性就能大大提高軟件可維護(hù)性,因此簡單性應(yīng)該是構(gòu)建系統(tǒng)的關(guān)鍵目標(biāo)之一。

簡化系統(tǒng)設(shè)計(jì)不代表減少系統(tǒng)功能,而意味著消除意外方面的復(fù)雜性,有大佬把復(fù)雜性定義為一種“意外”,即它并非軟件固有、被用戶所見或感知,而是實(shí)現(xiàn)本身所衍生出的問題。

消除意外復(fù)雜性最好的手段之一是抽象。好的設(shè)計(jì)抽象:

  • 能隱藏大量實(shí)現(xiàn)細(xì)節(jié),并對外提供清晰易懂的API
  • 可用于各種不同的應(yīng)用程序。這樣,復(fù)用遠(yuǎn)比多次重復(fù)實(shí)現(xiàn)更有效率
  • 也帶來更高質(zhì)量的軟件,而質(zhì)量過硬的抽象組件所帶來的好處,可以使運(yùn)行其上的所有應(yīng)用輕松獲益

例如,高級編程語言作為一種抽象,就隱藏了匯編、 CPU寄存器和系統(tǒng)調(diào)用的細(xì)節(jié)和復(fù)雜性。SQL作為一種抽象,隱藏內(nèi)部復(fù)雜的磁盤和內(nèi)存數(shù)據(jù)結(jié)構(gòu)及來自多客戶端的并發(fā)請求,系統(tǒng)崩潰之后的不一致等問題。當(dāng)然了,使用高級編程語言最終也沒有脫離匯編代碼,只是井非直接使用,與匯編代碼打交道的事情已由編程語言抽象為高效的接口代替我們來完成。

但設(shè)計(jì)好抽象很有挑戰(zhàn)性。在分布式系統(tǒng)領(lǐng)域中,雖然已有許多好算法可參考,但很多時(shí)候并不太清楚如何利用他們,封裝到抽象接口中,最終幫助將系統(tǒng)的復(fù)雜性降低到可靠控的級別。

日常開發(fā)時(shí),我們可以廣泛考察如何設(shè)計(jì)好的抽象,這樣至少能夠?qū)⒋笮拖到y(tǒng)的一部分抽象為定義明確、可重用的組件,提高自己的年終績效!

可演化性:易于改變

沒有一成不變的系統(tǒng)需求,想法和目標(biāo)在不斷變化:適配新外部環(huán)境,新用例,業(yè)務(wù)優(yōu)先級變化,用戶要求新功能,新平臺取代舊平臺,法律或監(jiān)管要求變化,業(yè)務(wù)增長促使架構(gòu)演變等。

組織、流程方面 ,敏捷開發(fā)模式為適應(yīng)變化提供了很好參考。敏捷社區(qū)還發(fā)布了很多技術(shù)工具和模式,以幫助在頻繁變化的環(huán)境中開發(fā)軟件,例如TDD和重構(gòu)。這些敏捷開發(fā)技術(shù)多數(shù)還只是針對小規(guī)模、本地模式(例如同一應(yīng)用程序中的幾個(gè)源代碼文件)環(huán)境。我們需要探索在更大的數(shù)據(jù)系統(tǒng)層面上提高敏捷性,系統(tǒng)由多個(gè)不同特性的應(yīng)用或者服務(wù)協(xié)作而成

我們的目標(biāo)是可以輕松修改數(shù)據(jù)系統(tǒng),使其適應(yīng)不斷變化的需求,這和簡單性與抽象性密切相關(guān):簡單易懂的系統(tǒng)往往比復(fù)雜系統(tǒng)更易修改。我們將采用另一個(gè)不同的詞指代數(shù)據(jù)系統(tǒng)級的敏捷性:可演化性。

本文轉(zhuǎn)載自微信公眾號「 JavaEdge」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系JavaEdge公眾號。

責(zé)任編輯:武曉燕 來源: JavaEdge
相關(guān)推薦

2020-04-28 16:12:50

前端JavaScript代碼

2024-10-30 08:08:45

2023-10-16 09:30:06

Java代碼

2023-04-28 14:54:57

架構(gòu)開發(fā)React

2014-05-19 10:08:36

IM系統(tǒng)架構(gòu)設(shè)計(jì)

2023-08-16 12:34:16

同步備份異步備份

2021-11-01 21:01:01

架構(gòu)設(shè)計(jì)軟件

2023-07-05 08:00:52

MetrAuto系統(tǒng)架構(gòu)

2024-04-16 08:48:14

WPF開發(fā)MVVM庫Prism

2023-09-20 23:03:40

C++函數(shù)

2015-06-02 04:17:44

架構(gòu)設(shè)計(jì)審架構(gòu)設(shè)計(jì)說明書

2025-02-13 00:28:26

2023-10-17 09:19:34

開發(fā)Java

2024-04-18 14:19:39

UPS系統(tǒng)模塊化數(shù)據(jù)中心

2023-07-02 06:47:42

LOFTER系統(tǒng)架構(gòu)

2015-06-02 04:34:05

架構(gòu)設(shè)計(jì)

2012-05-30 09:43:45

業(yè)務(wù)邏輯層

2009-06-22 14:48:21

DRY架構(gòu)設(shè)計(jì)

2022-06-14 08:02:35

關(guān)系模型數(shù)據(jù)模型文檔模型

2023-04-13 08:23:28

軟件架構(gòu)設(shè)計(jì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲国产精品99久久久久久久久 | 精品日韩在线 | 一区二区在线不卡 | 一区中文字幕 | 手机看黄av免费网址 | 日韩欧美中文 | 盗摄精品av一区二区三区 | 91免费看片 | 国产乱码久久久久久 | 欧美精品免费观看二区 | 美女一级黄 | 色888www视频在线观看 | 91九色在线观看 | 久久精品国产久精国产 | 全部免费毛片在线播放网站 | 99热视| 国产亚洲www | 成人福利网 | 黄色在线免费网站 | 中文精品一区二区 | 欧美日韩一区二区三区四区 | 激情的网站 | 国产精品毛片一区二区在线看 | 成人h动漫亚洲一区二区 | 国产在线一区二区三区 | 精品av| 美女中文字幕视频 | 四虎成人精品永久免费av九九 | 久久久久国产一区二区三区 | 蜜桃视频在线观看免费视频网站www | 先锋av资源在线 | 国产精品一区二区三区四区五区 | 成人不卡 | 国产精品视频一二三区 | 欧美不卡在线 | 国产精品99久久久久久动医院 | 欧美极品视频在线观看 | 欧美激情一区二区三区 | 宅男噜噜噜66一区二区 | 美女一级黄| 天天搞天天搞 |