何駿 yussica
騰訊AlloyTeam高階前端開發工程師
先後參與過WebQQ、Q+、QQ互聯、手Q吃喝玩樂等業務的開發,業餘時間,還和小夥伴一起開發過iPresst線上創作平臺,“牆來了”體感遊戲。近期主要專注於node server—“玄武”的開發和優化,在通往全棧的道路上不斷摸索和積累ing。
是什麼契機,讓你有機會在前端開發工作中,接觸Node服務端開發呢?
首先,一個很重要的原因就是Nodejs從誕生到現在發展的很快,特別是在更新到4.x版本後支援了很多ES6的特性(6.x版本支援90%+ES6的特性),這極大的提升了開發體驗,還解決了之前在服務端開發中遇到的非同步程式設計、回撥地獄等問題。
其次,大家應該都有感覺,僅僅專注於前端,有很多事情是無法獨立完成的,比如頁面直出(服務端渲染)、介面聯調、自由專案的後臺開發等。
於是,我們開始嘗試用Nodejs自己寫server,因為語言都是js,所以學習成本很低,上手很快。但這還遠遠不夠,一個可以真正跑在生產環境中的server還需要很多核心模組,如程式管理(負載均衡)、路由配置化、RPC遠端呼叫、異常處理、日誌系統(還原現場,定位現網問題)、監控告警、cache等,於是就誕生了“玄武”。
在大型後端架構設計中,你認為有哪些重要的關注點?
- 健壯、穩定
健壯性和穩定性應該是後端最需要關注的點,極限值處理、錯誤捕獲、異常恢復、日誌系統、監控告警都是必不可少的。試想一個頁面UI醜一點,動畫FPS低一些,使用者都還能接受,但如果點選按鈕看到的一直是“系統繁忙,請稍後重試”,就會很絕望了,嚴重的話甚至會導致使用者未儲存的資料丟失。 - 安全
對於黑客來說,他們最想拿到的其實是使用者的資料,這就意味著系統裡的任何一個小的漏洞都可能成為突破口,造成難以想象的嚴重後果。即使事發後及時修復,你的產品也會失去使用者的信賴。所以安全必須引起大家足夠的重視。 - 靈活、易擴充套件
一個靈活、可擴充套件的系統應該做到功能模組的可插拔,模組間的低耦合,API介面的定義與實現分離等。隨著使用者訪問量的不斷增加,系統還需具備彈性擴容的能力,利用分散式服務框架做好狀態同步、負載均衡、叢集管理、配置統一化等。 - 開發友好
這一點是所有框架都會考慮到的。將更多的功能做成配置化的,往往可以降低學習成本,提升開發效率。
以上都是我個人的理解,可能還有些地方並沒有從前端的思維中轉換過來。
現在全棧工程師的概念很火,是不是學習了Nodejs就可以做到全棧了?
當然不會這麼簡單了。
“什麼都略懂一點,生活更多彩一些”,我認為這是做到全棧的第一步,只有這樣你才能對每個專案都有一個整體的把握,可以與其他小夥伴進行高效的溝通。之後你需要在某個領域不斷實踐,積累經驗,做精做細,成為這方面的專家。其實,在前面的過程中,除了在某個領域足夠深的知識積累,更重要的是你的思維方式、學習能力、分析解決問題的能力都得到了極大的提升,這時,再開始向其他領域擴充,相信很快就可以補齊之前的短板了。總的來說,想要成為全棧工程師,需要先廣,再深,然後再廣,這是我的看法。
學習Nodejs只是讓我們具備了server開發的能力,後續要走的路還很漫長,還有很多問題值得我們去思考,比如server端程式碼的組織和模組化,如何進一步提升效能等,當然解決這些問題最好的方式就是實踐。
更多精彩內容,敬請期待何駿在AC2016上的分享——《高效能 Node 服務端框架——玄武揭祕》