据今年Stack Overflow网站对广大开发人员的调查显示,最常见的一群开发人员是二十出头的JavaScript全栈开发员。全栈(full-stack)这个短语意指“能够从头开始编写Web服务”。全栈开发员能够使用亚马逊网络服务(AWS)API,处理Ubuntu操作系统,编写JavaScript代码,并且提供接口。
不过这其实并非云计算,不是吗?JavaScript开发员可不在乎云计算的细枝末节,比如RAID配置、内核模块或应用程序故障切换。他也不在乎OpenStack的未来,不在乎Lattice是不是比Cloud Foundry更容易使用。JavaScript全栈开发员与云计算到底有什么关系呢?
云计算堆栈
IT人员喜欢堆栈,因为堆栈的上层隐藏了低层的复杂性。云计算技术堆栈看起来就像这样:
- 顶层是应用程序――各种各样的计算机程序,从Apache到Zabbix,不一而足。
- 中间层是操作系统――咱们实话实说吧,Ubuntu在这方面胜出。
- 底层――云服务提供商
JavaScript堆栈
JavaScript堆栈是位于云计算堆栈那个顶层的多种类型的工件(artifact)当中的一种。JavaScript堆栈实际上与其说是一种堆栈,还不如说是一种软件包:该软件包既涵盖服务器端计算,又涵盖客户机端计算。
服务器端确确实实含有软件堆栈。底层是谷歌公司的V8 JavaScript引擎,Joyent公司的Node.js服务器建立在V8上,编码框架则位于Node.js的基础上。服务器端存储区是NoSQL数据库――传统的关系型数据库管理系统(RDBMS)根本就不是很酷。客户机端包括另一种应用程序框架(如果你听到开发人员把这一切现成的代码称作样板,那么他很可能是全栈开发员群体当中的一员)。
千万不要低估了大批开发员的耐心。以色列开发公司Linnovate拿来服务器端数据库Mongo、服务器端Express框架、谷歌的客户机端框架AngularJS以及Node.js后,随后进行了一番整合工作,开发出了MEAN.io。MEAN软件包将这些组件的安装和配置简化为只有一行的命令。这种简化工作对开发人员来说如同小菜一碟(这也就是开发人员觉得Docker和Vagrant如此吸引人的原因之一)。
JavaScript开发人员的工具箱包括更多节省时间的软件,这些软件的名称好像是从字典里随机选择似的。你会喜欢Jasmine还是Mocha?不知道。会喜欢Grunt还是Gulp?说不准。喜欢D3还是Epoch?拜托,到此为止吧。
JavaScript全栈开发员
全栈开发员的想法是,面向Web、完全从软件的视角看待技术世界,这在云计算之前是不可能做到的。十年前有的只是从O'Reilly Web2.0视角看待Web,而现在是从全栈视角看待Web。
全栈开发员是专家级的JavaScript编程人员,能够处理这些全栈工具,谙熟HTML5和CSS等其他语言(没错,这些是语言),而且了解AJAX、单页应用程序和充分利用代表性状态传输协议(REST)的Web服务等概念。
与所有IT技术迷一样,JavaScript全栈开发人员也被崭新的技术所吸引。如果说企业投资者是阔绰的后台老板、系统管理员是不修边幅的家伙,那么JavaScript全栈开发员就是赶时髦的人。他们一点也不像擅长LAMP堆栈或PHP驱动的CMS的人群。而全栈这个短语让这一批新的JavaScript开发员有别于昔日微不足道的JavaScript前端开发员。
站在巨人的肩上
你可以说,这些JavaScript全栈开发员与云计算没有半毛关系。他们的日常工作与构建或运行大规模分布式云计算系统毫无关系。他们可能在滑雪旅行间歇为小公司制作漂亮的网站,从不考虑那些云API后面的东西。
但这其实是一种误解。这些开发人员的工作恰恰离不开云计算的存在。JavaScript全栈开发员好比站在巨人的肩上。JavaScript全栈开发员很可能是开发运营(DevOps)文化圈的一员,构建弹性系统,并使用版本控制系统来编写代码。他关注架构、监控和容量,他每天都在耗用云计算资源。
如果拿显微镜来细细研读JavaScript全栈开发员,研究这个群体。你就会发现这是云计算时代的诸多奇迹之一。
原文标题:Full-stack JavaScript developers: Study these cloud age wonders in the wild