1.1 艱難的決定 -- 系統(tǒng)重構(gòu)
1.1.1 外貿(mào)B2C平臺(tái)野蠻生長(zhǎng)期
5年前,筆者剛?cè)肼毈F(xiàn)在的公司,進(jìn)入后主導(dǎo)負(fù)責(zé)一個(gè)B2C外貿(mào)電商網(wǎng)站,時(shí)值外貿(mào)電商野蠻生長(zhǎng)期,基本隨便上一個(gè)小型B2C網(wǎng)站鼓搗推廣幾個(gè)月便可盈利,其中最大的一個(gè)站點(diǎn)后來(lái)達(dá)到單日最高13W美金,日PV 400W,當(dāng)時(shí)整個(gè)項(xiàng)目團(tuán)隊(duì)每天沉浸于高額銷售額的喜悅下,所謂一白遮百丑,由于銷售額的高企,潛藏于背后的海量問(wèn)題一直未能爆發(fā)
1.1.2 業(yè)務(wù)和技術(shù)矛盾爆發(fā)期
14年10月,平臺(tái)沖向了最高銷售額后,情況開始急轉(zhuǎn)直下,首先是銷售額由于友商競(jìng)爭(zhēng)及一些其他問(wèn)題開始腰斬,其次,由于平臺(tái)技術(shù)架構(gòu)的不合理網(wǎng)站開始頻繁崩潰,業(yè)務(wù)和技術(shù)沖突開發(fā)爆發(fā),筆者作為技術(shù),對(duì)業(yè)務(wù)情況不大清楚,這里著重介紹下技術(shù)層存在的問(wèn)題
最大的平臺(tái)架構(gòu)之初,是作為一個(gè)小型賣貨網(wǎng)站來(lái)搭建的,其本身負(fù)載能力非常弱,平臺(tái)架構(gòu)的重大原罪如下[以下簡(jiǎn)稱舊平臺(tái)]:
靜態(tài)化問(wèn)題:系統(tǒng)架構(gòu)初時(shí),犯了很多小型電商網(wǎng)站會(huì)犯的毛病,前臺(tái)詳情頁(yè)和列表頁(yè)全部生成了靜態(tài)頁(yè),這在后面造成了少量的問(wèn)題,最大的問(wèn)題就是數(shù)據(jù)不實(shí)時(shí)問(wèn)題
單庫(kù)問(wèn)題:數(shù)據(jù)庫(kù)只有一個(gè)單庫(kù),后面做了主從,但實(shí)際優(yōu)化有限
弱緩存問(wèn)題:前期基本沒(méi)引入什么緩存,后面加入了redis緩存,這方面做得很弱
服務(wù)器提供商問(wèn)題:我們當(dāng)時(shí)用的一個(gè)傳統(tǒng)物理服務(wù)器提供平臺(tái),該平臺(tái)的服務(wù)器老化問(wèn)題比較嚴(yán)重,經(jīng)常出現(xiàn)硬件性故障,給我們制造了不少麻煩,時(shí)至今日,放在上面的一些小網(wǎng)站還時(shí)不時(shí)出事
系統(tǒng)百家爭(zhēng)鳴問(wèn)題:我們最多時(shí)同時(shí)運(yùn)營(yíng)了7個(gè)B2C平臺(tái),這些平臺(tái)每個(gè)系統(tǒng)的架構(gòu)都不一樣,有的基于ecshop、有的基于magento、zencart...造成的問(wèn)題是,團(tuán)隊(duì)技術(shù)最多時(shí)達(dá)到了快50人,但平均到每個(gè)平臺(tái)的后端最多也才4、5人左右,由于互相不熟悉各自的系統(tǒng),各個(gè)平臺(tái)的人力無(wú)法共用,這造成了非常嚴(yán)重的人力浪費(fèi),后來(lái)平臺(tái)業(yè)務(wù)下降期,好多人陸續(xù)離職...
平臺(tái)人力不足問(wèn)題:由于百家爭(zhēng)鳴問(wèn)題的存在,導(dǎo)致資源向最大的平臺(tái)傾斜實(shí)在有限,技術(shù)層面的問(wèn)題,很多人都知道,但由于資源限制,很是有心無(wú)力,平臺(tái)除了功能開發(fā)和維護(hù),很難調(diào)出太多精力對(duì)最大的平臺(tái)進(jìn)行大的架構(gòu)調(diào)整
其它小問(wèn)題...
1.1.3 碌碌無(wú)為的15年上
15年初,作為最大平臺(tái)的主程,有感于混亂的現(xiàn)狀,我向總裁辦提出了外貿(mào)B2B2C系統(tǒng)重構(gòu)計(jì)劃,但當(dāng)時(shí)舊平臺(tái)雖然在業(yè)務(wù)下滑期,依然還有著不少的銷量,所以一方面總裁辦同意了重構(gòu)計(jì)劃,另一方面需要保證舊平臺(tái)的正常運(yùn)作和功能開發(fā),理解公司苦衷的同時(shí),不得不吐槽下,這實(shí)在是件魚和熊掌不可兼得的事
1.1.4 匆匆上馬的重構(gòu)1期失敗版
15年中我升級(jí)部門副經(jīng)理,9月開始著手重構(gòu)事宜,當(dāng)時(shí)調(diào)過(guò)來(lái)著手重構(gòu)的開發(fā)只有4人[團(tuán)隊(duì)精英],由于我想快馬加鞭趕緊上線新平臺(tái),所以很多東西沒(méi)有經(jīng)過(guò)仔細(xì)調(diào)研,在2個(gè)月后完成了第一期的開發(fā)便著手上線事宜,不過(guò)由于一些重大功能的缺失,被緊急喊停,這是我管理失敗
整個(gè)2015年就幾乎這樣混完了,15年底16年初,我們團(tuán)隊(duì)組織架構(gòu)調(diào)整,迎來(lái)了新的技術(shù)總監(jiān)兼部門經(jīng)理......
1.2 血戰(zhàn)2016
新的技術(shù)總監(jiān)經(jīng)過(guò)長(zhǎng)期調(diào)研后,認(rèn)為商城平臺(tái)整個(gè)架構(gòu)有必要全部推翻重做,經(jīng)過(guò)和總裁辦協(xié)商達(dá)成一致,老平臺(tái)只留一人進(jìn)行維護(hù),不進(jìn)行新功能開發(fā),其它人員[18人左右]全部調(diào)入新平臺(tái)重構(gòu)項(xiàng)目進(jìn)行封閉開發(fā)
1.2.1 長(zhǎng)達(dá)半年的封閉開發(fā)
2月底,公司給我們租了一個(gè)酒店,新平臺(tái)的開發(fā)人員全部轉(zhuǎn)入這個(gè)酒店封閉開發(fā)[作息時(shí)間比現(xiàn)在IT業(yè)流行的996還要恐怖得多],開發(fā)期間,各種方案探討、技術(shù)調(diào)整細(xì)節(jié)不表,到6月底,我們出關(guān)...
1.2.2 系統(tǒng)調(diào)整期
16年10月我們開始進(jìn)行平臺(tái)遷移,到17年3月新平臺(tái)開始穩(wěn)定,這期間主要進(jìn)行一些bug調(diào)整和性能調(diào)優(yōu)
1.2.3 系統(tǒng)重構(gòu)總結(jié)
B2B2C:
通過(guò)這次重構(gòu),我們基本整合了所有平臺(tái),以后需要新增站點(diǎn),直接添加平臺(tái)即可,避免再踩入過(guò)度浪費(fèi)人力的深坑
大量新技術(shù)的引入:
ELK日志系統(tǒng)
swoole服務(wù)化
mongo代替mysql
elas替換sphinx搜索引擎
數(shù)據(jù)交換中心
......
架構(gòu)上云:
使用阿里云和亞馬遜云代替?zhèn)鹘y(tǒng)物理服務(wù)器提供商
CDN合理利用:
CDN合理利用代替靜態(tài)化技術(shù)
小結(jié):
筆者有幸見證了這個(gè)平臺(tái)業(yè)務(wù)層面的起萌到輝煌,再到?jīng)]落,直至現(xiàn)在的重新起跑,技術(shù)層面的浴火重生,跟隨這個(gè)項(xiàng)目一起大起大落,一起成長(zhǎng),感恩一起奮斗的兄弟,感恩平臺(tái),感覺公司。以下的章節(jié),將圍繞我們的新平臺(tái)技術(shù)架構(gòu)開始展開。