本文為《架構(gòu)探險(xiǎn)-輕量級(jí)微服務(wù)架構(gòu)》(黃勇著)序
微服務(wù)來了,有了“服務(wù)”這兩個(gè)字,這注定又是個(gè)一說就明白、一舉例就糊涂、一討論就吵架的概念。微服務(wù)的出現(xiàn)有其必然的商業(yè)背景和架構(gòu)哲學(xué),如何更好的認(rèn)識(shí)微服務(wù)的內(nèi)涵、如臂使指的應(yīng)用微服務(wù)架構(gòu),還是有著很多挑戰(zhàn)的,這也許就是本書被命名為“架構(gòu)探險(xiǎn)”的原因。
企業(yè)數(shù)字化轉(zhuǎn)型驅(qū)動(dòng)架構(gòu)升級(jí)
互聯(lián)網(wǎng)經(jīng)濟(jì)深刻改變了我們身邊的商業(yè)環(huán)境,消費(fèi)者的生活方式日益數(shù)字化,人們可以在任何時(shí)間、任何地點(diǎn)利用線上、線下渠道體驗(yàn)無縫購(gòu)物,運(yùn)用社交媒體表達(dá)自我,企業(yè)也在運(yùn)用多種技術(shù)手段,發(fā)揮數(shù)字化潛力,改善客戶聯(lián)系,促進(jìn)企業(yè)業(yè)務(wù)模式的轉(zhuǎn)型。Gartner認(rèn)為,數(shù)字化就是把人、事、物和商業(yè)聯(lián)系起來,建立新的商業(yè)模式。未來的企業(yè)都將是IT企業(yè),IT將從后臺(tái)走向前臺(tái),從ERP、CRM等內(nèi)部流程優(yōu)化為主的業(yè)務(wù),逐步轉(zhuǎn)向內(nèi)外兼修的模式,從而實(shí)現(xiàn)商業(yè)創(chuàng)新。這一變化要求IT架構(gòu)更加靈活的與上下游企業(yè)協(xié)作,更加快速的響應(yīng)客戶的個(gè)性化需求,更加彈性的應(yīng)對(duì)無時(shí)不在的客戶請(qǐng)求并提供良好的客戶體驗(yàn),同時(shí)云計(jì)算、大數(shù)據(jù)等技術(shù)的出現(xiàn)也為上述改變提供了新的技術(shù)選擇,我們正面臨B/S多層架構(gòu)出現(xiàn)后新的一次架構(gòu)升級(jí),而微服務(wù)架構(gòu)就在這個(gè)架構(gòu)升級(jí)過程中應(yīng)運(yùn)而生。
分而治之的哲學(xué)是微服務(wù)的理論基礎(chǔ)
把大的問題分解為容易解決的小問題,找到小問題的解決辦法,再來解決大問題,就是分而治之的哲學(xué)。正如萬事萬物由分子、原子組成一樣,軟件也可以分解為基本單元,以這樣的基本單元進(jìn)行開發(fā)、測(cè)試、維護(hù),是解決大規(guī)模系統(tǒng)建設(shè)的思路。分而治之首先要解決如何分的問題,企業(yè)軟件的分法應(yīng)該是以業(yè)務(wù)驅(qū)動(dòng)的,而不是技術(shù)驅(qū)動(dòng)的,也就是分解為獨(dú)立的業(yè)務(wù)邏輯,而這樣的不可再分的業(yè)務(wù)邏輯就是微服務(wù)。
凡事有一利必有一弊,細(xì)分為微服務(wù)后,勢(shì)必帶來部署、測(cè)試、信息集成難度的提高,分而治之除了“分”之外,還需要“治”。傳統(tǒng)恐龍型ERP是一個(gè)面向組織的軟件,完備、復(fù)雜、響應(yīng)變化慢,適合業(yè)務(wù)穩(wěn)定的情況,而數(shù)字化時(shí)代客戶個(gè)性化的要求讓我們從這種面向組織的軟件,逐漸演變?yōu)槊嫦騻€(gè)體的軟件。例如從前的EHR軟件是為人力資源部門服務(wù)的,整體開發(fā)、整體實(shí)施,而現(xiàn)在我們會(huì)從個(gè)體的角度規(guī)劃軟件,可以先從招聘專員開始做一個(gè)面試管理的流程,逐步推出新的流程,完善現(xiàn)有的流程。這些面向個(gè)體的流程就是微應(yīng)用,企業(yè)應(yīng)用將由無數(shù)個(gè)微應(yīng)用組成。微服務(wù)則是一個(gè)技術(shù)概念,能更好解決微應(yīng)用的技術(shù)實(shí)現(xiàn)問題,是一個(gè)事物的不同側(cè)面,所謂“橫看成嶺側(cè)成峰,遠(yuǎn)近高低各不同”,微服務(wù)和微應(yīng)用是事物的一體兩面。正因?yàn)槲⒎?wù)實(shí)際就是一個(gè)業(yè)務(wù)邏輯,因此做好微服務(wù)需要從微應(yīng)用的維度考慮,將分解開的邏輯形成一個(gè)整體,要從多渠道接入、客戶體驗(yàn)、數(shù)據(jù)管理、應(yīng)用交付、運(yùn)維全方位的視角考慮,這就是分而治之中實(shí)現(xiàn)“治”的體驗(yàn),也是微服務(wù)架構(gòu)需要解決的問題。
站在SOA的肩膀上踐行微服務(wù)
微服務(wù)是一個(gè)新概念,但這絕不是一個(gè)全新架構(gòu),更不是一個(gè)包治百病的架構(gòu)。由于有服務(wù)二字,很容易讓人聯(lián)想到面向服務(wù)架構(gòu)(SOA),其實(shí)微服務(wù)架構(gòu)屬于應(yīng)用技術(shù)架構(gòu),和以B/S 為代表的三層架構(gòu)相對(duì)應(yīng),強(qiáng)調(diào)將巨石型應(yīng)用拆分為由微服務(wù)組成的應(yīng)用,在數(shù)據(jù)上也視情況從集中的存儲(chǔ)拆解為更小的存儲(chǔ)單元。而SOA屬于企業(yè)架構(gòu)的范疇,從企業(yè)架構(gòu)出發(fā)把業(yè)務(wù)分解為不同領(lǐng)域的服務(wù),不同物理系統(tǒng)提供不同服務(wù),注重系統(tǒng)之間通過服務(wù)互聯(lián)互通的規(guī)范,對(duì)服務(wù)如何實(shí)現(xiàn)并不關(guān)注。因此,面向服務(wù)架構(gòu)的服務(wù)應(yīng)該是一個(gè)業(yè)務(wù)意義的服務(wù),而微服務(wù)是系統(tǒng)中的技術(shù)服務(wù),更關(guān)注服務(wù)的實(shí)現(xiàn),雖然提供了業(yè)務(wù)意義的服務(wù),但是不能混為一談。微服務(wù)使用也不是無限度的,事實(shí)上由于數(shù)據(jù)一致性等問題的限制,不能無限度拆分微服務(wù),可以把微服務(wù)分為系統(tǒng)對(duì)外提供的遠(yuǎn)程服務(wù)、系統(tǒng)內(nèi)部的遠(yuǎn)程服務(wù)和系統(tǒng)內(nèi)部的本地服務(wù),顯式聲明、明確職責(zé)。事實(shí)上,在企業(yè)架構(gòu)上使用SOA支撐業(yè)務(wù),而在應(yīng)用技術(shù)架構(gòu)上使用微服務(wù)架構(gòu),是一個(gè)合適的選擇。
黃柳青博士是我和黃勇共同的導(dǎo)師,他在2004年所著《軟件的涅槃》一書中指出:“互聯(lián)網(wǎng)時(shí)代的企業(yè)應(yīng)用定義,正發(fā)生革命性的變化… 橫向的部門互動(dòng)、實(shí)時(shí)的企業(yè)間互動(dòng)、多樣的交互渠道、靈活的業(yè)務(wù)規(guī)則,使得原有意義上的獨(dú)立應(yīng)用不復(fù)存在… 對(duì)軟件設(shè)計(jì)者來說,能直觀地分割,并具有最小內(nèi)部耦合的軟件結(jié)構(gòu)是簡(jiǎn)約之美… 美的軟件是軟件企業(yè)與軟件開發(fā)者的終極目標(biāo)”,那時(shí)候他把這種全新的軟件生產(chǎn)模式稱為“面向構(gòu)件”?;仡^看來,微服務(wù)正是“面向構(gòu)件”在數(shù)字化時(shí)代的解讀,用微服務(wù)架構(gòu)實(shí)現(xiàn)軟件之美,加速企業(yè)數(shù)字化轉(zhuǎn)型。
聯(lián)系客服