近期在做爬蟲相關(guān)業(yè)務(wù),初來團(tuán)隊人很少,架構(gòu)也比較隨便,我本人對爬蟲也不曾接觸過,于是想整理一篇爬蟲的架構(gòu),一是我這半吊子架構(gòu)師的本職工作,二是讓自己深入理解這塊業(yè)務(wù)。
現(xiàn)在總結(jié)下,好的架構(gòu)設(shè)計需要具有那些特點:
1 ?完整
爬蟲架構(gòu)前后做了三版,現(xiàn)在回想期最初的架構(gòu),禁不住想笑,剛來團(tuán)隊3天就做了架構(gòu)圖,說給賣白菜的大爺都不信這事兒能靠譜,當(dāng)時自己左問問、又問問身邊的同事,就這么自信的,以為對整個業(yè)務(wù)和流程已經(jīng)了然于胸,進(jìn)而想當(dāng)然的提出當(dāng)前架構(gòu)的問題和解決方案。
現(xiàn)在回想 第一版的主要原因是 在準(zhǔn)備不充足,對現(xiàn)有系統(tǒng)和業(yè)務(wù)了解不充分的前提下做的,當(dāng)然做的架構(gòu)是不準(zhǔn)確的,如同盲人摸象
2 標(biāo)準(zhǔn)的、(易懂的、簡單的,是無壁壘)
周會上老板讓我畫下爬蟲初版架構(gòu),在我唯唯諾諾的亂涂亂畫下,老板投來茫然的眼神,那一刻我意識到,第一版我自己都沒做到爛熟于胸,以至于無法順暢輸出自己本以為能說清的“架構(gòu)”,另外初版還暴露一個的問題就是架構(gòu)圖需要專業(yè)的UML圖示,而不是自己西拼八湊弄來的,不禁讓我想起8年前讀UML用戶指南,里面有一句意思是“UML的作用是讓架構(gòu)的分享和交流標(biāo)準(zhǔn)化”,當(dāng)你用大家都懂的一類語言去交流自然不存在問題。會后我決定對架構(gòu)的再設(shè)計進(jìn)行兩個子工作:1完整的了解爬蟲業(yè)務(wù)流程,2輸出UML的序列圖和部署圖。感謝同事“小胖”在業(yè)務(wù)流程圖上給予的幫助。
在標(biāo)準(zhǔn)化之后,隨之而來的就是易懂的、簡單的,是無壁壘,在周末給所有人分享爬蟲目標(biāo)架構(gòu)的會上,我們的產(chǎn)品“娜姐,阿清”,會后表示能懂,因為技術(shù)是產(chǎn)品的實現(xiàn),通過標(biāo)準(zhǔn)化的UML圖,那么產(chǎn)品和技術(shù)溝通就順其自然了。
3 目標(biāo)明確的、準(zhǔn)確的、易維護(hù)的,易擴(kuò)展的。
當(dāng)我做完第二版,我開始飄飄然、洋洋自得,準(zhǔn)備Show這版“架構(gòu)”,我先找到同事“小胖”繼續(xù)對第二遍架構(gòu)進(jìn)行Review,小胖說了一句話,更復(fù)雜了,我問道哪里復(fù)雜了,慢慢的交流后我發(fā)現(xiàn),小胖內(nèi)心有自己的對新架構(gòu)的理解,小胖比我要更加熟悉爬蟲的代碼,當(dāng)然一個牛叉的技術(shù)肯定對所做的產(chǎn)品有自己的架構(gòu)認(rèn)識,我們聊了很久,相互融合想法,最后輸出第三版,此時回頭看第三版和第二版的差別,我發(fā)現(xiàn)第三版架構(gòu)目標(biāo)更明確:①可以明顯看出要解決問題的抽象“完整的抽象爬蟲三層,1層是服務(wù)編排,2層是異步爬取任務(wù),3層是數(shù)據(jù)服務(wù)模型”,②從順序圖上可以明顯區(qū)分爬取任務(wù)的同步階段和異步階段。
架構(gòu)更準(zhǔn)確:架構(gòu)圖通過分享,大家反饋是完整的,準(zhǔn)確的描述了業(yè)務(wù),我們的QA同學(xué)“輝哥”從起初的疑問到后來完全認(rèn)同,我能感受到他對這份架構(gòu)的準(zhǔn)確性的肯定。
易維護(hù)的,易擴(kuò)展的:任何架構(gòu)都必須談易維護(hù),易擴(kuò)展,就好像 談明星必須八卦一樣,架構(gòu)的除為了明確團(tuán)隊目標(biāo),傳達(dá)分享以外,它的易維護(hù)、易擴(kuò)展,其實是從成本考慮的,任何項目如何去做才能減少成本,都是架構(gòu)師和項目經(jīng)理去費盡心思去思考的問題。
另外,架構(gòu)不是一蹴而就的,不能一刀切,針對第三版架構(gòu)老板“波哥”給出簡化版的建議,鑒于目前基礎(chǔ)設(shè)施”Mesos+Marthon、配置平臺“等尚不完善,我們可以分步驟。
最后想說,架構(gòu)不是一張紙,你必須盤活它,分享它,這就是落地的問題,今天我召集了爬蟲團(tuán)隊所有人,會前我提到“對于爬蟲架構(gòu)可能每個人都有自己的理解,但是我們不能人人一個想法,或者人人都沒想法,目標(biāo)必須統(tǒng)一”,會中和會后通過伙伴們的反饋,我發(fā)現(xiàn)這個會開對了。