偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

軟件架構的十個質量屬性

開發(fā) 架構
一旦了解了功能性需求,嘗試找出系統(tǒng)中可能給這些功能增加障礙的瓶頸。如何找到瓶頸呢?

一般地,對于軟件系統(tǒng)的需求而言,分為兩類:功能性需求和非功能性需求。軟件系統(tǒng)的架構設計既要滿足軟件的功能性需求,還要滿足軟件的非功能性需求。特別地, 系統(tǒng)架構對軟件非功能性需求的支撐成為架構的質量屬性。本文描述了軟件的10個質量屬性, 但不意味著每個質量屬性都會在架構設計中呈現(xiàn),可以挑選對產品最重要的質量屬性,然后進行實現(xiàn)。

1 可伸縮性

隨著用戶或請求數(shù)量的增加,系統(tǒng)運行和操作的能力也隨之增加。在云平臺上,可伸縮性可以通過機器的水平或垂直縮放或者簡單地附加 AutoScalingGroup 來實現(xiàn)。

流量模式: 了解系統(tǒng)的交通模式。盡可能多地產生機器是不劃算的,即使它的利用率不高。

  • 日行模式: 特定地區(qū)的交通在早上增加,晚上減少。
  • 全局/區(qū)域模式: 區(qū)域大量使用應用程序。
  • 突發(fā)流量: 許多用戶都在請求資源,但是只有少數(shù)幾臺機器可以為突發(fā)的流量提供服務。這些可能發(fā)生在高峰期或人口密集地區(qū)。

自動縮放: 能夠迅速產生一些機器,以處理流量的爆發(fā),當需求正在減少時,優(yōu)雅地收縮。

延遲: 能夠盡快為請求提供服務。這還包括優(yōu)化算法和在用戶位置附近復制系統(tǒng),以減少請求的往返。

2 可用性

它以正常運行時間的百分比來衡量,并定義了系統(tǒng)正常運行和正常工作的時間比例??捎眯允艿较到y(tǒng)錯誤、基礎設施問題、惡意攻擊和系統(tǒng)負載的影響。

部署標記: 部署應用程序組件的多個獨立副本,包括數(shù)據(jù)存儲區(qū)

區(qū)域部署: 將后端服務部署到一組地理節(jié)點中,每個節(jié)點都可以服務任何區(qū)域中的任何客戶端請求。

3 可擴展性

可擴展性度量擴展了系統(tǒng)的能力和實現(xiàn)擴展所需的工作。擴展可以通過添加新功能或修改現(xiàn)有功能來實現(xiàn),該原則規(guī)定在不損害當前系統(tǒng)功能的情況下進行增強。

模塊化/可重用性: 可重用性和可擴展性使得技術可以以更少的開發(fā)和維護時間轉移到另一個項目,同時增強了可靠性和一致性。

可插拔性: 能夠輕松地插入其他組件,比如微內核架構。

4 一致性

一致性保證每個讀操作返回最近的寫操作。這意味著在執(zhí)行每個操作之后,所有節(jié)點的數(shù)據(jù)都是一致的,因此,,無論它們連接到哪個節(jié)點,所有客戶端都可以同時看到相同的數(shù)據(jù)。一致性提高了數(shù)據(jù)的新鮮程度。

5 彈性

系統(tǒng)可以從容地處理意外故障和惡意故障并進行恢復,檢測故障并快速有效地恢復對于保持彈性是必要的。

可恢復性: 準備的過程和功能能夠在發(fā)生意外更改后將服務返回到初始運行狀態(tài)。意外的更改包括應用程序的軟刪除或硬刪除或錯誤配置。災難恢復包括了旨在防止或盡量減少災難性事件造成的數(shù)據(jù)丟失和業(yè)務中斷的最佳實踐,涵蓋了從設備故障和局部停電到網絡攻擊、民事緊急情況、犯罪或軍事攻擊以及自然災害。

設計模式:

  • 隔離: 將應用程序的元素隔離到池中,以便在一個池失敗時,其他元素繼續(xù)運行。
  • 斷路器: 當連接到遠程服務或資源時,處理可能需要花費不同時間來修復的故障。
  • 選舉: 通過選舉一個實例作為負責管理其他實例的領導者,協(xié)調分布式應用程序中協(xié)作任務實例集合執(zhí)行的操作。

6 易用性

可用性可以描述為一個系統(tǒng)的能力,為其用戶提供一個條件,以執(zhí)行任務的安全有效,同時擁有良好的用戶體驗。它是指特定的消費者能夠使用軟件在量化的環(huán)境中以有效、高效和滿意的方式實現(xiàn)量化目標的程度。

易訪問性: 讓具有最廣泛特征和功能的人可以使用該軟件。這包括失聰、失明、色盲等用戶。

易學性: 用戶學習如何使用軟件有多容易?

API 契約: 對于內部團隊,理解 API 契約有助于輕松接入任何系統(tǒng)。

7 可觀測性

可觀測性是收集關于程序執(zhí)行、模塊內部狀態(tài)及組件間通信的數(shù)據(jù)的能力。為了提高可觀測性,可以使用各種測試跟蹤技術和工具。

日志記錄: 在每個請求中生成不同類型的日志: 事件日志、事務日志、消息日志和服務器日志。

警報和監(jiān)控: 準備監(jiān)控儀表板,創(chuàng)建 SLI (服務水平指示器)并設置關鍵警報。

L1/L2/L3: 為 L1/L2設置隨叫隨到的支持流程。L1支持包括與客戶交互,L2支持 L1路由到它們的工單,并幫助進行故障排除。L3是支持的最后一環(huán),通常包括一個解決技術問題的開發(fā)團隊。

8 安全性

軟件保護信息和數(shù)據(jù),使人或其他產品或系統(tǒng)有相應的數(shù)據(jù)訪問類型和授權水平。這一系列特征包括機密性(數(shù)據(jù)只能被授權訪問) ,完整性(軟件防止未經授權訪問或修改軟件或信息) ,不可否認性(能否證明已經發(fā)生的行為或事件) ,問責性(能否追蹤用戶的行為)和真實性(驗證用戶的身份)。

可審核性: 審核并跟蹤系統(tǒng)活動,以便在發(fā)生安全性缺陷時,可以確定缺陷的機制和程度。遠程存儲審計跟蹤(可以防止入侵者掩蓋其蹤跡。

合法性:

  • 遵守: 遵守 GDPR、 《個保法》等關于數(shù)據(jù)保護的法律法規(guī)。
  • 隱私: 對公司內部員工隱藏事務的能力(加密的事務,甚至 DBA 和網絡架構師也看不到它們)。

身份驗證: 確保用戶身份的安全性要求。

授權: 確保用戶只能訪問應用程序中的某些功能(通過用例、子系統(tǒng)、網頁、業(yè)務規(guī)則、字段級別等)。

9 持久性

持久性是軟件可服務性的解決能力,能夠較長時間地滿足用戶的需求。

復制: 涉及共享信息,以確保冗余資源之間的一致性,從而提高可靠性、容錯性或可訪問性。

容錯性: 容錯性是一種特性,它使系統(tǒng)能夠在某些組件出現(xiàn)一個或多個故障時繼續(xù)正常運行。

可歸檔性: 數(shù)據(jù)是否需要在一段時間后歸檔或刪除?(例如,客戶數(shù)據(jù)將在三個月后被刪除,或被標記為過時,并存檔在備用數(shù)據(jù)庫中,以便將來訪問。)

10 敏捷性

敏捷已經成為當今描述當代軟件方法的流行語,相關的敏捷團隊可能是一個能夠適應變化的團隊。

可維護性: 應用更改和增強系統(tǒng)有多容易?表示開發(fā)人員可以修改軟件以改進、糾正或使其適應環(huán)境和需求變化的有效性和效率程度。

  • 可測試性: 開發(fā)人員和其他人員測試軟件的容易程度
  • 易于開發(fā): 開發(fā)人員在不引入缺陷或降低現(xiàn)有產品質量的情況下修改軟件的程度

可部署性: 在提交部署之后到代碼投入生產的時間。

可安裝性: 易于在所有必要的平臺上安裝系統(tǒng)。

可升級性: 在服務器和客戶端上從此應用程序/解決方案的以前版本輕松/快速升級到較新版本的能力。

可移植性: 系統(tǒng)是否需要在多個平臺上運行?(例如,前端是否需要針對 Oracle 和 SAP 運行?)

可配置性: 最終用戶可以輕松地更改軟件配置的各個方面(通過可用的接口)。

兼容性: 產品、系統(tǒng)或組件在共享相同的硬件或軟件環(huán)境時,與其他產品、設計或成員交換信息并執(zhí)行所需功能的程度。

小結

了解了軟件架構中的10個質量屬性,我們可能需要考慮哪一個質量屬性更是適合自己的產品或項目。那么,如何在項目中繼續(xù)采用這些特性呢?

一旦了解了功能性需求,嘗試找出系統(tǒng)中可能給這些功能增加障礙的瓶頸。如何找到瓶頸呢?可以試著回答幾個這樣的問題:

  • 系統(tǒng)能否在100M以上用戶規(guī)模的基礎上運行?
  • 系統(tǒng)能處理10,000個并發(fā)請求嗎?
  • 是否以安全的方式處理數(shù)據(jù)?
  • 是否可以在不影響現(xiàn)有工作特性的情況下輕松地添加更多特性?
  • ......
責任編輯:武曉燕 來源: 喔家ArchiSelf
相關推薦

2010-01-06 09:17:57

軟件重用

2022-07-13 13:33:39

企業(yè)開源開發(fā)

2025-02-03 00:10:00

人工智能DevOpsLLMOps

2023-03-02 00:04:59

機器學習系統(tǒng)架構

2023-06-16 12:11:08

Linux虛擬化軟件

2009-03-03 16:50:52

需求分析軟件需求需求管理

2022-08-22 16:03:15

軟件開發(fā)系統(tǒng)

2011-12-14 10:21:26

最重要開源軟件

2009-03-26 09:12:30

軟件架構師領域云計算

2011-12-01 11:27:59

2011-09-05 09:19:35

虛擬化基礎架構

2010-09-06 15:35:27

2009-02-03 09:02:35

測試開發(fā)成本成本控制

2023-10-20 14:36:08

開源軟件.Net開發(fā)

2014-05-09 09:22:51

封閉軟件開源軟件Difio

2009-09-18 16:15:25

CSS樣式屬性

2019-09-25 09:20:33

機器學習Python數(shù)據(jù)科學

2024-12-03 14:33:42

Python遞歸編程

2017-07-20 14:03:23

2016-04-19 09:43:16

點贊
收藏

51CTO技術棧公眾號