研讀JavaScript全棧開發(fā)員:云時(shí)代的奇跡
譯文據(jù)今年Stack Overflow網(wǎng)站對(duì)廣大開發(fā)人員的調(diào)查顯示,最常見的一群開發(fā)人員是二十出頭的JavaScript全棧開發(fā)員。全棧(full-stack)這個(gè)短語意指“能夠從頭開始編寫Web服務(wù)”。全棧開發(fā)員能夠使用亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)API,處理Ubuntu操作系統(tǒng),編寫JavaScript代碼,并且提供接口。
不過這其實(shí)并非云計(jì)算,不是嗎?JavaScript開發(fā)員可不在乎云計(jì)算的細(xì)枝末節(jié),比如RAID配置、內(nèi)核模塊或應(yīng)用程序故障切換。他也不在乎OpenStack的未來,不在乎Lattice是不是比Cloud Foundry更容易使用。JavaScript全棧開發(fā)員與云計(jì)算到底有什么關(guān)系呢?
云計(jì)算堆棧
IT人員喜歡堆棧,因?yàn)槎褩5纳蠈与[藏了低層的復(fù)雜性。云計(jì)算技術(shù)堆??雌饋砭拖襁@樣:
- 頂層是應(yīng)用程序――各種各樣的計(jì)算機(jī)程序,從Apache到Zabbix,不一而足。
- 中間層是操作系統(tǒng)――咱們實(shí)話實(shí)說吧,Ubuntu在這方面勝出。
- 底層――云服務(wù)提供商
JavaScript堆棧
JavaScript堆棧是位于云計(jì)算堆棧那個(gè)頂層的多種類型的工件(artifact)當(dāng)中的一種。JavaScript堆棧實(shí)際上與其說是一種堆棧,還不如說是一種軟件包:該軟件包既涵蓋服務(wù)器端計(jì)算,又涵蓋客戶機(jī)端計(jì)算。
服務(wù)器端確確實(shí)實(shí)含有軟件堆棧。底層是谷歌公司的V8 JavaScript引擎,Joyent公司的Node.js服務(wù)器建立在V8上,編碼框架則位于Node.js的基礎(chǔ)上。服務(wù)器端存儲(chǔ)區(qū)是NoSQL數(shù)據(jù)庫――傳統(tǒng)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)根本就不是很酷??蛻魴C(jī)端包括另一種應(yīng)用程序框架(如果你聽到開發(fā)人員把這一切現(xiàn)成的代碼稱作樣板,那么他很可能是全棧開發(fā)員群體當(dāng)中的一員)。
千萬不要低估了大批開發(fā)員的耐心。以色列開發(fā)公司Linnovate拿來服務(wù)器端數(shù)據(jù)庫Mongo、服務(wù)器端Express框架、谷歌的客戶機(jī)端框架AngularJS以及Node.js后,隨后進(jìn)行了一番整合工作,開發(fā)出了MEAN.io。MEAN軟件包將這些組件的安裝和配置簡化為只有一行的命令。這種簡化工作對(duì)開發(fā)人員來說如同小菜一碟(這也就是開發(fā)人員覺得Docker和Vagrant如此吸引人的原因之一)。
JavaScript開發(fā)人員的工具箱包括更多節(jié)省時(shí)間的軟件,這些軟件的名稱好像是從字典里隨機(jī)選擇似的。你會(huì)喜歡Jasmine還是Mocha?不知道。會(huì)喜歡Grunt還是Gulp?說不準(zhǔn)。喜歡D3還是Epoch?拜托,到此為止吧。
JavaScript全棧開發(fā)員
全棧開發(fā)員的想法是,面向Web、完全從軟件的視角看待技術(shù)世界,這在云計(jì)算之前是不可能做到的。十年前有的只是從O'Reilly Web2.0視角看待Web,而現(xiàn)在是從全棧視角看待Web。
全棧開發(fā)員是專家級(jí)的JavaScript編程人員,能夠處理這些全棧工具,諳熟HTML5和CSS等其他語言(沒錯(cuò),這些是語言),而且了解AJAX、單頁應(yīng)用程序和充分利用代表性狀態(tài)傳輸協(xié)議(REST)的Web服務(wù)等概念。
與所有IT技術(shù)迷一樣,JavaScript全棧開發(fā)人員也被嶄新的技術(shù)所吸引。如果說企業(yè)投資者是闊綽的后臺(tái)老板、系統(tǒng)管理員是不修邊幅的家伙,那么JavaScript全棧開發(fā)員就是趕時(shí)髦的人。他們一點(diǎn)也不像擅長LAMP堆棧或PHP驅(qū)動(dòng)的CMS的人群。而全棧這個(gè)短語讓這一批新的JavaScript開發(fā)員有別于昔日微不足道的JavaScript前端開發(fā)員。
站在巨人的肩上
你可以說,這些JavaScript全棧開發(fā)員與云計(jì)算沒有半毛關(guān)系。他們的日常工作與構(gòu)建或運(yùn)行大規(guī)模分布式云計(jì)算系統(tǒng)毫無關(guān)系。他們可能在滑雪旅行間歇為小公司制作漂亮的網(wǎng)站,從不考慮那些云API后面的東西。
但這其實(shí)是一種誤解。這些開發(fā)人員的工作恰恰離不開云計(jì)算的存在。JavaScript全棧開發(fā)員好比站在巨人的肩上。JavaScript全棧開發(fā)員很可能是開發(fā)運(yùn)營(DevOps)文化圈的一員,構(gòu)建彈性系統(tǒng),并使用版本控制系統(tǒng)來編寫代碼。他關(guān)注架構(gòu)、監(jiān)控和容量,他每天都在耗用云計(jì)算資源。
如果拿顯微鏡來細(xì)細(xì)研讀JavaScript全棧開發(fā)員,研究這個(gè)群體。你就會(huì)發(fā)現(xiàn)這是云計(jì)算時(shí)代的諸多奇跡之一。
原文標(biāo)題:Full-stack JavaScript developers: Study these cloud age wonders in the wild