版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 TB級(jí)大數(shù)據(jù)應(yīng)用搭建實(shí)踐本文介紹的BigData APP基本目標(biāo)是支撐100,000+用戶(hù)、120億條數(shù)據(jù)、TB級(jí)存儲(chǔ)、秒級(jí)響應(yīng)。比起性能,更受用戶(hù)歡迎的功能在于支持不同機(jī)構(gòu)或業(yè)務(wù)條線發(fā)布數(shù)據(jù),支持不同崗位不同角色不同用戶(hù)按需訂閱,而這些絲毫不用技術(shù)人員介入。如上邏輯架構(gòu)圖,Oracle、GreenPlum、Teradata不同系列的數(shù)據(jù)庫(kù)產(chǎn)品(不同的計(jì)算區(qū))計(jì)算出來(lái)的各種指標(biāo),通過(guò)ETL技術(shù)把各種數(shù)據(jù)源源不斷地匯入公共訪問(wèn)區(qū),接著通過(guò)Redis、HBase和Kylin等時(shí)下流行的開(kāi)源技術(shù)實(shí)現(xiàn)兩級(jí)緩存以應(yīng)對(duì)海量的移動(dòng)用數(shù)訪問(wèn)。移動(dòng)端采用了HTML5技術(shù)屏蔽設(shè)備操作系統(tǒng)差異,同時(shí)VUE.js和
2、ECharts等技術(shù)實(shí)現(xiàn)了數(shù)據(jù)展現(xiàn)和自動(dòng)推送。通過(guò)參數(shù)化設(shè)計(jì)將業(yè)務(wù)運(yùn)營(yíng)從開(kāi)發(fā)中分離出來(lái),讓工程師更加關(guān)注如何支持好業(yè)務(wù)數(shù)據(jù)和用戶(hù)自然增長(zhǎng)。這種自我生長(zhǎng)的APP模式,就像一顆樹(shù)苗,依靠樹(shù)根從土壤(GreenPlum和Teradata構(gòu)成的計(jì)算區(qū))源源不斷地吸收養(yǎng)分,再通過(guò)樹(shù)干(公共訪問(wèn)區(qū))以及樹(shù)枝(各級(jí)Cache)生出樹(shù)葉(用戶(hù)在移動(dòng)APP端用數(shù)),通過(guò)這種架構(gòu)的孕育,樹(shù)苗長(zhǎng)成參天大樹(shù)不過(guò)是時(shí)間問(wèn)題。(注:樹(shù)型架構(gòu),出處參見(jiàn)高煥堂 Annpping Kao所著思考軟件,創(chuàng)新設(shè)計(jì)A段架構(gòu)師的思考技術(shù)第5頁(yè)“1.4軟件的復(fù)雜時(shí)本質(zhì)性的-架構(gòu)師從復(fù)雜設(shè)計(jì)出簡(jiǎn)單”)這個(gè)APP從什么時(shí)候開(kāi)始蘊(yùn)藏著如此巨大
3、的能量?1962年9月12日,肯尼迪發(fā)表了著名的月球演說(shuō)之后(/seh/ricetalk.htm),NASA硬著頭皮開(kāi)始登月,阿波羅1號(hào)竟然在地面就爆炸了,經(jīng)歷多次失敗,直到阿波羅8號(hào)首次完成了載人環(huán)行月球一周并返回地球之后,NASA才確信人類(lèi)登上月球只是時(shí)間問(wèn)題。很多人知道阿波羅11號(hào)登月成功,卻不知道在肯尼迪航天中心紀(jì)念的是阿波羅8號(hào),因?yàn)檫@個(gè)阿波羅8號(hào)是工程師所懷念的成功原型。是的,這幾個(gè)簡(jiǎn)單的界面就是Data APP的“阿波羅8號(hào)”,接下來(lái)重點(diǎn)介紹如何通過(guò)敏捷開(kāi)發(fā)打造出這個(gè)“阿波羅8號(hào)”。知易行難(2016年5月-2016年8月)把時(shí)間撥回到2016年5月-8月這段時(shí)間,在如此體量而又
4、優(yōu)越的企業(yè)平臺(tái),引入技術(shù)不是一蹴而就的事情,要完成一個(gè)從沒(méi)實(shí)踐過(guò)的應(yīng)用,通常分三步走:第一步,按圖索驥。大數(shù)據(jù)這條路上,一定要看每年發(fā)布的大數(shù)據(jù)藍(lán)圖(Big Data LandScape由Matt Turck首先于2012年提出,通過(guò)這張圖的更新,可以找到業(yè)界的技術(shù)投資潮流)。這張圖的使用訣竅,在于要透過(guò)復(fù)雜的表象按照大數(shù)據(jù)技術(shù)的抽象分類(lèi)(可參考)來(lái)尋找可能的技術(shù)方向。這個(gè)項(xiàng)目剛開(kāi)始的時(shí)候,我們想法很簡(jiǎn)單,采用H5技術(shù)屏蔽IOS和Android,用ECharts實(shí)現(xiàn)移動(dòng)端數(shù)據(jù)可視化,沿用數(shù)據(jù)平臺(tái)公共訪問(wèn)區(qū)已有的GreenPlum。第二步,按部就班。一項(xiàng)技術(shù)要成為企業(yè)的選擇,必須經(jīng)歷一系列的測(cè)試
5、,從功能到非功能,根據(jù)預(yù)先設(shè)定的指標(biāo)進(jìn)行匹配,找到最合適的。入選企業(yè)級(jí)技術(shù)產(chǎn)品目錄后,再逐步推廣,產(chǎn)生規(guī)模效應(yīng)。選好的技術(shù)不涉及商業(yè)產(chǎn)品,時(shí)間緊任務(wù)重,趕快出活才是硬道理。第三步,用戶(hù)至上。在應(yīng)用架構(gòu)、數(shù)據(jù)架構(gòu)和技術(shù)平臺(tái)幾個(gè)層級(jí)上,解決了共享問(wèn)題之后,要按照用戶(hù)體驗(yàn)組合這些組件服務(wù),在保證后臺(tái)功能相對(duì)穩(wěn)定的同時(shí),積極擁抱用戶(hù)在前端需求的快速變化。用戶(hù)體驗(yàn)組(移動(dòng)端用數(shù)需求負(fù)責(zé)人),多次走訪基層網(wǎng)點(diǎn)和分行部門(mén)及高層的管理人員,按照不同崗位提煉出了典型應(yīng)用場(chǎng)景(晨會(huì)、周會(huì)、經(jīng)營(yíng)分析會(huì)),形成了100多頁(yè)需求。邏輯推理加穩(wěn)步執(zhí)行,這頓想象中共襄盛舉的數(shù)據(jù)自助餐應(yīng)該水到渠成。經(jīng)過(guò)三個(gè)月的努力,按計(jì)劃到
6、了初始版本交付的時(shí)間。原計(jì)劃要交付分行三類(lèi)管理崗位和一個(gè)總行部門(mén)的功能,結(jié)果只交付了基層網(wǎng)點(diǎn)負(fù)責(zé)人的部分頁(yè)面。就拿首頁(yè)來(lái)說(shuō),在測(cè)試環(huán)境還好,上了生產(chǎn)之后,運(yùn)行了一周慘不忍睹,頁(yè)面要跑10來(lái)秒,數(shù)據(jù)對(duì)不上、缺數(shù)也是常有的事。更悲哀的是,付出艱辛努力經(jīng)歷了試運(yùn)行失敗的同志們,還要被“不就是推幾個(gè)數(shù)到手機(jī)上這么簡(jiǎn)單的事情”的質(zhì)疑所摧殘。一切印證了一句古話,大道至簡(jiǎn),知易行難!置之死地而后生(2016年9月)按照原有需求交付軟件,已經(jīng)不現(xiàn)實(shí)了。要解決問(wèn)題,得先看看到底發(fā)生了什么?負(fù)責(zé)需求的業(yè)務(wù)人員說(shuō):“我們?cè)O(shè)計(jì)了20幾個(gè)場(chǎng)景,需求寫(xiě)了幾百頁(yè),我們從來(lái)沒(méi)有這么認(rèn)真對(duì)待過(guò)需求”負(fù)責(zé)指導(dǎo)實(shí)施的架構(gòu)師說(shuō):“我
7、們選擇了最先進(jìn)最流行的技術(shù),實(shí)現(xiàn)了H5典型頁(yè)面和數(shù)據(jù)服務(wù),數(shù)據(jù)慢主要是因?yàn)椋ǚ凑莿e人,不是自己,列了一些)”負(fù)責(zé)實(shí)施任勞任怨一臉無(wú)辜地程序員說(shuō):“手機(jī)頁(yè)面需求大版本變更了3次,我們100多個(gè)頁(yè)面足足做了3次,我們沒(méi)日沒(méi)夜加班也就實(shí)現(xiàn)了總量60%的頁(yè)面功能,程序能部署上線已經(jīng)不錯(cuò)了如果沒(méi)有變更,或許會(huì)好一點(diǎn)?!眳⑴c項(xiàng)目的每個(gè)人說(shuō)的都沒(méi)有錯(cuò),可是結(jié)果不好,沒(méi)有人承擔(dān)責(zé)任,一定是整個(gè)團(tuán)隊(duì)都出了問(wèn)題。回顧雄心壯志開(kāi)啟移動(dòng)端開(kāi)發(fā)的初衷,在沒(méi)有公司資源輔助投入的情況下,我們作為甲方中的乙方,似乎把業(yè)務(wù)人員的口味調(diào)高了;隨著項(xiàng)目深入,業(yè)務(wù)人員對(duì)移動(dòng)端的認(rèn)知穩(wěn)步提升,三次大規(guī)模的需求變更就是業(yè)務(wù)人員進(jìn)步的實(shí)
8、證。其實(shí),大家都害怕移動(dòng)端不能一炮打響!然而,隨著時(shí)間的發(fā)展,每個(gè)人都熱情高漲的添磚加瓦,要啥給啥,只有技術(shù)人員為進(jìn)度所迫不斷降低對(duì)自己的要求(包括范圍和質(zhì)量),缺乏溝通也沒(méi)有實(shí)時(shí)的產(chǎn)出物可以驗(yàn)證,而交付和期望的差距已經(jīng)發(fā)展到不可收拾的境地。到了約定交付的時(shí)候,發(fā)現(xiàn)業(yè)務(wù)用戶(hù)的情感在瞬間熄滅,領(lǐng)導(dǎo)層的許諾也隨之崩塌,這也是許多瀑布型項(xiàng)目失敗的原因。我們?nèi)绾尾拍芘まD(zhuǎn)這個(gè)局面?想起這三年關(guān)注的數(shù)據(jù)敏捷開(kāi)發(fā),干脆把死馬當(dāng)活馬醫(yī),于是這次危機(jī)就成了我們敏捷開(kāi)發(fā)實(shí)踐的機(jī)會(huì)。于是,我們就按敏捷的教科書(shū)上說(shuō)的,第一要把需求變成用戶(hù)故事,第二要把故事按輕重緩急排個(gè)序,實(shí)施團(tuán)隊(duì)在此基礎(chǔ)上構(gòu)建軟件的最小可運(yùn)行集。第
9、一天,我們就依葫蘆畫(huà)瓢把原來(lái)的Word需求文檔,通過(guò)CV大法整理成教科書(shū)中要求的用戶(hù)故事的樣子作為XX(具體人名),為了XX目的,需要提供XX功能。整理了不到十個(gè)用戶(hù)故事,小伙伴們開(kāi)始懷疑這樣做的意義!敏捷的本意就是關(guān)注目標(biāo),避免過(guò)于浪費(fèi)的過(guò)程。把內(nèi)容寫(xiě)在便簽紙上,貼在墻上,標(biāo)上約束,足夠提醒程序員要做什么。最關(guān)鍵的是,要讓技術(shù)人員和業(yè)務(wù)人員通過(guò)直接溝通在故事的驗(yàn)收標(biāo)準(zhǔn)(測(cè)試用例)達(dá)成一致。看到五顏六色的便簽圖片了嗎,黃色或綠色便簽用來(lái)寫(xiě)用戶(hù)故事,橙色用來(lái)寫(xiě)約束,紅色用來(lái)標(biāo)問(wèn)題或是技術(shù)債。事情做完或問(wèn)題解決后,便簽就會(huì)從墻上摘下來(lái)放進(jìn)盒子里,隨著時(shí)間的推移,放進(jìn)盒子里的便簽越來(lái)越多,團(tuán)隊(duì)的自信
10、心就這么一點(diǎn)一點(diǎn)的找回來(lái),大家慢慢的忘了什么事情做不成,而只去想“能做成什么”。還有一個(gè)事情要說(shuō)一下,關(guān)于用戶(hù)故事的排序問(wèn)題,如果直接詢(xún)問(wèn)業(yè)務(wù)人員,很難得到確定的回答。那個(gè)時(shí)候已經(jīng)九月初離第二次試運(yùn)行上線只有一個(gè)月了,如果每一天都當(dāng)作最后一天來(lái)過(guò),用戶(hù)需要的是什么,我們又能做出什么回應(yīng)?運(yùn)氣很好,恰恰是這兩個(gè)問(wèn)題,把我們和用戶(hù)拉到了一起。畢加索抽象公牛的手稿,啟發(fā)了我們對(duì)抽象的思考。按不同崗位的工作場(chǎng)景編寫(xiě)的需求,本質(zhì)的訴求在于讓業(yè)務(wù)人員通過(guò)手機(jī)移動(dòng)端隨時(shí)可以看到關(guān)鍵指標(biāo),而不在于業(yè)務(wù)場(chǎng)景和頁(yè)面需求的多少。有了抽象思維,整個(gè)小組達(dá)成了共識(shí),與其“按期交付100個(gè)不可運(yùn)行的頁(yè)面“,不如“只交付最
11、有用且保證質(zhì)量的5個(gè)頁(yè)面”。我們開(kāi)始意識(shí)到,通過(guò)抽象思維,可以總結(jié)頁(yè)面模式,不需要那么多頁(yè)面和場(chǎng)景也能達(dá)到目的??墒?,什么樣的頁(yè)面模式才能達(dá)到我們的目的?我們?nèi)绾握业健鞍⒉_8號(hào)”?我們的運(yùn)氣很好,珅哥用VUE改出的第一套頁(yè)面模板(首頁(yè)、指標(biāo)趨勢(shì)分析、機(jī)構(gòu)信息和結(jié)構(gòu)解析四個(gè)頁(yè)面),就得到了用戶(hù)和其他開(kāi)發(fā)人員的認(rèn)可,再多的指標(biāo)再多的場(chǎng)景,只要把這個(gè)四個(gè)頁(yè)面的性能調(diào)到1秒以?xún)?nèi),任何指標(biāo)分分鐘實(shí)施完。為了測(cè)試用戶(hù)體驗(yàn),我們甚至把業(yè)務(wù)參數(shù)化設(shè)計(jì)也放到一邊,改用json配置先看看哪些業(yè)務(wù)參數(shù)易變。是不是很神奇?以為我會(huì)說(shuō)得很曲折,必須承認(rèn)就是運(yùn)氣!天下武功,唯快不破(2016年10月-2016年11月)
12、教科書(shū)上說(shuō),要擁抱變化!實(shí)踐告訴我們,很多時(shí)候,人不是害怕改變,而是害怕被改變,想著主動(dòng)改變或許就不會(huì)那么害怕改變,這需要勇氣。當(dāng)需求變成了用戶(hù)故事,我們的設(shè)計(jì)開(kāi)發(fā)也變成了”測(cè)試驅(qū)動(dòng)開(kāi)發(fā)TDD+持續(xù)集成CI“??陀^的說(shuō),不是每個(gè)人都馬上適應(yīng)TDD,更苛刻地說(shuō),大部分人無(wú)法適應(yīng)TDD思維。把TDD上升到精神層面,可能挑戰(zhàn)的是人的惰性,堅(jiān)持下來(lái)會(huì)激發(fā)人的激情,做不好就會(huì)全軍覆沒(méi)。作為可以借鑒的經(jīng)驗(yàn),我們把TDD先下降到戰(zhàn)術(shù)層面,把TDD當(dāng)作帶測(cè)試案例的需求文檔,把TDD當(dāng)作設(shè)計(jì)思路的形成過(guò)程,那就說(shuō)TDD對(duì)工程師的好處在于可以省略掉需求分析和設(shè)計(jì)文檔(還好沒(méi)有正式立項(xiàng),要不會(huì)有人追殺我的)。TDD
13、真是敏捷開(kāi)發(fā)的重要一環(huán),沒(méi)有有效的測(cè)試程序,識(shí)別技術(shù)債也是空想,重構(gòu)會(huì)成為空中樓閣,CI就如同行尸走肉般無(wú)用。TDD是敏捷轉(zhuǎn)型技術(shù)部分的底線,沒(méi)有退讓的余地。所以,我們先用免文檔誘導(dǎo),再靠行政命令固化,最后曉之以情動(dòng)之以理,把所以同志帶到TDD的道路上。結(jié)果,意想不到的是最后轉(zhuǎn)型的人居然是團(tuán)隊(duì)里最資深的成員(此處略去稱(chēng)謂,簡(jiǎn)稱(chēng)“老大哥”)。還好,逮到了一次機(jī)會(huì)。老大哥每個(gè)周末都辛勤地用CV大法(拷貝+粘貼)應(yīng)付指標(biāo)口徑的變更(變更來(lái)自數(shù)據(jù)分析師的修正),在我看來(lái),這是用戰(zhàn)術(shù)上的勤奮掩蓋戰(zhàn)略上的懶惰。慢慢的,大哥頂不住了,找我增援。我以“2 Piazzas”法則(敏捷重要法則之一,團(tuán)隊(duì)不宜太大,
14、兩個(gè)披薩夠吃為宜,當(dāng)然,我們團(tuán)隊(duì)里最壯的哥們經(jīng)常挑戰(zhàn)這個(gè)法則,因?yàn)樗粋€(gè)人就能吃?xún)蒔izza)為由拒絕了。同時(shí),找了和大哥最親密的小伙伴小鋒,一起研究代碼,寫(xiě)了幾個(gè)TDD的范例,同時(shí)直接重構(gòu)出幾個(gè)函數(shù)。當(dāng)江湖上最后一位大哥擁抱了TDD,通往快速迭代的道路上就再也沒(méi)有障礙了。領(lǐng)導(dǎo)特別關(guān)注的項(xiàng)目,壓力雖然大,也有很多好處,我們爭(zhēng)取到了每周上一次線的頻繁犯錯(cuò)機(jī)會(huì)。根據(jù)用戶(hù)故事和技術(shù)債,我們擬定了一周上功能一周調(diào)性能的策略。敏捷響應(yīng)業(yè)務(wù)的速度,讓業(yè)務(wù)人員都驚呆了,11月19日版本封版前一天,試點(diǎn)分行又提出了新的崗位和指標(biāo)變更需求,結(jié)果我們用了半天就完成了,并順利封版上線,從側(cè)翼支持了江西行新一代三期試
15、點(diǎn)。時(shí)間就這樣,一周一周一月一月得過(guò)去了,我們的APP在功能上收獲了“用戶(hù)直接訂閱指標(biāo)”、“后臺(tái)配置指標(biāo)全集”、“不同指標(biāo)適應(yīng)不同維度”、“按用戶(hù)要求設(shè)立警戒線”等等大塊功能,為了滿(mǎn)足毫秒級(jí)響應(yīng)的用戶(hù)體驗(yàn),也慢慢地集成了Redis、Mondrian、Kylin等多種技術(shù),完成了手機(jī)APPOLAP的多級(jí)緩存,完成了大規(guī)模用戶(hù)推廣的準(zhǔn)備工作。天下武功,唯快不破。在這個(gè)快速迭代的過(guò)程中,我們知道,成功的秘訣在于快?!翱臁辈皇峭倒p料,而是緊盯目標(biāo),只要能達(dá)到效果就上,絕不浪費(fèi)時(shí)間猶豫不決,每一次的故事,我們只在乎,APP是不是能更快的支撐業(yè)務(wù)變更、是不是能運(yùn)行得更快、是不是能讓運(yùn)維更方便。無(wú)招勝有招不得不承認(rèn),這次敏捷轉(zhuǎn)型有些偶然性,沒(méi)有多少掙扎(前面其實(shí)有三個(gè)月試了個(gè)大錯(cuò)死不承認(rèn)),我們就找到了“阿波羅八號(hào)”原型。絕境中,傳統(tǒng)開(kāi)發(fā)到敏捷開(kāi)發(fā)的轉(zhuǎn)型。若是將來(lái)運(yùn)氣沒(méi)有那么好,咋辦?是的,如果開(kāi)發(fā)不能讓業(yè)務(wù)通過(guò)運(yùn)營(yíng)進(jìn)行發(fā)展,那么開(kāi)發(fā)就是失敗的;如果開(kāi)發(fā)次次都只靠拍腦袋想解決方案,那翻船的可能性也會(huì)大增。Matt說(shuō):“BigData success is not about implementing on
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024網(wǎng)絡(luò)安全防護(hù)技術(shù)合同
- 二零二五年度綠色環(huán)保安置房交易合同范本3篇
- 2025年度能源項(xiàng)目居間合作合同范本3篇
- 2025年房屋交換與回遷協(xié)議3篇
- 2024版中外合資企業(yè)運(yùn)營(yíng)管理合同書(shū)版B版
- 2024版政維護(hù)合同范本
- 中信證券2024年證券交易服務(wù)協(xié)議版A版
- 二零二五年度機(jī)場(chǎng)擴(kuò)建項(xiàng)目吊車(chē)租賃合同及吊機(jī)操作資質(zhì)要求3篇
- 事業(yè)單位2024版臨時(shí)聘用人員協(xié)議樣本版B版
- 二零二五年度專(zhuān)業(yè)攝影棚場(chǎng)地租賃服務(wù)協(xié)議2篇
- 2024至2030年中國(guó)液體罐式集裝箱數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 四川省2024年中考數(shù)學(xué)試卷十七套合卷【附答案】
- 家用電子產(chǎn)品維修工(中級(jí))職業(yè)技能鑒定考試題庫(kù)(含答案)
- 無(wú)脊椎動(dòng)物課件-2024-2025學(xué)年人教版生物七年級(jí)上冊(cè)
- 2024年銀發(fā)健康經(jīng)濟(jì)趨勢(shì)與展望報(bào)告:新老人、新需求、新生態(tài)-AgeClub
- 2024年江西省“振興杯”家務(wù)服務(wù)員競(jìng)賽考試題庫(kù)(含答案)
- 吉林省2024年中考物理試題(含答案)
- 長(zhǎng)鏈氯化石蠟
- 小學(xué)六年級(jí)數(shù)學(xué)解方程計(jì)算題
- 春節(jié)英語(yǔ)介紹SpringFestival(課件)新思維小學(xué)英語(yǔ)5A
- 進(jìn)度控制流程圖
評(píng)論
0/150
提交評(píng)論