6.1 采用分布式架构的软件开发流程
在 第 2 章 指出过,目前大多数电子商务系统都采用分布式架构。分布式软件的开发一般划分为前端开发(front-end development)与后端开发(back-end development),相应的,软件开发工程师也分为前端开发工程师与后端开发工程师两大类。两者的关系可以做以下类比,前端开发工程师的工作专注于“房屋”装修,而盖房子的工作由后端开发工程师负责。
1. 前端开发与常用工具
软件的“前端”是与用户直接交互的部分,包括在浏览网页时接触的所有视觉内容–从字体到颜色,以及下拉菜单和侧边栏。这些视觉内容,都是由浏览器解析、处理、渲染相关 HTML、CSS、JavaScript文件后呈现而来。因此,前端开发就是要创造面向用户的相关代码,并通过建立框架,构建沉浸式的用户体验。
通过一些专门的工具软件,前端开发工程师与设计师/用户体验分析师密切合作,帮助构建原型或是线框图,参与产品开发到发布的全过程。一些前端开发工程师甚至能准确定位影响用户体验的特定问题,并给出建议或是代码解决方案,对产品设计带来积极影响。
前端开发者要为后端开发者搭建的“房屋”进行内部设计和装修工作。装潢风格由房屋所有者指定。为了实现这个目标,开发需要熟练运用下列语言、框架、工具库:
网页三剑客:HTML(构建页面框架,类比骨骼)、CSS(渲染页面样式,类比血肉) 和 JavaScript(创建页面交互,类比手脚)
页面框架 jQuery、node.js 等工具库,能帮助开发者以更高效的方式编码
Ajax 方法的使用经验,可以帮助使用从服务器拉取数据,协助实现页面的动态加载
2. 后端开发与常用工具
后端开发是不涉及用户界面生成的开发,既包括服务器端的业务处理逻辑开发、系统架构或框架的建立,也可能涉及编写算法模型等,为了让服务器、应用、数据库能够彼此交互,后端开发工程师通常需要具有如下技能:
用于应用构建的服务器端语言:PHP,Ruby,Python,Java,.Net等;
常用的数据库及构建方式:MySQL,Oracle,SQL Server等;
PHP框架:Zend,Symfony,CakePHP等;
版本控制工具:Git,SVN,CVS等;
熟练使用Linux操作系统作为开发和部署环境
3. 全栈开发与常用工具
全栈工程师(Full stack engineer),最初是6年多以前由 Facebook 提出的概念。全栈开发的核心,是指开发者能够承担包括前端、后端在内的所有功能开发任务,他们拥有一个技能全家桶。能够同时承担服务器端和客户端工作会带来更多机会,当然也面临更多挑战。以厨艺作类比,掌握烹饪和烘焙都需要时间与经验积累,同时掌握两者要花费更多精力。照着菜谱做谁都可以,但要做出真正美味的东西需要时间的打磨。
全栈开发者也通常在服务器端进行编程工作,但他们熟悉前端开发语言和工具,能够操纵网站面向用户的部分。具体工具依项目和客户需求而定,全栈开发者需要对 Web 架构的每一个层次都有足够的了解:搭建和配置Linux服务器,编写服务器端API,利用客户端 Java 代码驱动应用,将设计层面的东西转化为实际的HTML+CSS+Javascript 代码。掌握并使用大量工具的同时,全栈开发者需要敏捷地分配服务器端和客户端任务,提供解决方案并对比不同方案的优劣。
以一个典型的数据分析类应用开发为例,其开发过程如图 6.1 示意:
上图可以看到,在开发数据分析类应用的过程中需要综合运用前端(数据分析图表的可视化呈现)与后端(云服务器及运行环境的配置、数据分析算法的实现与前端接口)开发的知识与配套工具软件。一般而言,掌握Python或R的基本语句、常用包的调用即可完成上述工作。