+ All Categories
Home > Documents > Zalora php to_go

Zalora php to_go

Date post: 01-Jul-2015
Category:
Upload: weng-wei
View: 1,378 times
Download: 5 times
Share this document with a friend
32
迁移PHP电商站 GOZalora South East Asia 构师
Transcript
Page 1: Zalora php to_go

迁移PHP电商⺴⽹网站⾄至GO的节奏

!Zalora South East Asia 架构师 翁伟

Page 2: Zalora php to_go

Zalora South East Asia

• 2012年初成立

• 东南亚时尚电商

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

• 约1000名员工(IT部門约40人)

Page 3: Zalora php to_go

8月中开始尝试迁移

Page 4: Zalora php to_go

11月初试上线

Page 5: Zalora php to_go

目前。。。

• 第一版被rollback

• 部分推倒重来,积极准备第二版重新上线

Page 6: Zalora php to_go

今天

• 谈谈在此折腾过程中的经验

Page 7: Zalora php to_go

原有网站架构• 经典LAMP

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

• Memcached / Solr

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

• MySQL

Page 8: Zalora php to_go

为何迁移?• 调⽤用memcached非常快,但solr...

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

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

• 程序员(我!)太闲了

Page 9: Zalora php to_go

• 第一版仅是试验性项目

Page 10: Zalora php to_go

• 据说百度很简单,两个⻚页面

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

• 商品目录

• 商品详情

• 购物⻋车

• 支付

Page 11: Zalora php to_go

实验项⺫⽬目计划

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

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

• nginx分发不同⻚页面至PHP / GO

Page 12: Zalora php to_go

nginx Alice

memcache

solrAll URLs

BOB

ZRS

Tracking (GA / Webtrekk / etc)

worker

Page 13: Zalora php to_go

Aliceproduct

cart..

catalog

nginx

Tracking (GA / Webtrekk / etc)

Eve(GO)

memcache

solr

BOB

ZRS

worker

Page 14: Zalora php to_go

一些前提

Page 15: Zalora php to_go

数据兼容

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

• https://github.com/Wuvist/gophpserialize

• https://github.com/Wuvist/gophpserialize/pull/1

Page 16: Zalora php to_go
Page 17: Zalora php to_go

⻛风险控制• 新旧两套系统并存,互不影响

• 新版本无需修改任何现有代码

• 独立的新部署

• nginx控制切换

• 随时上线、随时rollback

Page 18: Zalora php to_go

产品团队的需求

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

• PM直接说:“我们要AJAX...”

Page 19: Zalora php to_go

看起来很美

• 有节奏的改进网站

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

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

Page 20: Zalora php to_go

激进的计划

• 原PHP(Alice),拆分为:

• AngularJS (Eve) 前端 MVVM

• GO (Costa) 后端API

Page 21: Zalora php to_go

去PHP化

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

• GO仅提供rest API服务

Page 22: Zalora php to_go
Page 23: Zalora php to_go

• 一切都很美好,上线了!

• 直到我膝盖中了一箭

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

Page 24: Zalora php to_go

OpenGraph

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

Page 25: Zalora php to_go

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

• Eve (AngularJS) 阵亡

Page 26: Zalora php to_go

其他问题

• AngularJS?可以用jQuery么?

• PHP也可以编译的,跟GO一样快~

Page 27: Zalora php to_go

Costa (GO) 威武!

Page 28: Zalora php to_go

第二版

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

• 无AngularJS

Page 29: Zalora php to_go

经验

• “慢慢来,比较快”

• 去PHP化是不对的~

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

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

Page 30: Zalora php to_go

• 成立新部門,对后端模块进行迁移

Page 31: Zalora php to_go

Go可以做的事情很多

• GroupCache (去Memcached)

• 购物⻋车

• 订单处理

• 触发CDN⻚页⾯面过期

Page 32: Zalora php to_go

Q & A

• 想来新加坡从事GO开发?

• 发送英⽂文简历⾄至:[email protected]


Recommended