1. 程式人生 > >架構設計之六個複雜度來(續)

架構設計之六個複雜度來(續)

這篇繼上篇架構設計之六個複雜度來源 沒有講完的剩下的三個內容低成本、安全、規模等。

 

一、低成本

當我們的架構方案只涉及幾臺或者十幾臺伺服器時,一般情況下成本並不是我們重點關注的目標,但如果架構方案設計幾百甚至上千上萬臺伺服器,成本就會變成一個非常重要的架構設計考慮點。例如,A方案需要10000臺機器,B方案只需要8000臺機器,但從比例上看,就節省了20%的成本。

關於低成本,還有就是聯絡我實際開發,對於一些OA方面的開發,目前的碼雲上有不少示例可用做參考,甚至拿來即用,當然了,有一點不可忽略的是,Java的Web方面開源的程度和功能的強大並沒有Python的Djaogo來的爽快。

OA開源專案地址:https://gitee.com/aaluoxiang/oa_system

執行效果,如下圖所示:

 

可以說,基本上滿足了OA常用功能,當然對於其他方面的個性化功能,可能需要在此基礎上擴充套件開發。不過,你要知道這個模板已經為你省了很多事情。正常來說,開發這個OA專案,要達到這種規模,以三個人來說,可能需要兩個月到三個月左右。

 

當然了,現成的解決方案也有其一定的侷限性:

比如現成的解決方案中可能包含你之前尚未接觸過的新技術,熟悉這個新技術你可能需要一段時間。

 

二、安全

安全本身是一個龐大而又複雜的技術領域,並且一旦出問題,對業務和企業形象影響非常大。

例如:

2013年10月,為全國4500多家酒店提供網路服務的浙江惠達驛站網路有限公司,因安全漏洞問題,致2千萬條入住酒店的客戶資訊洩露,為此導致很多敲詐、家庭破裂的後續事件。

正因為經常能夠看到或者聽到各類安全事件,所以大部分技術人員和架構師,對安全這部分會多一些瞭解和考慮。

從技術的角度來講,安全可以分為兩類:

一類是功能上的安全;

另一類是架構上的安全。

 

1.功能上的安全

例如:常見的XSS攻擊、CSRF攻擊、SQL注入、Windows漏洞、密碼破解等,本質上是因為系統實現有漏洞,黑客有了可乘之機。黑客會利用各種漏洞潛入系統,這種行為就像小偷一樣,黑客和小偷的手法都是利用系統或家中不完善的地方潛入,並進行破壞或者盜取。因此,形象地說:功能安全其實就是“防小偷”。

 

XSS攻擊是什麼?

XSS是一種經常出現在web應用中的電腦保安漏洞,它允許惡意web使用者將程式碼植入到提供給其它使用者使用的頁面中。比如這些程式碼包括HTML程式碼和客戶端指令碼。攻擊者利用XSS漏洞旁路掉訪問控制——例如

同源策略(same origin policy)。這種型別的漏洞由於被黑客用來編寫危害性更大的網路釣魚(Phishing)攻擊而變得廣為人知。對於跨站指令碼攻擊,黑客界共識是:跨站指令碼攻擊是新型的“緩衝區溢位攻擊“,而JavaScript是新型的“ShellCode”。

 

CSRF攻擊是什麼?

CSRF(Cross-site request forgery)跨站請求偽造,也被稱為“One Click Attack”或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。儘管聽起來像跨站指令碼(XSS),但它與XSS非常不同,XSS利用站點內的信任使用者,而CSRF則通過偽裝來自受信任使用者的請求來利用受信任的網站。與XSS攻擊相比,CSRF攻擊往往不大流行(因此對其進行防範的資源也相當稀少)和難以防範,所以被認為比XSS更具危險性。

 

SQL注入是什麼?

所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。具體來說,它是利用現有應用程式,將(惡意的)SQL命令注入到後臺資料庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的資料庫,而不是按照設計者意圖去執行SQL語句。 [1]  比如先前的很多影視網站洩露VIP會員密碼大多就是通過WEB表單遞交查詢字元暴出的,這類表單特別容易受到SQL注入式攻擊

 

關於Window漏洞和密碼破解,Window漏洞太多了,就不多說了,密碼破解,比如對QQ密碼破解或者是其他遊戲或者社交網站賬號破解等。通常對此的解決方案是,從使用者的角度是少點選一些無關的連結,這樣可以在一定程度上減少被破解的機會;從企業的角度上看,提高系統安全係數,提高核心安全方面的技術。

 

2.架構安全

如果說“功能安全”是為了防小偷,那麼架構安全就是為了防強盜。

強盜會直接用大錘將門砸開搶東西順便加搞破壞,而小偷是偷東西也會搞破壞。一般情況,強盜相對於小偷,危害更大。

因此架構設計時需要特別關注架構安全,尤其是網際網路時代,理論上來說,系統部署在網際網路上時,全球任何地方都可以發起攻擊。

傳統的架構安全主要依靠防火牆,防火牆最基本的功能就是隔離網路,通過將網路劃分成不同的區域,制定出不同區域之間的訪問控制策略來控制不同信任程度區域間傳送的資料流。

 

 

三、規模

很多企業級的系統,既沒有高效能要求,也沒有雙中心高可用要求,也不需要什麼擴充套件性,但往往我們一說到這樣的系統,很多人都會脫口而出:這個系統好複雜。為什麼這麼說呢?關鍵就在於這樣的系統往往功能特別多,邏輯分支特別多。特別是有的系統,發展實際比較長,不斷地往上面疊加功能,後來的人由於不熟悉整個發展歷史,可能連很多功能的應用場景都不熟悉,或者細節根本無法掌握,面對的就是一個黑盒系統,看不懂、改不動、不敢改、修不了,複雜度自然就感覺很高了。

 

規模帶來的複雜度主要原因在於“量變引起質變”,當數量超過一定閾值後,複雜度會發生質的變化。常見的規模帶來的複雜度有:

1.功能越來越多,導致系統的複雜度指數越來越高;

2.資料越來越多,系統的複雜度發生質變;

 

問:結合你所在的業務,分析一下注意的複雜度是這其中的哪些部分?是否還有其他複雜度原因?

我的回答是:就目前而言,注意是功能越來越多,導致複雜度指數上升。

 

 

小結:

本篇是上一篇文章的續,上篇文章主要講了高可用、高效能、可擴充套件性等三個方面。本篇主要是圍繞低成本、安全、規模等方面。

其實仔細想來,不管是高可用、高效能、可擴充套件性,還是低成本、安全、規模等。關鍵還是取決於業務。