
2018年4月前,Webrazzi.com一直基于WordPress运行。尽管曾尝试托管服务商的管理支持,但网站仍频繁宕机。随后我们迁移至自研基础设施,虽原计划更早启动,但因习惯问题延至去年才实施。
起初,我们评估了在AWS上运行WordPress的优化空间,但发现其速度未达预期且成本高昂。因此,2018年底我们开始编写脱离WordPress架构的代码。约4个月后,新系统上线,正式切断了与WordPress的联系。
上周,随着基础设施调整,我们发布了新设计。摒弃WordPress遗留界面后,新设计实现了所需的灵活性。
脱离 WordPress
此次变更此前未详述,现简要说明:鉴于团队更擅长PHP,新系统的核心目标是速度。我们优先沿用了Nativespot中使用的Swoole,这也是新系统的首选技术。
Swoole 是一个用 C/C++ 开发的 PHP 扩展,属于基于事件驱动和并行的软件框架,内部包含针对不同任务的组件。
考虑到Laravel社区的持续发展及开发便利性,我们将其作为应用框架。这对团队而言更为熟悉,能快速编码。我们的技术流程如下:
Nginx <-> Swoole <-> Laravel
迁移过程中最困难的是数据脚本编写。我们准备了近100个迁移脚本,将WordPress数据库中的数千条乃至数百万条记录转移至新结构表中。此外,区分和关联土耳其语与英语数据也是复杂环节。
负载测试显示,新基础设施消除了原有瓶颈,响应时间有所缩短,即时请求处理性能提升近10倍。同时,预计服务器成本将大幅降低。若正在开发或重写基础设施,需仔细计算投入产出比,确保时间与性能收益令人满意。
总结:当前基础设施及技术栈包括 PHP、Swoole、Laravel、Redis、Memcache、MySQL(AWS RDS)。图片存储选用 S3,媒体文件通过 AWS Cloudfront 和 Cloudflare 分发。(从成本角度推荐此方案)
支付系统已从 Payu 迁移至 iyzico。我们将 Bilet 销售、Webrazzi Insights 及 Insights Rapor 整合至统一平台,并将实时错误状态推送至内部通讯频道,加快了对罕见错误的响应速度。会话及长期缓存数据使用 Redis 存储;重要性较低但需短期缓存的数据则在服务器内运行 Memcache 保存。
新设计
Sherpa 提供设计稿后,我们于2019年12月启动前端转化工作。为避免重复劳动,直接基于 Laravel Blade 模板引擎编码,既能实时预览数据集效果,又能通过模块化实现代码复用。
在设计转码过程中,Zeplin 发挥了关键作用。获取设计师绘制的样式细节及 CSS 文件极大提升了效率。
建议在设计机构介入前明确网格结构。我们在界面骨架中使用了带12列网格的 Bootstrap 4。虽曾考虑 Reactjs 或 Vuejs,但受限于工期,交互功能最终通过 jQuery 实现,未来或可进一步优化。
新设计中大部分交互经由自研 API 服务 完成,旨在满足未来的 API 需求。
想了解更多吗
常用开发工具为 PHPStorm 和 Sequel Pro;设计方面使用 Sketch 和 Zeplin;项目管理采用 Trello。
云服务依托 AWS,具体服务包括 EC2、RDS、ElastiCache、S3、Cloudfront、Route53、SNS 和 VPC。Google 服务则涉及 Maps、Firebase 和 TextToSpeech。
希望本文能为关注相关技术选型或寻求建议的读者提供参考。

