Qcon上海2014

没有后端

专题日期: 
星期六专题

1989.3.12 Tim Berners-Lee创立了WWW(Word Wide Web),Web的迅猛发展成为Internet上最重要的内容承载方式,以至于很多人会认为Web就是Internet。亿万互联网用户催生无数的Web开发者和巨无霸网站,Web的规模化促使了前后端的分工,于是2001年雅虎有了全世界第一个前端工程师职位,此时前端专注于HTML、CSS和JavaScript,后端专注于业务和数据,而数据(Data)和展现(View)结合部分由于成本较低和技术难度不高而分工模糊,大部分情况下这部分工作依旧是后端工程师在负责。2007年iPhone诞生,互联网全面向移动快速进化,各种系统和硬件配置的Phone和Pad兴起使得用户访问互联网的终端碎片化,导致互联网产品都需要一套数据(Data)多个展现(View),所以Data和View结合的技术难度和成本剧增使得这部分工作必须从后端向前端转移,前端负责客户端和服务端所有的View及View相关的Control,后端负责业务逻辑和数据并以API服务的方式向前输出,这样前后端彻底分离,对于产品开发而言前端只需要控制View和标准化的Data服务,不存在后端了。

从技术角度而言,前后端分离、跨终端、全栈、语义化版本化服务化API等等名词瞬间爆发都反应了这个趋势的巨大推力,整个互联网的前后端研发流程正在发生变革,本场议题就是在这个趋势下进行探讨,主要有以下几个方面:

1、前端作为API的消费者,如何定义语义化版本化服务化的API,并确保在整个研发流程中落地实施;
2、前端同时负责客户端和服务端的View,如何进行高效地开发,是在原有传统方案如Java上进化,还是激进采用Nodejs等新方案;
3、面对终端碎片化,原生客户端和Web到底该如何协作和竞争,前端必须要同时涉猎客户端和Web吗?

移动端应用和 web 网站应用不同,因为多平台多分辨率等因素,使的一份模型多份展现成为家常便饭,从而使前端和后端有了非常清晰的界限,之间使用平台语言无关的协议(如 http REST API)进行通信。这种松耦合的模式使得前后端可以更加专注于自己领域的问题和需求独立进化:前端更加专注用户体验、多平台多分辨率的适配;后端更加关注服务的可靠性、容量、负载均衡等。而通过 api 访问后端服务又有非常多的相似之处,使得一批 BaaS(后端即服务:Backend as a Service)的产品迅速崛起。这些产品通常会提供多平台 SDK 方便接入,并提供一系列服务,比如:数据存储、实时消息、推送、数据分析等。借助这些产品,前端工程师可以在「没有后端」的情况下完成整个 APP,并且无需担心后端服务在运维、容量和管理方面的问题。本次分享来介绍这种模式的产生及如何更好的使用 BaaS 服务。

无线移动终端的兴起,引发业界 Native app 和 Web app 选型大讨论。随着终端机器性能的不断提升,结合 Web 和 Native 的 Hybrid app 在体验上逐渐得到改善和认可,并以其不可替代的快速迭代能力,在大量的场景中获得广泛的运用。如手Q 中群部落、吃喝玩乐、主题中心等核心业务。AK(AlloyKit)是一套高性能的 Hybrid Web 业务的技术架构体系,能够使 Web 项目快速拥有 Web 资源离线化、JS Api、诊断分析、自动种入登录态和续期、DNS管理、开发者工具、关键性能数据上报等特性。目前 AK 已经手机QQ、PC QQ、手机空间、手机QQ音乐 4 大平台级产品进行运用,超过 4 个 BG 的 200 个业务接入。本次分享将详细解密 AK 的核心模块实现细节,内容包括:

1、移动时代 Web 开发困境

2、问题到此为止,AK 架构简介

3、优化 Web 内核启动速度

4、AK Web 前端静态资源离线化机制及优化

5、动态数据离线化解决方案

6、Web 能力增强,JS Api 

7、AK 其他模块功能

8、未来发展计划

随着软件云的概念兴起与服务器成本的持续降低,互联网产品已不在单纯以网站或者应用的形式提供给终端用户群体而统一概括。近几年, 类似 Saas 的「微服务 」逐渐产生,此类服务通常将某些通用的业务逻辑包装成相应的 API 与 SDK,为开发者提供友好的二次开发环境,为软件开发者降低后台开发门槛,进一步降低服务器运维成本。

此类开发方式造就不少无后端或浅后端的应用、网站或服务。

多说作为一家 Saas 服务提供商,为网站主与开发者提供了一套封装后的社交评论业务逻辑,涉及社会化登录,单点登录,评论提交,评论分享,消息提醒等多方面业务需求。基于这种现成的业务模型,我们考虑是否能为开发者提供封装更具体,更简单易用的应用场景,Airpub 正由此而生。

作为一个「纯前端」博客引擎,Airpub 天生面临着前后端分离的架构设计。无论是在路由层,还是展现与交互层,相应的逻辑均在前端完成,并通过相应的接口,与后端数据库实现数据交互与持久化,并且,通过与第三方,例如又拍云提供的图片上传接口,实现纯前端的图片上传功能,达成对用户部署的后端服务的零依赖。

在 Airpub 的设计与编写过程中,遇到许多问题,例如前端的鉴权体系,前端模块化的开发,Angular.js 代码组织,主题机制设计,模板跨域共享,编辑器开发中遇到的诸多问题等等,这些问题的一些分析经验与技巧,将在这次分享中具体呈现给大家。

在无线端业务中,webapp往往因为展现效果不佳,体验不流畅等因素而被Native app取代,在iOS上我们尚能借由较好的设备性能、浏览器支持,而通过Hybrid app的形式获得一席之地,但在Android上呢?我们还有什么更好的方法解决这个困局呢?而Blend项目向前端开发者展示了另一种可能,本次演讲将包括:

1. web开发者在无线中的困局

2. web能力和体验的瓶颈

3. Blend:融合与界限

4. 保护web天然的灵活性

5. 在产品中天衣无缝地应用

Blend不仅仅是一项「拿来即用」的开源技术,更是一种开发理念。使用这个理念,app不仅能保留web灵活性,剔除冗长的版本发布过程,做到极快的迭代速度,还能在交互中保证足够的流畅性。如果你正开发app的初版,你可以用Blend的理念来加速开发,尽早上线MVP(最简可行产品)并快速迭代;如果你正开发一个大中型app,这个理念能释放web的灵活性,让web开发工程师在app迭代过程中做得更多、做得更好。

随着不同终端(Pad/Mobile/PC)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本。为了提升开发效率,前后端分离的需求越来越被重视,后端负责业务/数据接口,前端负责展现/交互逻辑,同一份数据接口,我们可以定制开发多个版本。那么在传统开发模式下,前后端开发者以浏览器/服务器的物理鸿沟为界各司其职,各种前后端分离的方案也都受此制约、大同小异。跨终端时代,淘宝尝试在产品中应用基于Node.js的前后端分离方案,并由此深入Node.js腹地,进行了一场惊心动魄的技术改造运动,为前端的流程、优化,效率等拓展了新的空间。石霸会分享淘宝在新开发模式下的一些经验和教训。

随着移动互联网的高速发展,终端越来越碎片化,一份数据对应多个模版的情况越来越多,前后端分离势在必行,而 Node.js 的横空出世,给了前端工程师另外一个充满想象力的舞台。在此基础上,淘宝和支付宝也早已开始了前后端分离的进程。这次演讲将从另外一个视角来探讨前后端分离这件事情。

前后端分离的本质是数据和模板的分离,如何让前端专心于模版编写,后端专注于数据 API 的提供,是前后端分离的重点。对于前端来说,我们希望模版尽可能多的复用,而数据也需要能够和不同的模版进行渲染。这带来了两个问题:如何让一份模版能够在各处渲染,以及如何建立一套规范化的数据 API 机制。这次演讲将会给大家带来天猫在这两个方面的一些思考和探索。