node.js能開發(fā)大型網(wǎng)站嗎?
時間:2022-09-04 10:15:01 | 來源:網(wǎng)站運(yùn)營
時間:2022-09-04 10:15:01 來源:網(wǎng)站運(yùn)營
補(bǔ)充一下國外的:其實(shí)看一看
Node.js Foundation Members 就可以大約猜到國外有哪些大公司正在使用 Node.js 了 。
- Paypal:Paypal 從 2012 年開始大量將使用 Java 編寫的業(yè)務(wù)改寫為 Node.js,此前在重構(gòu) checkout 系統(tǒng)的時候他們讓 Java 程序員和 Node.js 程序員做了一次 Bakeoff(Node.js at PayPal),在同樣的測試+同樣的需求下,Node.js 組在更短的時間內(nèi)用更少的人加更少的代碼開發(fā)出了一樣的系統(tǒng),并且性能比 Java 版好得多,此后他們就成為了 Node.js 的死忠……目前 Paypal 有大約 700 名活躍中的 Node.js 開發(fā)者(來源:https://www.youtube.com/watch?v=-00ImeLt9ec)。他們在很多 JavaScript 和 Node.js 開發(fā)相關(guān)的會議上都有做過分享,另外 Node.js 基金會現(xiàn)任主席也是 Paypal 的員工。
- Godaddy:收購(準(zhǔn)確來說是acqui-hire)了 Nodejitsu,原本是 .NET 的架構(gòu),使用 Node.js 進(jìn)行了重構(gòu)并微服務(wù)化。參考:https://www.youtube.com/watch?v=MtpGVP-Qs-k
- IBM:收購了 Strongloop,Node.js 基金會成立的主要推手之一,主要將 Node.js 應(yīng)用于企業(yè)級開發(fā),重點(diǎn)放在 API 建設(shè)上,參考:https://www.youtube.com/watch?v=O28Knn00qYo
- Yahoo:用于 Yahoo 站點(diǎn)上的各種頁面、Flickr 的照片頁等等的渲染,也包括 API 和視頻流傳輸(Node.js on the Road: Node.js @ Yahoo)
- Microsoft:微軟在 Node.js 的投入比其他廣一些,而且他們還有自己的 JavaScript 引擎 Chakra。從網(wǎng)站的角度來說有 Power BI(Microsoft Careers: My job details),不過他們呆在基金會還有更多東西做,他們和同在基金會的 Intel 類似,也很看重 Node.js 在物聯(lián)網(wǎng)方面的前景,所以隨著 Windows 10 IoT 的發(fā)布,做了 Microsoft/node-v0.12,后來直接開源了 Chakra,并且正在準(zhǔn)備提交 PR 到 node.js mainline。
- SAP:類似 IBM,用于企業(yè)級開發(fā)
- SAP makes strong commitment to Node.js
其他不在基金會的大型應(yīng)用(其實(shí)你在 indeed 之類的地方上搜一下誰在招 Node.js 開發(fā)也知道了……):
- Uber:Uber 從一開始就是使用 Node.js 完成整個系統(tǒng)的 —— 對,整個涵蓋美國等多個國家的,分布式實(shí)時調(diào)配系統(tǒng),而不是系統(tǒng)里的一小部分——并且現(xiàn)在還在使用。參考:
- Scaling Uber's Real-time Market Platform
- https://www.youtube.com/watch?v=ElI5QtUISWM
- (Uber 的工程師在 Node Interactive 上說的一句話私以為很有道理:我們應(yīng)該多看看 Uber、Walmart、IBM 這樣的公司在用 Node.js 做什么有趣的事情,而不是埋頭寫無窮無盡的 Express App...)
- Medium:目前跑在 Amazon VPC 上,后端是服務(wù)化的架構(gòu)所以也有一些其他語言打輔助,從一開始就一直在使用 Node.js 寫主要的應(yīng)用邏輯,前后端代碼共享帶來了一定便利(主要是編輯器與文章的轉(zhuǎn)換)
- The Stack That Helped Medium Drive 2.6 Millennia of Reading Time
- http://www.talentbuddy.co/blog/on-building-with-node-js-at-medium-and-growing-as-a-developer/
- Netflix:類似阿里系,主要由前端推動,做渲染層與數(shù)據(jù)訪問層,開源了自己的數(shù)據(jù)訪問框架 falcor 。有一個比較有趣的點(diǎn)是,Netflix 完全托管在 Amazon 的云服務(wù)上,所以遇到過一些額外的難題(比如容器化必須跟著 Amazon 走)。參考:https://www.youtube.com/watch?v=p74282nDMX8
- Walmart:類似阿里,有大促(黑色星期五)的業(yè)務(wù)場景,為社區(qū)貢獻(xiàn)了著名的 Walmart memory leak(咦)
- Walmart Node.js Memory Leak
- Node.js at Walmart: Introduction
- Groupon:從 Ruby on Rails 開發(fā)的 monolithic app 轉(zhuǎn)為 Node.js 開發(fā)的微服務(wù),和 Paypal 一樣也是在一次 Bakeoff 后做的決定
- https://www.youtube.com/watch?v=TWVblTpUlxM
- New York Times:(TODO)(咳咳,準(zhǔn)確來說,這個網(wǎng)站并不存在于地球上啊,并不存在(嚴(yán)肅臉))
- Under the Surface of the NYT Mobile Redesign
- http://www.talentbuddy.co/blog/building-with-node-js-at-the-new-york-times/
- GitHub :https://twitter.com/github/status/16979699217465344 (TODO)
- NASA:(你沒看錯)(由于顯而易見的原因,資料比較少,TODO)
- 待續(xù)……
去年年底的 Node Interactive 大會,以及之前的 Node Summit 大會,就有很多關(guān)于使用 Node 進(jìn)行企業(yè)級開發(fā)(這里的企業(yè)級開發(fā)指的是比如 Paypal 這樣的商業(yè)公司里的開發(fā))的討論……目前使用 Node.js 進(jìn)行開發(fā)的大型網(wǎng)站/ Web 服務(wù)大約有幾種模式:
- 使用 Node.js 將從其他語言(Java、.NET、Ruby on Rails 等)編寫的大型應(yīng)用拆分并重構(gòu)為 Node.js 開發(fā)的微服務(wù),或者是使用 Node.js 重構(gòu) API(常見的是構(gòu)建移動端 API),使用范圍較廣,如 Groupon,Godaddy,Walmart,以及曾經(jīng)的 Linkedin。這類應(yīng)用得到的紅利未必純粹是從 Node.js 得來的,更多來自于整體架構(gòu)的改進(jìn),在遇到 Node.js 整體生態(tài)的不成熟帶來的痛點(diǎn)可能顧慮成本而切走(如 Linkedin)也可能借助社區(qū)、技術(shù)咨詢及自己團(tuán)隊(duì)的力量堅(jiān)持解決,并反饋給社區(qū)幫助 Node.js 成長(如 Walmart)。
- 從一開始就使用 Node.js 支撐主要業(yè)務(wù),并持續(xù)至今,在發(fā)展壯大的過程中引入其他語言(常見的搭配是 Go )打輔助,如 Uber,Medium。這類應(yīng)用有的看重 Node.js 開發(fā)實(shí)時應(yīng)用的便利,有的看重前后端代碼復(fù)用,遇到的痛點(diǎn)主要是 Node.js 作為一個新生技術(shù),整體生態(tài)在大規(guī)模應(yīng)用還缺乏經(jīng)驗(yàn),比如運(yùn)維、集群管理、性能調(diào)優(yōu)等。
- 由前端團(tuán)隊(duì)推動,做數(shù)據(jù)訪問層與渲染層,有的已經(jīng)在這一層大幅度替換了原有的架構(gòu),如 Paypal,有的還屬于探索中,相比原來的技術(shù)而言規(guī)模較小,如 Yahoo, Netflix,阿里系。有趣的一點(diǎn)是,通常這類場景下 Node 的競爭對手都是占主導(dǎo)地位的 Java 和原來就在跟 Java 競爭的 PHP,目標(biāo)通常是讓前端團(tuán)隊(duì)有更多發(fā)揮空間以便節(jié)省溝通成本并快速迭代,讓 Java 作為偏后的支持,彌補(bǔ) Node.js 在分布式應(yīng)用和事務(wù)控制上的欠缺。這類應(yīng)用最初遇到的痛點(diǎn)是,如何將 Node.js 應(yīng)用接入大公司現(xiàn)有的基礎(chǔ)架構(gòu),如日志、監(jiān)控系統(tǒng)、分布式服務(wù)接入等。當(dāng)規(guī)模上去之后也會遇到第二種應(yīng)用的痛點(diǎn)。
- 使用 Node.js 做企業(yè)級開發(fā)(換句話說,外包……),比較看重 API 建設(shè),為現(xiàn)有的解決方案籃子里加多一個投資,如 IBM,SAP。這類應(yīng)用遇到的痛點(diǎn)是 Node.js 的工具鏈(IDE 等)相比 Java 等技術(shù)尚不成熟,JavaScript 的語言設(shè)計(jì)導(dǎo)致這類應(yīng)用難以進(jìn)行充分的靜態(tài)檢查,代碼質(zhì)量不好控制。
- 使用 Node.js 打輔助,應(yīng)用在一些感覺較為合適的業(yè)務(wù)場景,如 GitHub。
總體而言大家的看法是,Node 已經(jīng)具備了應(yīng)用在企業(yè)級開發(fā)的資格了,但是 Tooling、測試、監(jiān)控、運(yùn)維等方面的建設(shè)還需要繼續(xù)努力。
頂鍋蓋打個廣告:在國內(nèi)使用 Node.js 做開發(fā)的,歡迎圍觀阿里云出品的 Node.js 應(yīng)用服務(wù)解決方案 alinode (不需要你的服務(wù)器在阿里云也能用哦),我們主要解決第二種和第三種應(yīng)用遇到的痛點(diǎn),幫助你監(jiān)控并解決
線上 Node.js 應(yīng)用出現(xiàn)的問題(光速逃