Udi Dahan对于业务逻辑重用以及微服务方面的观点
今年的DDD Exchange大會(huì)在倫敦如期舉行,Udi Dahan在大會(huì)上的一場(chǎng)演講中從一種不同的角度對(duì)業(yè)務(wù)邏輯進(jìn)行了剖析。他表示:近三十年來(lái),重用已經(jīng)成為了一種口號(hào),它幾乎可以套用在系統(tǒng)開(kāi)發(fā)中的每一個(gè)環(huán)節(jié)上。但重用其實(shí)是一種砒霜,極少量的使用可以用于治療,而一旦過(guò)量就會(huì)致命。
\\Dahan是SOA與DDD方面的業(yè)界權(quán)威,他首先描述了重用思想的發(fā)展。當(dāng)面向?qū)ο笏枷腴_(kāi)始流行之時(shí),重用的概念在其中扮演了一個(gè)重要的角色,但在實(shí)際應(yīng)用中由于對(duì)象結(jié)構(gòu)層次的使用沒(méi)有得到良好的制約,導(dǎo)致出現(xiàn)了大量的緊耦合問(wèn)題。在那段時(shí)間之后的5至10年內(nèi),面向組件的設(shè)計(jì)開(kāi)始冒頭,它著重承諾了可重用組件的地位,但重用還是沒(méi)能成為拯救我們的靈丹妙藥。隨后在軟件設(shè)計(jì)中又出現(xiàn)了SOA與微服務(wù)技術(shù),它們都著重強(qiáng)調(diào)了重用的重要性。但經(jīng)過(guò)了這些年的經(jīng)驗(yàn)之后,Dahan拋出了這個(gè)疑問(wèn):如果重用從沒(méi)有真正地起到作用,又怎能期望它會(huì)在當(dāng)下創(chuàng)造奇跡呢?
\\將重用視為一種糟糕的主意,這種看法并不鮮見(jiàn)。Dahan在這里引用了Ted Neward的思想,后者在企業(yè)計(jì)算十大謬誤的基礎(chǔ)上又額外補(bǔ)充了一條:業(yè)務(wù)邏輯能夠、也應(yīng)該實(shí)現(xiàn)集中化。Dahan以一個(gè)簡(jiǎn)單的規(guī)則為例:某種名稱必須限制在40個(gè)字符之內(nèi)。那么應(yīng)當(dāng)在哪里強(qiáng)制實(shí)施這一規(guī)則呢?通常來(lái)說(shuō),我們一般會(huì)在UI、業(yè)務(wù)邏輯以及數(shù)據(jù)庫(kù)中實(shí)現(xiàn)這一規(guī)則,但由于實(shí)現(xiàn)規(guī)則的地方不止一處,一旦這條規(guī)則需要改變,問(wèn)題就出現(xiàn)了。Dahan曾經(jīng)看到過(guò)這樣一種解決方案,即通過(guò)元數(shù)據(jù)生成代碼,這意味著只需在一個(gè)地方改變這條規(guī)則,就能夠自動(dòng)重新生成修改后的代碼。但以他的經(jīng)驗(yàn)來(lái)看,這種做法多半不會(huì)成功。從根本上說(shuō),問(wèn)題不在于這條規(guī)則在多個(gè)地方實(shí)現(xiàn),而在于難以找到所有能夠改變這一規(guī)則的地方。Dahan提出了一種解決方案,他建議使用源代碼控制處理這一問(wèn)題。首先為這一規(guī)則創(chuàng)建一個(gè)issue,然后將所有用于處理這一規(guī)則的源代碼進(jìn)行一次整體提交,并將它與這個(gè)issue相關(guān)聯(lián)起來(lái)。如此一來(lái),一旦需要改變這一規(guī)則,很容易就能夠找到實(shí)現(xiàn)這一規(guī)則的所有代碼:
\\當(dāng)某條規(guī)則改變時(shí),就到源代碼控制系統(tǒng)中去找
\\軟件架構(gòu)并非一種簡(jiǎn)單的二維問(wèn)題,不可能通過(guò)一個(gè)簡(jiǎn)單的圖描述一個(gè)完整的架構(gòu)。Dahan引用了Philippe Kructhen所提出的4+1架構(gòu)視圖模型,Philippe認(rèn)為將整個(gè)架構(gòu)簡(jiǎn)化為一個(gè)單一的視圖是不可能的,必須將架構(gòu)的不同方面封裝在不同的視圖中,才能夠處理所有的復(fù)雜性。在Dahan看來(lái),微服務(wù)思想的一個(gè)問(wèn)題在于它試圖以同一種視圖表現(xiàn)所有環(huán)節(jié),開(kāi)發(fā)、邏輯、過(guò)程乃至硬件單元都被壓縮在一個(gè)單一視圖之內(nèi),他認(rèn)為這會(huì)使服務(wù)的約束顯得過(guò)于沉重。
\\Dahan認(rèn)為以下場(chǎng)景是比較適合使用微服務(wù)的:當(dāng)你需要測(cè)試新的某個(gè)業(yè)務(wù)用例,需要進(jìn)行快速開(kāi)發(fā),并且可以獨(dú)立地部署該方案的實(shí)現(xiàn)時(shí),此時(shí)就是使用微服務(wù)的良機(jī)。但他同時(shí)也提到,一旦證實(shí)了這一業(yè)務(wù)用例能夠正常運(yùn)作,對(duì)原始的實(shí)現(xiàn)進(jìn)行重寫(xiě)是十分重要的,而且必須事先征求業(yè)務(wù)人員的同意。
\\去年晚些時(shí)候,Dahan曾對(duì)微服務(wù)在企業(yè)中的應(yīng)用進(jìn)行了一次具有批判性的審視。
\\明年的DDD Exchange大會(huì)預(yù)計(jì)于2016年6月10日舉辦,現(xiàn)已開(kāi)放注冊(cè)。
\\查看英文原文:Udi Dahan on Reuse in Business Logic and Microservices
總結(jié)
以上是生活随笔為你收集整理的Udi Dahan对于业务逻辑重用以及微服务方面的观点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 孕晚期梦到坟墓是什么意思
- 下一篇: 梦到狗生小狗是胎梦吗