從0到1的電商架構(gòu),初期該怎么做?

2021-03-01    分類(lèi): 網(wǎng)站建設(shè)

從0到1的電商架構(gòu),初期該怎么做?


來(lái)源:中生代技術(shù)群

問(wèn)題提出

今天在電商金融架構(gòu)群里,來(lái)自螞蟻金服的于總拋出了一個(gè)問(wèn)題:“完全從0到1建設(shè)一個(gè)電商網(wǎng)站,技術(shù)上如何選型,如何快速上線(xiàn)?”

群友們集思廣益

參與討論的電商公司背景:有來(lái)自傳統(tǒng)行業(yè)的“互聯(lián)網(wǎng)+”式的電商商城平臺(tái),有目前正處在風(fēng)口的“跨境電商”,也有來(lái)自知名大公司的電商實(shí)踐等。

  • UC的莫俊彬說(shuō):“我覺(jué)得...先把基礎(chǔ)設(shè)施弄好,上云..搞業(yè)務(wù)..這樣精力就集中了”(給贊,還賣(mài)了一手好萌)。
  • 北京的isnow分享了他的經(jīng)歷:“我們是去年10月份(注:2014年)從0到1搭建的電商網(wǎng)站,做知識(shí)產(chǎn)權(quán)電商,2b2c的業(yè)務(wù),開(kāi)始在首都在線(xiàn)的云上,前端是用bootstrap,使用nginx做負(fù)載均衡,后端用springmvc+spring+mybatis數(shù)據(jù)庫(kù)用mysql,支付接入第三方支付,支付寶和銀聯(lián)支付,網(wǎng)站分前端用戶(hù)訪(fǎng)問(wèn)和后端業(yè)務(wù)系統(tǒng),分開(kāi)部署,前端部署在兩臺(tái)tomcat上,mysql一主一備,這大概是我們的第一版系統(tǒng)的架構(gòu)。開(kāi)始的時(shí)候產(chǎn)品線(xiàn)比較單一,將主打的產(chǎn)品上線(xiàn),然后在后期迭代過(guò)程中逐步上線(xiàn)其他業(yè)務(wù)?!?/li>

于總心想。。我才不相信你們沒(méi)遇到問(wèn)題,說(shuō)問(wèn)題。。

然后isnow就開(kāi)始倒苦水模式。。。

  1. 由于人員和流程的問(wèn)題,每次上線(xiàn)都是直接將變動(dòng)的class文件部署上去,代碼管理沒(méi)跟上;
  2. 隨著業(yè)務(wù)線(xiàn)的增多,發(fā)現(xiàn)最開(kāi)始的業(yè)務(wù)架構(gòu)無(wú)法擴(kuò)展,每次增加業(yè)務(wù)線(xiàn)代碼重用效率不高;
  3. 由于業(yè)務(wù)線(xiàn)中存在大量的文件,導(dǎo)致隨著訂單的逐漸增多,文件io變慢 ;
  4. 隨著業(yè)余訂單的變多,訂單訪(fǎng)問(wèn)開(kāi)始變慢;
  5. 因?yàn)闃I(yè)務(wù)系統(tǒng)是o2o的模式,客戶(hù)那邊做業(yè)務(wù)的時(shí)候容易對(duì)業(yè)務(wù)經(jīng)常狀態(tài)變動(dòng),現(xiàn)階段都是專(zhuān)人在數(shù)據(jù)庫(kù)上更改數(shù)據(jù)狀態(tài),個(gè)人覺(jué)得太危險(xiǎn);
  6. 業(yè)務(wù)方變動(dòng)太大,我們的產(chǎn)品暫時(shí)在市場(chǎng)上沒(méi)有可借鑒的(第一個(gè)吃螃蟹的),因此在業(yè)務(wù)上一直都是在變動(dòng),然后就形成了一種業(yè)務(wù)混亂的感覺(jué)。后來(lái),招了cto,改第二版時(shí)候把大量的業(yè)務(wù)邏輯轉(zhuǎn)移到數(shù)據(jù)庫(kù)里用存儲(chǔ)過(guò)程來(lái)解決,導(dǎo)致業(yè)務(wù)邏輯分散。
  7. 感覺(jué)創(chuàng)業(yè)公司其實(shí)技術(shù)過(guò)得挺艱難的,招不到好的人員,領(lǐng)導(dǎo)在新技術(shù)的嘗試上往往步伐沒(méi)那么大,不敢輕易上他沒(méi)有把握的技術(shù),有時(shí)候甚至為了穩(wěn)定去將就一些技術(shù)甚至業(yè)務(wù)上的坑”于總看到這里瞬間不淡定了:“CTO的經(jīng)驗(yàn)決定技術(shù)堆棧??!存儲(chǔ)過(guò)程是一個(gè)大坑,未來(lái)要分離,服務(wù),可讀性都是問(wèn)題”。
  • 小剛插了一句:“硬件和網(wǎng)絡(luò),直接買(mǎi)廠商的”(土豪任性)
  • 來(lái)自金山的Kerwin說(shuō):“先想一個(gè)能擴(kuò)展的框架”(果然是大公司的,家底就是厚呀)
  • 北京的孔慶龍則說(shuō):完全從0到1 建設(shè)一個(gè)電商網(wǎng)站:
  • 如何選型,首先要清楚自己想要什么這個(gè)就要做好業(yè)務(wù)分析和業(yè)務(wù)架構(gòu)和戰(zhàn)略整理,進(jìn)而找到關(guān)鍵需求,通過(guò)關(guān)鍵需求來(lái)對(duì)市面上的技術(shù)或者套裝軟件進(jìn)行選型——也就是應(yīng)用架構(gòu)選型。
  • 快速上線(xiàn):這個(gè)涉及到的問(wèn)題較多,如數(shù)據(jù)架構(gòu)、基礎(chǔ)架構(gòu)、應(yīng)用架構(gòu)、安全架構(gòu)等一系列問(wèn)題,如果安全架構(gòu)不高那么上云是一個(gè)不錯(cuò)的選擇,畢竟云可以提供一整套的PASS和saas解決方案。
  • 關(guān)于技術(shù)棧:主要是根據(jù)自己的團(tuán)隊(duì)人員量身打造,從前到后有前端技術(shù)選型(jquery、Bootstrap等)、HTTP網(wǎng)關(guān)或LBS(nginx、F5等)、容器中間件(Tomcat、jboss、weblogic等)、應(yīng)用(SSH、分布式的dubbo等)、數(shù)據(jù)庫(kù)(mysql、redis、oracle、db2等),監(jiān)控軟件(應(yīng)用監(jiān)控、網(wǎng)絡(luò)監(jiān)控、數(shù)據(jù)庫(kù)監(jiān)控、服務(wù)監(jiān)控等)
  • 關(guān)于團(tuán)隊(duì):如何快速構(gòu)建如何上實(shí)現(xiàn)DEVOPS(技術(shù)工具如:maven、svn/git、sonar、jenkins、Confluence、jira、nexus等)
  • 于總補(bǔ)充到:“容器中間件(Tomcat、jboss、weblogic等),現(xiàn)在都是tomcat 和jetty,其他的太重?!?/li>
  • 剛開(kāi)始做跨境電商的Jesse說(shuō):項(xiàng)目一個(gè)半月上線(xiàn)。
  • 服務(wù)器與數(shù)據(jù)庫(kù)直接買(mǎi)現(xiàn)成的,減少運(yùn)維成本。目前我們是ECS加RDS,全是阿里云。 框架是Spring+Mybatis,服務(wù)器是tomcat
  • 圖片存儲(chǔ)用的是OSS,自定義域名,CDN加速(也是阿里云的)首頁(yè)優(yōu)化包括動(dòng)靜分離,異步加載,用戶(hù)首頁(yè)打開(kāi)速度從7秒多縮短到了3秒以?xún)?nèi)。 由于上線(xiàn)匆忙,很多細(xì)節(jié)來(lái)不及優(yōu)化和確定。所以對(duì)于一些經(jīng)常變動(dòng)的模塊直接用新的工程。這樣要修改不會(huì)影響到其他模塊。 代碼管理用Git。沒(méi)有service話(huà),感覺(jué)用不到。
  • 緩存直接是EHCache,每個(gè)機(jī)器都保存一份。沒(méi)有用memcache,因?yàn)槟壳癿emcahche還是會(huì)增加管理成本。
  • 負(fù)載均衡也是直接上阿里云的負(fù)載均衡
  • 快速上線(xiàn)的一個(gè)問(wèn)題就是好多技術(shù)設(shè)計(jì)的細(xì)節(jié)沒(méi)有考慮完善,代碼比較粗糙,但是又不能做大的調(diào)整,而且還要兼顧新的功能。目前的做法是,業(yè)務(wù)需要更改哪一個(gè)模塊,就去在做業(yè)務(wù)的過(guò)程中去重構(gòu),而且做灰度發(fā)布。
  • 業(yè)務(wù)上跨境電商的一個(gè)大問(wèn)題就是貨幣問(wèn)題。不同國(guó)家的用戶(hù)登錄顯示的貨幣要不一樣。對(duì)于產(chǎn)品,報(bào)關(guān)是個(gè)大問(wèn)題,現(xiàn)在這一塊都是運(yùn)營(yíng)手動(dòng)報(bào)關(guān)發(fā)貨?,F(xiàn)在還做不出來(lái)那種跨境DRP,即使購(gòu)買(mǎi)現(xiàn)成的服務(wù)也不知道該咋用。 匯率是采用一個(gè)月取平均值。要判斷是哪個(gè)國(guó)家的話(huà)。。先做成讓用戶(hù)自己選。。但其實(shí)現(xiàn)在就是中文和英文
  • UC的莫俊彬接著問(wèn)了一個(gè)問(wèn)題:“初期數(shù)據(jù)支撐,這塊感覺(jué)不好做,不知道有沒(méi)專(zhuān)做這塊服務(wù)的公司。”
  • 來(lái)自北京的俞斌說(shuō):“我們?nèi)堪⒗镌??!?/li>
  • 來(lái)自深圳的小剛說(shuō):我們的業(yè)務(wù)才剛起步,技術(shù)上沒(méi)有太多的創(chuàng)新。
  • 硬件帶寬:非核心業(yè)務(wù),阿里云;
  • 整體架構(gòu):分層模式+微服務(wù)模式,可復(fù)用的核心功能下沉、抽成服務(wù)。
  • 技術(shù)選型: 3.1. 網(wǎng)站前端php+yii+thrift+阿里ocs+mysql;
  • 3.2. 后臺(tái)服務(wù)spring+mybatis+thrift+dubbo+mysql
  • 最后來(lái)自友群的朋友分享了他們的經(jīng)驗(yàn):我們現(xiàn)在電商商城平臺(tái),算是從0-1,我全程參與過(guò),技術(shù)選型也都參與討論過(guò),現(xiàn)在來(lái)看的話(huà),犯過(guò)以下幾個(gè)錯(cuò)誤:
  • 沒(méi)有準(zhǔn)確估計(jì)實(shí)際業(yè)務(wù)量或是就沒(méi)估計(jì),導(dǎo)致技術(shù)選型直接參考京東,淘寶等一線(xiàn)公司,實(shí)現(xiàn)較復(fù)雜,技術(shù)鋪的也很大。
  • 因?yàn)槿鄙俳?jīng)驗(yàn)的原因吧,前期業(yè)務(wù)沒(méi)有明確的規(guī)劃,技術(shù)選型也沒(méi)有考慮高內(nèi)聚,低耦合,導(dǎo)致系統(tǒng)之間依賴(lài)太強(qiáng),現(xiàn)在想拆分很難
  • 選擇了一些較新的技術(shù)框架,依賴(lài)于1~2個(gè)技術(shù)牛人,牛人離職,一片茫然。。。
  • 初期除了購(gòu)買(mǎi)流程上不能有技術(shù)短板外,產(chǎn)品為核心的營(yíng)銷(xiāo)數(shù)據(jù)流也很重要。提升流量,用流量測(cè)試轉(zhuǎn)化率和動(dòng)銷(xiāo)率,然后想辦法提升這兩點(diǎn)。一旦轉(zhuǎn)化率穩(wěn)定,才是買(mǎi)大流量的時(shí)候。這些都要有數(shù)據(jù)支撐試錯(cuò)。

總結(jié)

最后我們總結(jié)了一下我們的討論:

快速上線(xiàn),滿(mǎn)足目標(biāo)不要做過(guò)多設(shè)計(jì),大概用到的技術(shù)堆棧有:

電商商城平臺(tái)一般都分為面向客戶(hù)的客戶(hù)端網(wǎng)站系統(tǒng)、面向公司內(nèi)(或第三方平臺(tái))的業(yè)務(wù)系統(tǒng)以及運(yùn)維平臺(tái)(云平臺(tái))。

  • 對(duì)于面向客戶(hù)端的網(wǎng)站系統(tǒng)主要包括以下幾個(gè)模塊:1. 用戶(hù)管理系統(tǒng) 2. 商品管理系統(tǒng) 3. 支付系統(tǒng) 4. 訂單管理系統(tǒng) 5. 評(píng)價(jià)系統(tǒng)
  • 對(duì)于面向公司內(nèi)(或第三方平臺(tái))的業(yè)務(wù)系統(tǒng)主要包括以下幾個(gè)模塊:
  • 人員管理以及權(quán)限管理系統(tǒng)
  • 客戶(hù)服務(wù)系統(tǒng)
  • 訂單管理系統(tǒng)
  • 財(cái)務(wù)管理系統(tǒng)
  • 商品維護(hù)系統(tǒng)
  • 數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)
  • 運(yùn)營(yíng)支撐系統(tǒng)
  • 主要架構(gòu)圖:從圖中我們可以很清晰的看到大概的技術(shù)棧:

1. 前端系統(tǒng):

1.1 Web端技術(shù)選擇:

1.1.1 JS框架搭建

1.1.2 PHP框架搭建

1.1.3 JSP/Freemarker模板+UI框架(Bootstrap等)+Jquery工具

1.2 移動(dòng)端

1.2.1 Android平臺(tái)

1.2.2 IOS平臺(tái)

1.2.3 Mobile(H5)平臺(tái)

2. 后端系統(tǒng)

2.1 負(fù)載均衡系統(tǒng)

2.1.1 硬件類(lèi)負(fù)載均衡器

(1). NetScaler

(2). F5

(3). Radware

(4). Array

2.1.2 基于Linux免費(fèi)開(kāi)源的負(fù)載均衡軟件策略

(1). Nginx

(2). LVS/HAProxy

(3). Lighttpd、Apache-mod_proxy、Squid、Socks、TIS FWTK、Delegate等

2.2 web容器集群(最基礎(chǔ)的集群,一主一備)

2.2.1 傳統(tǒng)模式,將所有模塊定義到同一個(gè)項(xiàng)目中發(fā)布到web容器中

2.2.2 SOA模式(微服務(wù)模式),根據(jù)業(yè)務(wù)模塊將系統(tǒng)進(jìn)行拆分,分開(kāi)部署,系統(tǒng)間使用rpc或rest方式調(diào)用。具體可參考dubbo(dubbox)、Spring-boot等框架。

2.3 文件服務(wù)器

2.3.1 儲(chǔ)存方式

2.3.2 儲(chǔ)存容量

2.3.3 安全性與存取權(quán)限控管

2.3.4 存取效能

2.4 緩存服務(wù)器

2.4.1 分布式Redis緩存

2.4.2 Memcache緩存

2.4.3 EHCache等

2.5 消息系統(tǒng)

2.5.1 ActiveMQ

2.5.2 分布式消息系統(tǒng)Kafka、Rocketmq等

2.6 數(shù)據(jù)持久層

2.6.1 關(guān)系型數(shù)據(jù)庫(kù)

(1). PostgreSQL

(2). Mysql

(3). Oracle、DB2等

2.6.2 Nosql

(1). MongoDB

(2). HBase等

注:硬件解決方案的優(yōu)點(diǎn)是:有專(zhuān)業(yè)的維護(hù)團(tuán)隊(duì)來(lái)對(duì)這些服務(wù)進(jìn)行維護(hù)、缺點(diǎn)就是花銷(xiāo)太大。軟件解決方案的優(yōu)點(diǎn)是費(fèi)用低廉,缺點(diǎn)是開(kāi)源系統(tǒng),可能出問(wèn)題得自己想辦法找解決方案


2.CTO(技術(shù)負(fù)責(zé)人)會(huì)很大程度上影響技術(shù)發(fā)展

CTO 在創(chuàng)業(yè)公司扮演了的角色很獨(dú)特,創(chuàng)業(yè)公司CTO不僅負(fù)責(zé)業(yè)務(wù)上的開(kāi)發(fā)任務(wù),還負(fù)責(zé)扛住外界(其他部門(mén)負(fù)責(zé)人)的壓力等。對(duì)內(nèi)還要負(fù)責(zé)團(tuán)隊(duì)人員的合理搭配和安排,對(duì)外負(fù)責(zé)開(kāi)發(fā)任務(wù)的安排和調(diào)控。 同時(shí)CTO在技術(shù)選型上更多時(shí)候考慮的是自身熟悉的技術(shù)以及穩(wěn)定的技術(shù),或許創(chuàng)業(yè)公司有更多的試錯(cuò)機(jī)會(huì),但畢竟是身處創(chuàng)業(yè)的環(huán)境,外界環(huán)境不可能給予團(tuán)隊(duì)多次失誤的機(jī)會(huì), 因此在技術(shù)選型上包括公司技術(shù)走向上更多的取決于CTO對(duì)技術(shù)的熟練程度。

3.發(fā)展過(guò)程中遇到的問(wèn)題

問(wèn)題:

  1. 由于創(chuàng)業(yè)公司迭代非常頻繁,因此運(yùn)維上線(xiàn)的問(wèn)題是大一個(gè)很大的問(wèn)題我們開(kāi)始的解決是每次將修改后的class文件直接替換線(xiàn)上環(huán)境,這種方案是非常危險(xiǎn)的。后期我們搭建了自動(dòng)部署平臺(tái),基于Git和Jenkins進(jìn)行代碼自動(dòng)化部署。
  2. 前期由于各種各樣的原因?qū)е聵I(yè)務(wù)邏輯上耦合程度高,開(kāi)發(fā)新業(yè)務(wù)線(xiàn)的成本很高這個(gè)沒(méi)辦法,前面挖的坑后面慢慢填,然后在重構(gòu)的時(shí)候,一點(diǎn)點(diǎn)的將業(yè)務(wù)獨(dú)立出來(lái),使用微服務(wù)方式進(jìn)行架構(gòu)。
  3. 前期未將系統(tǒng)中文件同代碼分離出來(lái),導(dǎo)致隨著用戶(hù)量增多,服務(wù)器IO越來(lái)越慢搭建文件服務(wù)器,將所有文件移到文件服務(wù)器中,減輕web應(yīng)用服務(wù)器的壓力。
  4. 隨著訂單的增多,后臺(tái)業(yè)務(wù)系統(tǒng)訂單訪(fǎng)問(wèn)變慢第一步,從sql優(yōu)化的角度,看是否能夠通過(guò)加索引等方式加快速度。第二步,計(jì)算訂單相關(guān)表的讀寫(xiě)比,進(jìn)行分庫(kù)分表操作。(目前我們團(tuán)隊(duì)還未到達(dá)這一步)
  5. 業(yè)務(wù)方需求變動(dòng)太快或產(chǎn)品思路不清晰,每次迭代都是在挖坑這個(gè)沒(méi)辦法,第一,尋找更加懂業(yè)務(wù)的產(chǎn)品經(jīng)理。第二,業(yè)務(wù)開(kāi)會(huì)須有核心業(yè)務(wù)開(kāi)發(fā)人員參與,對(duì)需求或產(chǎn)品的發(fā)展做出中肯的評(píng)審

4.我們的關(guān)于從0到1的電商商城平臺(tái)建設(shè)的一些建議

  1. 對(duì)核心業(yè)務(wù)思路要成熟,不要人云亦云,千萬(wàn)不要說(shuō)"淘寶、京東就是這么搞的"。要結(jié)合自己的產(chǎn)品和業(yè)務(wù)去架構(gòu)自己的平臺(tái)。
  2. 在技術(shù)選擇上,盡量選擇開(kāi)源穩(wěn)定的方案,不要選特別新的技術(shù)。
  3. 前期可以將非核心數(shù)據(jù)或服務(wù)托管在穩(wěn)定可靠的云服務(wù)平臺(tái)上,集中精力將核心業(yè)務(wù)完成核心業(yè)務(wù)的開(kāi)發(fā)和產(chǎn)品迭代,到團(tuán)隊(duì)有一定的積累后,可選擇自主開(kāi)發(fā)某些托管在云平臺(tái)的服務(wù)。
  4. 能選擇將業(yè)務(wù)分離開(kāi),則盡量分離開(kāi),以方便后期產(chǎn)品的重構(gòu)。

分享題目:從0到1的電商架構(gòu),初期該怎么做?
文章出自:http://www.muchs.cn/news6/103556.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、商城網(wǎng)站定制網(wǎng)站、App設(shè)計(jì)定制開(kāi)發(fā)、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)