我是這樣讓公司使用Node.js的

Node.js是一門用javascript編寫服務端應用的語言,具備非阻塞、高I/O的優勢。相信不少前端開發工程看到這個描述就躍躍欲試了。終於有機會跟後臺開發一爭天下,推翻程序員鄙視鏈理論指日可待啊(c>c++>java/.net>前端)。javascript

然而事實上,Node.js已經走過了10年了,並無在服務端應用方面掀起太大的波浪,反卻是在包管理,工具化方面應用更爲普遍,如npm倉庫、webpack等。所以除非大家團隊原本的後臺技術棧就是Node.js,否則要想在服務端說服公司使用Node.js仍是須要費些心力的。html

筆者所在公司使用Node.js已經有兩年多,從一開始使用Node.js替代Jsp作先後端分離,到使用Node.js承擔公司部分創新性項目積累了必定的經驗。接下來,本文將描述說服使用Node.js面臨的難題?如何找準立足點並讓領導接受使用Node.js?你們有什麼意見和想法歡迎留言討論。前端

本文寫於19/06/14。也許將來說服使用Node.js並非一件很難的事,本文所描述的也就不適用了。java

爲何想用Node.js作服務那麼難

在大部分的公司,後臺服務基本是由java、c++等語言把持。所以想用Node.js去作服務面臨着各類困難,主要緣由以下:node

1. 成熟的後臺體系

以java爲例,通過長時間的發展和線上驗證,java的生態至關完善。在當下微服務體系大行其道的背景下,各類微服務解決方案就像是爲java而生的同樣,例如使用Spring Cloud體系,你能搭建出一整套的解決方案。而Node.js在這塊還屬於初級階段。幸運的是,這類解決方案基本提供了標準的接入方案,Node.js等非java體系語言也能接入。然而接入門檻較高,如java的接入提供了相關sdk,只須要編寫相關的配置文件便可,Node.js是須要本身編寫代碼實現的。webpack

另外,小公司爲了下降運營和維護成本,通常只接受一種後臺語言,java體系下,問題的排查和解決比較容易找到資深的工程師解決。c++

2. 前端人員的相關技術素養的缺少

後臺開發對算法、數據接口、設計模式、邏輯分析等能力的要求較高,較爲嚴謹。而傳統意義上的前端開發,只需對用戶負責就能夠了,相信你們也聽過Don't let me think這句話。前端面向用戶體驗負責,偏向於感性。作好這一點,也能成爲一名優秀的前端開發工程師。可是若是想讓Node.js在服務端有所應用,相關技術能力是須要補足的,所幸向周圍的大牛學習和多逛技術論壇能夠彌補這點。程序員

3. 大環境下對於JavaScript和前端的刻板印象

"畢竟前端的入門門檻比較低"相信這句話做爲前端的同窗應該都有全部耳聞。而且JavaScript是一門弱類型語言,在後端使用不嚴謹(可使用Typescript替代)。改變刻板印象是一個長期的過程。這裏也感謝國內大廠,線上環境對於Node.js的大規模使用,正改變着人們過往的印象。web

4. Node.js生態的不肯定性。

這個主要是由於兩個方面的緣由:算法

  1. node.js的做者又弄了個新的deno,打擊了你們使用Node.js的信心;
  2. npm包雖然數量龐大,但安全性未經認證。

總之,使用Node.js作服務端開發語言,須要有強大的決心。可是決心是不夠的,咱們使用一門新的技術,須要找準立足點。

立足點——爲何我要用Node.js

當咱們終於鼓起勇氣,向領導安利Node.js的時候,咱們總不能說,「你看,某某廠也在用」吧。凡事預則立不預則廢。咱們得找準立足點,讓領導明白這個只有前端的同事能作,或者作的更好。我以爲能夠從如下幾個方面進行論述。

1. 一切爲了用戶——提高用戶體驗

前端開發理應爲用戶體驗負責。

曾幾什麼時候,先後端開發的分界並無那麼明顯,大部分的前端頁面由後臺人員兼着作,一套JQuery+BootStrap即可走天下,例如J2EE、PHP、ASP.NET等。但隨着前端框架的出現(Angular、React、Vue),其複雜程度和上手難度已經不是後臺能開箱即用的了。慢慢的,如今的後臺人員「不懂」前端,關於體驗前端更有發言權。

同時,複雜的前端框架也讓首屏時間愈來愈長,白屏也將致使用戶流失,須要咱們作優化,常見的手段有如SSR,PWA。而這些若是不借助與Node.js的能力,是很難實現的。

2. 職責明確——提升開發團隊生產力

服務端設計的接口應面向通用服務,趨向穩定,後端團隊理應關注於服務自己,並儘可能少的關注於UI。一套接口,多端適用。

面向UI的接口應交給BFF(Backends For Frontends),實現數據聚合、裁剪和格式化。秉着服務自治(誰使用,誰負責、誰開發)的原則,這一層應該交由前端團隊負責。

3. 團隊賦能——提升前端團隊的想象和成長空間

前端是一個須要不斷學習,不斷充電的領域,各類新的技術在不斷涌現併成爲主流,如PWAGraphQLSSR等,須要咱們去嘗試。Node.js的使用能讓團隊在讓這些技術落地,提升團隊活力和技術水平。一個有想象空間的團隊,所能創造的東西的是不同的。

如何讓領導信任你能Hold住Node.js

1. 樹立專業形象

樹立專業形象主要爲了達到跟領導創建信任感,讓領導知道你是能把一件事情作好的人,即首先讓領導信任你這我的或者團隊。這個須要在平時多跟領導交流,表現出我的素養。我認爲主要分爲兩個方面:

  1. 責任心強、解決問題能力強、遇事能鑽研。若是以前打過硬仗將會是很好的佐證材料。
  2. 技術能力優秀。平時除了將自己的工做作好以外,應該在網絡、安全、代碼架構等後端方面有相關表現,平時多逛論壇、內部/朋友圈分享、寫技術文章會是很好的證實。

2. 他山之石,能夠攻玉

以開放和包容的態度對待技術。 在後臺的大牛面前,Node.js能作的內容仍是小打小鬧,他們在各方面都有成熟的方案。例如在全鏈路監控、系統性能度量、算法、數據庫等等方面,所以多跟後臺人員討教,兼聽則明。

3. 以數據,文檔說話

Node.js的性能如何,可否頂得住現有壓力,不是靠咱們幾句話就能描述清楚的,一份壓測報告纔是最好的證實。若是是改造原有系統,有個直觀的數據數據比較會更好,咱們使用Node.js改造JSP站點的時候,渲染同個頁面壓測出來的數據是有10倍+性能的提高的。

好的技術設計文檔利於你們瞭解你的架構和後續作擴展。所以一份長期維護的文檔也是很重要的。如何寫一份好的文檔,推薦你們看這邊文章What nobody tells you about documentation

其餘

如下是本人關於Node.js將來發展的一些觀點,僅供參考:

  1. service mesh的規模化使用以後,使用任何語言都能開發微服務,而不須要關心如何搭建微服務體系自己。對於使用Node.js是一種利好;
  2. 現有運維體系已經至關成熟,藉助k8s+Prometheus便可作好node.js運行時監控,線上監控趨向簡單;
  3. "天下大勢合久必分",Node.js站穩以後,應該會成爲獨立崗位,專一於服務端。

一些有用的資料

相關文章
相關標籤/搜索