微信号:OraNews

介绍:分享数据库技术、新闻与信息,尤其是和Oracle数据库相关的内容,文章内容来自原创、专栏作者投稿或读者投稿.

苏宁易购:前后端分离架构的落地思考

2018-05-30 00:00 禹立彬


内容来源:2017 年 12 月 3 日,苏宁易购技术总监禹立彬在“互联网架构峰会”进行《前后端分离架构的落地思考》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:2851 | 8分钟阅读


摘要

本次分享将为大家介绍前后端分离的存在意义以及典型业务场景,接下来会细致的介绍前后端分离的技术利弊,最后根据苏宁的经验来谈一谈渐进式前后端分离。


嘉宾演讲视频及PPT回顾:http://suo.im/4WlSl9


为什么要前后端分离


前后端分离本质上是工作职责的细化。这两年前后端分离的呼声越发高涨,最重要的原因在于后端工程师不能简单的完成前端方面的工作。前端这段时间以来新的技术层出不穷,这种情况下后端无法简单的掌握前端技术,即使对前端来说也有一定的负担。


前端的门槛越来越高,一个人无法将所有的事情都做完,也是前后端分离的一方面因素。


 典型的业务场景


前后端分离其实也并非万能良药,对应不同的业务场景情况会有所不同。同样的应用场景也有所不同,前端传统的应用场景有PC端、移动端,另外还App hybrid、小程序等。针对不同的应用场景所使用的技术都会有所不同,应用场景众多让架构复杂度变的更高。


技术挑战


我们在前端方面遇到了很多的技术挑战,其中最重要的就是在大流量下要求高可用。对于访问量较小的网站,测试量并不是很大,只有在极少数情况下用户才能感知到BUG。但是大流量下感知人数会明显增多,所遇到的各方面问题也会增多,比如网络、接口缓慢的问题。针对大流量前端可以采用CDN方式抗住,这时后端的压力会比较大。当后端扛不住的时候,就需要前端来分担一部分压力,不能让用户感知到网页出现的问题,这种情况下高可用的要求会非常的高。


第二点是所有的前端工程师都非常讨厌的问题,浏览器的兼容性要求高。相信没有人会喜欢兼容IE7的需求,但是用户量多的情况下总有用会使用IE7的,为了避免用户投诉这一需求就必须得到满足。


对于电商来说每年要应付双11、双12、418等各种活动,这种情况下业务的迭代速度是非常快的,架构上处理会非常麻烦。还有一个比较麻烦的技术就是SEO支持,对于SEO很多技术都是不支持的,比如vue、react这样的MVVM框架是不能使用的。


 前后端常用技术利弊


技术方案


我们主要使用的技术方案有四种:前端模板(Ajax + 字符串模板)、MVVM(Vue、React)、Node模板(Express + ejs)、SSR(Node + Vue SSR)。这其中最古老的方案就是Ajax + 字符串模板,它本质上是拼接字符串。


浏览器兼容


无论是服务器渲染还是平常的渲染方式都支持IE6+,使用SSR或Node做渲染在浏览器兼容方面则会比较弱。基于现代MVVM框架的技术方案,同样也处于劣势,在浏览器兼容要求较高的场合中,无法使用。


SEO支持


对于SEO有要求的网页来说,使用web模板和Vue方案,不太合适。相对来说web模板要好一点,可以在页面未渲染之前添加一些介绍之类。Node和SSR在SEO方面问题不大,它们都是服务端渲染,首屏都包含足够多的数据。


首屏渲染耗时


现在的各种技术方案中对于首屏渲染耗时,显然使用Node是最快的。毕竟它是服务端渲染,数据是由Node服务端向服务提供方获取的。SSR渲染的花费时间相对于Node会多30%-50%。Web模板和Vue都是读取数据然后加载,其中Vue的渲染耗时会更久一些。总体来看在首屏渲染耗时方面MVVM框架是最慢的。


异步接口速度


在首屏加载完成后,很多页面都会有懒加载,需要向服务端请求相应的数据接口。这方面MVVM框架和web模板是直连后端的,而Node和SSR的方案都使用Nodejs做中间层转发一次,消耗掉一部分的网络连接,多出来的是Node服务器到服务提供方的服务。


高可用


Web模板毫无疑问在高可用方面是做的最好的,只要后台服务提供方没有挂,一般来说Web模板不会出太多问题。MVVM情况会复杂一些,在浏览器兼容上要求更高,测验量也会更多,但总归有些地方会测试不到。


Node作为中间平台,不仅要关心前端CDN还要注意Node服务器会不会出现问题,这样每多一个环节在高可用方面的就会差上一些。而SSR不仅要在Node上有高可用的要求,如果还引入了前后端代码同构,同构代码就有可能会在Node上出现各种问题。基于这种情况我们认为SSR在高可用方面是最差的。


技术门槛


技术的选择上首先要考虑是否合适当前团队,不同的团队情况都会有所不同。技术门槛方面就拿校招来说一般在web模板上都不会有太大问题,Vue这样的MVVM框架可能会了解一种,但是比较熟悉的就相对少一些。Web模板和Vue至少还是在前端方面,而Node情况就有些不同,它的知识点对前端来说复杂了很多。SSR情况则更糟糕,不仅仅需要知道Node方面的知识,还需要知道同样一套代码在Node上如何运行,以及SSR框架的运行情况,这样的话门槛就会更高。


前后端分离度


使用web模板或MVVM框架至少还需要和运维等人员配合找台服务器放置页面,多少还会和后端方面有些联系。而使用Node中间件则可以独立解决所有的问题。


三个问题


在谈框架落地的时候,我总是有三个问题,第一个问题就是你的项目是否需要SEO。如果需要那么Node.js就是不二选择,但是也要面对Node.js的风险,目前Node.js极度缺少企业级工具,错误调试困难,资料也少于主流语言。


第二个问题是项目是否需要兼容IE,目前很多的前端工程师都喜欢使用前端框架。但是如果当前项目需要兼容IE,那么就可以和这些框架说再见了。


第三个问题就是是否有足够多的前端工程师。前后端分离的越彻底,前端工作量越多。如果没有足够的前端工程师,就会面临各种各样的招聘风险,即很难招到有经验的前端工程师,现阶段只能靠加班。


渐进式前后端分离(苏宁的经验)


在前后端分离方面整体上都是转向Node.js中间件,我们有一个人数不多的架构团队,主要负责生产各种工具和中间件为Node.js服务。


对于浏览器兼容要求、可用性要求、页面性能要求都极高的电商类页面不使用前后端分离配合少量web模板。


对于浏览器兼容要求较高的活动展示页,逐渐从web模板过渡为Node模板。 核心应用型web页,可用性要求占主导的页面,过渡为Node + Vue.js方案。某些以前用Vue编写的页面现在要想兼容SEO且对性能要求高,可以渐进过渡到SSR方案。


前后端分离在团队推进中,根据团队实际情况,也应该是渐进的。架构师要严格评估风险边界,保持业务的稳定。业务开发中,多选择新业务推进高级分离方案。对于老业务改造,应该循序渐进,选择新需求。


有问题可以在评论区讨论,以上为所有分享内容,谢谢大家!


本文转载自:IT大咖说


资源下载

关注公众号:数据和云(OraNews)回复关键字获取

2018DTCC , 数据库大会PPT

2017DTC,2017 DTC 大会 PPT

DBALIFE ,“DBA 的一天”海报

DBA04 ,DBA 手记4 电子书

122ARCH ,Oracle 12.2体系结构图

2017OOW ,Oracle OpenWorld 资料

PRELECTION ,大讲堂讲师课程资料

近期文章

仅仅使用AWR做报告? 性能优化还未入门

实战课堂:一则CPU 100%的故障分析

杨廷琨:如何编写高效SQL(含PPT)

一份高达555页的技术PPT会是什么样子?

大象起舞:用PostgreSQL解海盗分金问题

 
数据和云 更多文章 实战课堂:数据库高Library Cache Lock导致Hang的故障分析 招商银行周伟:Fintech数据开放平台之数据库军规和内功修炼(含PPT) 是什么让美国网站拒绝欧洲访问?- GDPR 带来的数据安全思考 修而未复:说说WebLogic那修不完的Java反序列化漏洞 当SQL Server爱上Linux:AVAILABILITY_MODE 和 DataGuard&
猜您喜欢 漏洞预警:应用服务器glassfish任意文件读取漏洞 福利 | 14篇精选行业热点、实战指导、资源整合干货合集 Java设计模式(十) 你真的用对单例模式了吗 Windows 下搭建 Hexo 博客并将其部署到 GitCafe 终极教程 [译]Pinterest月PV百亿的架构设计