不知道大家是否知道什么是SOA,小婧是經(jīng)常在一些產(chǎn)品宣傳上看到這個(gè)詞寞酿,號(hào)稱(chēng)支持SOA可擴(kuò)展的柔性建構(gòu)體系家夺。
很多人說(shuō),這明顯是技術(shù)的部分啊熟嫩,什么平臺(tái)架構(gòu)秦踪,什么技術(shù)路線,應(yīng)該是開(kāi)發(fā)和SA應(yīng)該去關(guān)心的事情掸茅,和我們做業(yè)務(wù)做產(chǎn)品的有什么關(guān)系呢椅邓?
我以前也是這種想法,所以雖然經(jīng)常聽(tīng)到昧狮,但是一直沒(méi)有關(guān)心過(guò)研究過(guò)景馁。
最近剛好有個(gè)機(jī)會(huì)學(xué)習(xí)研究了一把,要是再有人說(shuō)SOA與業(yè)務(wù)無(wú)關(guān)逗鸣,我覺(jué)得可以關(guān)小黑屋好好反省下了合住。
言歸正傳绰精,我來(lái)和大家講一下我對(duì)SOA的理解,以及作為業(yè)務(wù)的角色應(yīng)該為產(chǎn)品實(shí)現(xiàn)SOA做什么透葛。
什么是SOA笨使?
Service-Oriented Architecture,SOA是一種軟件架構(gòu)僚害,它的主要組成部分有:
- Application Frontend應(yīng)用前端
- Service服務(wù)
- Service Repository服務(wù)庫(kù)
- Service Bus服務(wù)總線
很抽象是不是硫椰?我來(lái)打個(gè)比方。
你收到消息你家老祖宗在美國(guó)萨蚕、瑞士靶草、澳大利亞的本地銀行都留了遺產(chǎn),你想知道這事是不是真的岳遥,如果是真的有多少錢(qián)奕翔。
常規(guī)的做法是,你分別聯(lián)系(打電話或者發(fā)郵件)當(dāng)?shù)氐暮脦讉€(gè)機(jī)構(gòu)浩蓉,或者花錢(qián)請(qǐng)當(dāng)?shù)氐恼{(diào)查機(jī)構(gòu)幫你查派继。這里面面臨幾個(gè)問(wèn)題:語(yǔ)言不通,時(shí)差妻往,數(shù)據(jù)的準(zhǔn)確定性互艾,代價(jià)等等。
想想就覺(jué)得很麻煩讯泣。
如果有了SOA就不一樣了纫普。
你將你想要查詢(xún)的內(nèi)容輸入到系統(tǒng)前臺(tái)界面中,SOA的服務(wù)總線就自動(dòng)將中文翻譯成各個(gè)目的地國(guó)家語(yǔ)言好渠,并且將你想要查看的內(nèi)容告知各個(gè)機(jī)構(gòu)昨稼,然后計(jì)算、返回結(jié)果拳锚,再翻譯成中文告訴你假栓。
SOA有什么用?
我們順著上面的例子說(shuō)霍掺。
首先匾荆,不論你的系統(tǒng)使用什么語(yǔ)言、什么架構(gòu)什么協(xié)議杆烁,對(duì)方的系統(tǒng)使用什么語(yǔ)言牙丽、什么架構(gòu)什么協(xié)議,只要你將你的需求用你的語(yǔ)言表述出來(lái)兔魂,SOA自動(dòng)"翻譯"烤芦。
在這個(gè)過(guò)程中,你不用擔(dān)心你的信息被竊賊攔截析校,因?yàn)槿思易詭?strong>安全體系构罗。
查著查著你發(fā)現(xiàn)在遺產(chǎn)其實(shí)在日本铜涉,但是日本沒(méi)有接入進(jìn)來(lái),可以很方便的把它接入進(jìn)來(lái)遂唧,而不用去考慮日語(yǔ)與中文的翻譯問(wèn)題芙代。
回到我們的現(xiàn)實(shí)世界,現(xiàn)在任何的應(yīng)用的軟件都不是孤立存在的盖彭,我們會(huì)希望提升數(shù)據(jù)的利用率链蕊,讓數(shù)據(jù)流動(dòng)起來(lái)用起來(lái)。
在這個(gè)互聯(lián)的世界谬泌,SOA就顯得更加的重要了。
業(yè)務(wù)人員能為SOA做什么逻谦?
前面鋪墊了這么多掌实,小婧今天想要講的重點(diǎn)到了。
不論你家產(chǎn)品是從0到1邦马,從1到N贱鼻,從-1到1,如果要想實(shí)施SOA滋将,就面臨一個(gè)問(wèn)題:建模邻悬。
說(shuō)通俗了,就是你怎么知道你要提供什么服務(wù)Service給別人随闽,別人要什么呢父丰?
有一個(gè)分析和設(shè)計(jì)SOA系統(tǒng)的模型叫做SOMA,它就是用來(lái)分析建模的掘宪。
它分為三個(gè)步驟蛾扇,其中業(yè)務(wù)人員要全程參與,主要負(fù)責(zé)前1.5個(gè)步驟魏滚。
第一步:定義
業(yè)務(wù)人員需要整理產(chǎn)品作為一個(gè)黑箱分析可能與哪些系統(tǒng)產(chǎn)生關(guān)聯(lián)關(guān)系镀首。
這里面涉及到產(chǎn)品的戰(zhàn)略及定位。
很明顯這是業(yè)務(wù)人員需要關(guān)注的內(nèi)容鼠次,特別是業(yè)務(wù)人員對(duì)未來(lái)的設(shè)想和發(fā)展的路線規(guī)劃更哄。
比如我們想要完成一個(gè)用戶(hù)場(chǎng)景use case,其中會(huì)涉及到三個(gè)系統(tǒng)腥寇,那么這三個(gè)系統(tǒng)分別對(duì)應(yīng)流程的哪些活動(dòng)成翩?
這些都是我們業(yè)務(wù)人員需要去分析的。
第二步:描述
我們定義好了我們可以提供的和我們需要的花颗,那么接下來(lái)就是要進(jìn)行進(jìn)一步的描述了捕传。
這部分工作的前半部分是需要業(yè)務(wù)人員主導(dǎo)的,后半部分是需要SA或者開(kāi)發(fā)人員主導(dǎo)的扩劝。
我們重點(diǎn)說(shuō)一下前半部分庸论。
在第一步中其實(shí)我們就是定義了有或者需要哪些服務(wù)职辅,那么:
這些服務(wù)之間是什么關(guān)系呢?
他們處于業(yè)務(wù)流程的什么位置上呢聂示?
涉及到哪些功能和數(shù)據(jù)呢域携?有什么約束和規(guī)則限制嗎?
有什么非功能性的需求嗎鱼喉?
這些都是業(yè)務(wù)人員需要去整理清楚的秀鞭。
第二步的后半部分就是開(kāi)發(fā)人員要去主導(dǎo)的,比如確定具體的服務(wù)組件扛禽、技術(shù)組件等锋边。
當(dāng)然業(yè)務(wù)人員也要參與其中。
第三步:實(shí)現(xiàn)了
因?yàn)镾OA其實(shí)并不是一個(gè)小工程编曼,特別是對(duì)已有產(chǎn)品想要實(shí)現(xiàn)SOA可能會(huì)面臨大量的代碼重構(gòu)豆巨。
所以會(huì)建議先找影響不是很大,對(duì)SOA依賴(lài)比較重掐场,業(yè)務(wù)價(jià)值大的先進(jìn)行試點(diǎn)實(shí)施往扔。
在不斷的總結(jié)和積累的基礎(chǔ)上逐步實(shí)現(xiàn)整個(gè)產(chǎn)品的SOA。
從上面的整個(gè)過(guò)程來(lái)看熊户,SOA是要以業(yè)務(wù)為驅(qū)動(dòng)的萍膛。
業(yè)務(wù)人員當(dāng)然應(yīng)該了解并參與SOA的建設(shè)中了。
寫(xiě)在最后:
而我覺(jué)得在整個(gè)產(chǎn)品的生命周期中嚷堡,就應(yīng)該讓專(zhuān)業(yè)的人去做專(zhuān)業(yè)的事情蝗罗,比如業(yè)務(wù)人員就應(yīng)該把業(yè)務(wù)分析清楚,整理清楚蝌戒,技術(shù)人員專(zhuān)攻技術(shù)難題和技術(shù)實(shí)現(xiàn)绿饵,而作為技術(shù)人員不應(yīng)該去插手業(yè)務(wù)的決策(特別是這個(gè)場(chǎng)景到底是否存在),而業(yè)務(wù)人員也不要對(duì)技術(shù)人員的工作指手畫(huà)腳瓶颠。
大家交流提建議是贊成的拟赊,但是不要太多的去干涉專(zhuān)業(yè)人員的判斷和工作。
所以粹淋,不要再認(rèn)為SOA是純技術(shù)的事情吸祟,作為業(yè)務(wù)人員也應(yīng)該參與并主導(dǎo)相關(guān)步驟,實(shí)現(xiàn)真正的SOA桃移。
嗯屋匕,歡迎技術(shù)人員前來(lái)拍磚!
小婧是一名行走在產(chǎn)品路上的資深業(yè)務(wù)分析師(BA)借杰,如果想與我同行过吻,就請(qǐng)關(guān)注我吧!