移PHP电商⺴⽹网站

⾄至GO的节奏
!

Zalora South East Asia 架构师 翁伟
Zalora South East Asia
•

2012年初成立

•

东南亚时尚电商
•

新加坡(总部)⻢马来西亚 印尼 香港 越南 泰国
菲律宾 文莱

•

约1000名员工(IT部

约40人)
8月中

始尝试

移
11月初试上线
目前。。。

•

第一版被rollback

•

部分推倒重来,积

准备第二版重新上线
今天

•

谈谈在此折腾过程中的经验
原有网站架构
•

经典LAMP

•

前端网站(Alice)负责商品显示
•

•

Memcached / Solr

后端网站(Bob)负责购物⻋车、订单处理等
•

MySQL
为何迁移?
•

调⽤用memcached非常快,但solr...

•

PHP的同步运行模式注定会成为瓶颈
•

射手网对此也有分享:https://bitbucket.org/
PinIdea/fcgi_ext/

•

程序员(我!)太...
•

第一版仅是试验性项目
•

据说百度很简单,

•

Zalora的前端网站也就是比百度 杂一倍,有四个⻚页面
•

商品目录

•

商品详情

•

购物⻋车

•

支付

个⻚页面
实验项⺫⽬目计划
•

把这“四个⻚页面”全部用GO改写了∼

•

先把“一个⻚页面”用GO来实现

•

nginx分发不同⻚页面至PHP / GO
worker
memcache
nginx All URLs

Alice

solr
ZRS
BOB

Tracking (GA / Webtrekk / etc)
worker

product

cart..

Alice

memcache
solr

nginx

catalog

Eve

(GO)

ZRS
BOB

Tracking (GA / Webtrekk / etc)
一些前提
数据兼容
•

GO对PHP序列化、反序列化支持
•

https://github.com/Wuvist/gophpserialize

•

https://github.com/Wuvist/gophpserialize/pull/1
⻛风险控制
•

新旧

套系统并存,互不影响

•
•

•

新版本无需修改任何现有代码
独立的新部署

nginx控制切换
•

随时上线、随时rollback
产品团队的需求

•

商品分类⻚页面浏览体验需改善!
•

PM直接说:“我们要AJAX...”
看起来很美
•

有节奏的改进网站

•

改善用户体验,满足产品团队需求

•

实现架构迁移,让技术团队不要太闲
激进的计
•

原PHP(Alice),拆分为:
•

AngularJS (Eve) 前端 MVVM

•

GO (Costa) 后端API
去PHP化

•

上AngularJS,前端界面全部用AngularJS 染

•

GO仅提供rest API服务
•

一切都很美好,上线了!

•

直到我膝盖中了一

•

直到我尝试分享网站链接去Facebook
OpenGraph

•

用户分享网站链接去Facebook时,Facebook获
得的链接信息(title / text / picture)全部都错了
•

AngularJS + Go API的架构完全无法处理此情况

•

Eve (AngularJS) 阵亡
其他问题

•

AngularJS?可以用jQuery么?

•

PHP也可以编译的,跟GO一样快∼
Costa (GO) 威武!
第二版

•

PHP + GO,预期12月上旬上线

•

无AngularJS
经验
•

“慢慢来,比较快”
•

去PHP化是不对的∼

•

最重要的是团队整体的共识

•

经过折腾⼩小伙伴们都对Go的潜力有了充分认识
•

成立新部

,对后端模块进行

移
Go可以做的事情很多
•

GroupCache (去Memcached)

•

购物⻋车

•

订单处理

•

触发CDN⻚页⾯面过期
Q&A

•

想来新加坡从事GO 发?

•

发送英⽂文简历⾄至:weng.wei@zalora.com
Zalora php to_go
Zalora php to_go
Upcoming SlideShare
Loading in …5
×

Zalora php to_go

1,697 views

Published on

1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,697
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
1
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Zalora php to_go

  1. 1. 移PHP电商⺴⽹网站
 ⾄至GO的节奏 ! Zalora South East Asia 架构师 翁伟
  2. 2. Zalora South East Asia • 2012年初成立 • 东南亚时尚电商 • 新加坡(总部)⻢马来西亚 印尼 香港 越南 泰国 菲律宾 文莱 • 约1000名员工(IT部 约40人)
  3. 3. 8月中 始尝试 移
  4. 4. 11月初试上线
  5. 5. 目前。。。 • 第一版被rollback • 部分推倒重来,积 准备第二版重新上线
  6. 6. 今天 • 谈谈在此折腾过程中的经验
  7. 7. 原有网站架构 • 经典LAMP • 前端网站(Alice)负责商品显示 • • Memcached / Solr 后端网站(Bob)负责购物⻋车、订单处理等 • MySQL
  8. 8. 为何迁移? • 调⽤用memcached非常快,但solr... • PHP的同步运行模式注定会成为瓶颈 • 射手网对此也有分享:https://bitbucket.org/ PinIdea/fcgi_ext/ • 程序员(我!)太闲了
  9. 9. • 第一版仅是试验性项目
  10. 10. • 据说百度很简单, • Zalora的前端网站也就是比百度 杂一倍,有四个⻚页面 • 商品目录 • 商品详情 • 购物⻋车 • 支付 个⻚页面
  11. 11. 实验项⺫⽬目计划 • 把这“四个⻚页面”全部用GO改写了∼ • 先把“一个⻚页面”用GO来实现 • nginx分发不同⻚页面至PHP / GO
  12. 12. worker memcache nginx All URLs Alice solr ZRS BOB Tracking (GA / Webtrekk / etc)
  13. 13. worker product
 cart.. Alice memcache solr nginx catalog Eve
 (GO) ZRS BOB Tracking (GA / Webtrekk / etc)
  14. 14. 一些前提
  15. 15. 数据兼容 • GO对PHP序列化、反序列化支持 • https://github.com/Wuvist/gophpserialize • https://github.com/Wuvist/gophpserialize/pull/1
  16. 16. ⻛风险控制 • 新旧 套系统并存,互不影响 • • • 新版本无需修改任何现有代码 独立的新部署 nginx控制切换 • 随时上线、随时rollback
  17. 17. 产品团队的需求 • 商品分类⻚页面浏览体验需改善! • PM直接说:“我们要AJAX...”
  18. 18. 看起来很美 • 有节奏的改进网站 • 改善用户体验,满足产品团队需求 • 实现架构迁移,让技术团队不要太闲
  19. 19. 激进的计 • 原PHP(Alice),拆分为: • AngularJS (Eve) 前端 MVVM • GO (Costa) 后端API
  20. 20. 去PHP化 • 上AngularJS,前端界面全部用AngularJS 染 • GO仅提供rest API服务
  21. 21. • 一切都很美好,上线了! • 直到我膝盖中了一 • 直到我尝试分享网站链接去Facebook
  22. 22. OpenGraph • 用户分享网站链接去Facebook时,Facebook获 得的链接信息(title / text / picture)全部都错了
  23. 23. • AngularJS + Go API的架构完全无法处理此情况 • Eve (AngularJS) 阵亡
  24. 24. 其他问题 • AngularJS?可以用jQuery么? • PHP也可以编译的,跟GO一样快∼
  25. 25. Costa (GO) 威武!
  26. 26. 第二版 • PHP + GO,预期12月上旬上线 • 无AngularJS
  27. 27. 经验 • “慢慢来,比较快” • 去PHP化是不对的∼ • 最重要的是团队整体的共识 • 经过折腾⼩小伙伴们都对Go的潜力有了充分认识
  28. 28. • 成立新部 ,对后端模块进行 移
  29. 29. Go可以做的事情很多 • GroupCache (去Memcached) • 购物⻋车 • 订单处理 • 触发CDN⻚页⾯面过期
  30. 30. Q&A • 想来新加坡从事GO 发? • 发送英⽂文简历⾄至:weng.wei@zalora.com

×