第1页
技术选型那些事
轻⼯工⼚厂设计实践
云平台/轻应⽤用泛前端组/潘峰
第2页
背景
第3页
2013年世界⼤大会推出轻应⽤用 2014年世界⼤大会推出直达号
技术⾓角度,假设你不了解他们是什么
轻应⽤用 = webapp + 云/端能⼒力 + 分发(搜索) 直达号 = 轻应⽤用 + @直达 + 综合分发(搜索/推荐) + CRM
@⻄西湖
第4页
• 百度已有的移动应⽤用创建体系:
• siteapp(转码):纯展⽰示型app、依赖pc • appbuilder(垂类模板):开发成本⾼高、难复制
第5页
设计⺫⽬目标
第6页
通过对⻚页⾯面、组件的简单拼装、配置即可完成建站 能构建出较复杂的强交互轻应⽤用 满⾜足内外部需求
“lego积⽊木式”app⽣生成
第7页
让APP动起来? 这样cool么?
第8页
让APP动起来?
第9页
跳出演⽰示
第10页
设计思路
第13页
服务模型
app
第14页
轻⼯工⼚厂应⽤用的构成
app
第15页
user
()
() app
RD/
架构
第16页
谈谈选择
第17页
技术选型原则
)) )
) • 技术适⽤用场景 • 运维⽀支持 • 通⽤用服务/经验
(
• 团队技术特点 • 是否够敏捷 + () + • 避免过度设计 • 技术是否⽕火
第18页
why node?
第19页
⾼高性能webserver
事件驱动、⾮非阻塞IO
javascript
⺴⽹网络应⽤用平台
第20页
前端⼯工程师的福⾳音 单线程/单进程 异步编程反⼈人类
第21页
⾼高效 可扩展 易部署 云端⼀一体 成熟且活跃的开源社区(⽕火!)
第22页
IO密集型
第23页
only node?
我们还有hhvm
第24页
并发Smarty模版渲染,hhvm的效率优于odp约50% 并发Smarty模版渲染,极限性能为3000q/s
第25页
curl
http request(500ms) 3200(q/s) 740(ms/q) 2400(concurrency) 70% idle
第26页
bae-php
hhvm
node
lighttpd+zendvm nginx+hhvm
lighttpd+node
不⽀支持异步
多线程模型 ⽀支持异步io
异步io
bae op/rd运维
部门op运维
rd运维/op不⿎鼓励
rd⾃自助上线
rd⾃自助上线
项⺫⽬目前期还不⽀支持 RD⾃自助上线
快速迭代
⾼高稳定性;⾼高性能
IO密集
第27页
模块特点 适⽤用场景 运维⽀支持 通⽤用服务 团队技术特点 是否够敏捷 避免过度设计 技术是否⽕火
创建平台 bae-php
迭代快,流量低
组件runtime hhvm
⾼高流量、⾼高稳定性、 核⼼心业务模块
接⼊入层 nodejs
轻量级,迭代慢
第28页
)
( )(
pss(mongo) ⽂文档结构 不⽀支持事务
⾮非索引字段性能⾼高 ⽀支持geohash rd运维
mysql 表状结构 ⽀支持事务
空间索引性能差 dba运维
稳定性极⾼高
第29页
轻⼯工⼚厂如何⼯工作
第30页
SPA? SEO不友好 前端逻辑复杂(mvc,按需加载等) 加重终端负担 对js依赖度⾼高,低端机兼容
smarty + blendui.js
加载 切换
低端机
⾼高端机
baiduRuntime
云端渲染;输出html⻚页⾯面
云端渲染;输出html⻚页⾯面; 监听全局链接跳转
云端渲染;输出html⻚页⾯面
链接跳转
发送异步请求⺫⽬目标⻚页html 调起webview,通过
⽚片段;渲染⻚页⾯面
native转场切换⻚页⾯面;
第31页
选完了还能改么…
第32页
⽣生命在于折腾
第33页
没有最好,只有最适合
技术适⽤用场景、运维⽀支持 通⽤用服务/经验、团队技术特点 是否够敏捷、避免过度设计 技术是否⽕火
第34页
THX