网站深度测评
Lyst Engineering Blog是什么网站?
Lyst Engineering Blog 是英国时尚电商平台 Lyst 的工程团队官方博客,用来分享他们在架构、数据科学和工程文化上的实践。
主要讲什么
从首页文章看,内容集中在几类主题:
- 工程文化与工作方式:如《Our Engineering Culture》介绍团队的工程原则。
- 后端与基础设施:微服务改造、Django 会话存储迁移、Postgres 列变更时的低停机迁移。
- 性能与测试:用 New Relic 和 Python profiler 做服务性能调优、用 Selenium 改进测试栈。
- 数据科学与机器学习:理解时尚搜索查询的 ML 模型、时尚相关的机器学习模型、数据科学 journal club 的运营经验。
- 团队与活动:Hackday、PyData London 参会记录、工程师访谈、bug bounty。
适合谁看
- 做电商或推荐/搜索的工程师,想看真实规模的搜索与 ML 落地经验。
- 正在做单体拆微服务、数据库迁移、会话存储改造的后端团队。
- 关注工程文化和团队实践的 tech lead。
和其他技术博客的侧重差异
它不像 Meta Engineering 那样偏超大规模基础设施,也不像 Netflix Tech Blog 主打流媒体与云原生,而是围绕时尚电商这个具体业务:搜索意图理解、商品匹配、以及支撑这些的中小型服务架构。
怎么用
把它当案例库而非教程:想解决具体问题时,先按上面主题找对应文章,再结合自己系统的规模判断哪些做法可迁移。
Lyst的工程文化和工作原则有哪些?
Lyst 工程博客把“我们如何工作”单独作为一篇文章放在首页入口,标题就是 Our Engineering Culture,并指向一份 engineering principles。可见他们更愿意把文化写成可执行的原则,而不是口号式的介绍。
从博客内容看,Lyst 工程文化的几个特点:
- 工程实践公开复盘:例如用 75,000 个 Pull Request 分析代码评审习惯,属于把内部流程拿出来做数据化回顾,而不是只讲结论。
- 重视服务性能与稳定性:有 New Relic 与 Python profiler 做性能调优的实操记录,也有“以最小停机时间修改 Postgres 列”这类面向生产环境的迁移经验。
- 微服务是既定方向:博客专门写了 Microservices at Lyst 以及“让微服务更顺手的工具”,说明他们从单一代码库迁移到多个小服务,并关注工程师能否快速自建、部署服务。
- 数据科学与机器学习是核心团队之一:从时尚搜索查询的机器学习模型、时尚模型(机器学习模型)到数据科学 journal club,能看出数据科学团队在业务里有实际落点,同时也在意团队内部的知识分享氛围。
- 测试与基础设施持续投入:Selenium 相关文章提到测试栈老化、维护不足的问题,并说明他们在 Docker 迁移后重新改善测试环境——属于承认历史包袱、再动手改造的风格。
- 有安全与外部协作机制:博客设有 bug bounty,用报酬换取漏洞报告。
- 关注工程师个人角色:What I Do at Lyst 系列会具体介绍 Operations Engineer 等岗位的日常工作,帮助外界理解团队分工。
如果你关心的是“工作原则”原文,最直接的动作是打开 Lyst Engineering Blog 首页,进入 Our Engineering Culture 下的 engineering principles 一文。其余文章更适合当作这些原则的实例:想了解代码评审看 Pull Request 分析,想了解生产运维看 Postgres 迁移和性能调优,想了解团队协作看数据科学 journal club。
如何用New Relic和Python profiler做基础服务性能调优?
Lyst 工程博客里有一篇正好对题的文章:Basic service performance tuning New Relic and the python profiler,讲的是用 New Relic 加 Python profiler 做基础的服务性能调优。可以把它当作一个“从监控到定位再到验证”的入门流程来看。
这两类工具各自解决什么
- New Relic:负责线上视角。它告诉你哪个服务、哪个接口、哪段事务变慢了,以及慢在整体链路里的位置。适合先圈定“哪个服务有问题”。
- Python profiler:负责代码视角。它告诉你这个服务内部,时间具体花在哪个函数、哪一行调用上。适合在圈定服务后,精确到代码级热点。
两者是先后关系:New Relic 缩小范围,profiler 深挖原因。
一个可操作的顺序
- 在 New Relic 里找出响应时间、吞吐或错误率异常的服务与事务。
- 确认是持续变慢还是尖峰,排除流量、依赖服务、数据库等外部因素。
- 在对应服务上跑 Python profiler,采集真实请求或代表性负载下的调用数据。
- 看 profiler 输出里的累计耗时和调用次数,找“调用多且单次不便宜”的函数。
- 改完后再回到 New Relic 对比同一指标,验证是否真的改善。
适合谁、什么场景
- 服务刚上线、流量上升后开始变慢,还没有专门性能团队的工程小组。
- 想建立最基础的性能调优习惯,而不是一上来就做复杂压测或全链路追踪。
- 后端以 Python 为主、已经接入或准备接入 New Relic 的团队。
选择条件
如果你还没有线上监控,先上 New Relic 这类 APM 比直接上 profiler 更划算,因为 profiler 需要你先知道去哪个服务上跑。反过来,如果 New Relic 已经指出某个服务慢,但你看不出代码原因,就该上 profiler。两者缺一,调优容易停在“知道慢但不知道为什么”或“优化了但不知道有没有用”。
下一步
直接读 Lyst 那篇原文,按它的步骤在自己的一个非核心服务上走一遍完整流程。想扩展阅读,可以顺带看同一博客的 Microservices at Lyst 和 Tools That Made Our Microservices Easier,理解服务拆分后性能问题为什么更需要这类工具配合。
如何对Postgres列进行改动并最小化停机时间?
Lyst Engineering Blog 有一篇专门讲这个问题的文章《Altering a Postgres Column with Minimal Downtime》,核心思路是:先搞清楚改动会牵扯哪些依赖和锁,再设计迁移步骤,把停机压到最低。
关键点
- 先查依赖:列被哪些视图、外键、索引、默认值引用,改动前要摸清,否则迁移会失败或阻塞。
- 理解锁行为:不同
ALTER TABLE操作拿的锁级别不同。加列、改默认值、改类型,对表的阻塞程度差别很大,文章强调先弄清锁再动手。 - 拆分迁移:把一次大改动拆成多步小操作,避免长时间持有排他锁。
适用场景
- 线上表数据量大,不能接受长时间写阻塞。
- 需要改列类型、加约束或改默认值,且业务仍在读写。
- 团队用迁移工具(如 Django migrations)管理 schema,想减少发布期间的不可用窗口。
下一步
建议直接读原文,按它给的依赖检查和锁分析流程,先在你的库上做一次演练,再决定迁移顺序。配合 PostgreSQL 官方文档 的 ALTER TABLE 锁说明一起看,能更准确判断每步的影响。
Lyst如何用机器学习理解时尚搜索查询?
Lyst 工程博客里有一篇专门讲这件事的文章:A machine learning model to understand fashion search queries,副标题是“理解用户意图,并把它映射到我们的库存”。核心目标就是解决时尚搜索里“词不达意”的问题——用户输入一个模糊、口语化甚至带风格描述的查询,系统要判断他真正想找的是什么商品,再从商品库里匹配出对应结果。
从博客目录能看到,这项工作属于 Lyst 数据科学团队的范畴,和他们的时尚机器学习模型、搜索相关文章放在一起。具体做法可以顺着这篇原文读下去;这里只能确认它解决的问题方向,不能替它补充资料里没有的模型细节。
如果你想理解这类系统通常怎么落地,可以按这个思路看:
- 理解查询:把用户输入解析成意图,而不是只做字面关键词匹配。
- 映射库存:把意图对应到平台实际在售的款式、品类、属性上。
- 时尚场景的特殊性:同一件衣服可能被描述成风格、场合、材质、品牌等多种说法,纯关键词搜索容易漏掉。
想进一步了解 Lyst 工程实践,可以看 Lyst Engineering Blog,上面还有微服务、Postgres 迁移、数据科学 journal club 等文章。
Lyst的微服务架构是怎么搭建的?
Lyst 的微服务架构是从单体代码库逐步拆分出来的。Lyst Engineering Blog 里有一篇《Tools That Made Our Microservices Easier》专门讲这个过程:他们从单一代码库迁移到一组小型服务,并配套建设了让工程师能快速构建、部署自己服务的工具链。
从博客可见的几个关键点:
- 迁移路径:不是一开始就设计成微服务,而是从单体应用演进而来,所以重点放在“如何让拆分后的服务好维护”上。
- 工具优先:他们花力气做内部工具,目标是任何工程师都能自助建服务、部署服务,而不是依赖专门的运维团队。
- 配套改造:拆分过程中还处理了会话存储等基础设施问题,比如把 70GB 的 sessions 数据迁到新存储,用自定义 SessionStore 类和 DB router 实现(《Django Session store and DB Router》)。
- 组织与文化:博客里另有《Our Engineering Culture》和工程原则的内容,说明架构选择和他们强调的工程文化是绑在一起的。
什么情况下值得参考
如果你是中小团队、正从单体往微服务走,Lyst 的经验更贴近“边跑边拆”的现实路径,而不是大厂那种全新设计。它强调的是配套工具和基础设施改造,而不是服务拆分的理论模型。
想深入了解可以看哪里
- 直接看《Tools That Made Our Microservices Easier》和《Microservices at Lyst》两篇,前者讲工具链,后者讲整体建了什么。
- 如果关心数据层拆分,看《Django Session store and DB Router》。
- 想看他们的工程原则,从首页的《Our Engineering Culture》进入。
需要注意的是,博客没有给出完整的架构图或技术栈清单,具体组件选型要读原文才能确认。
用户评价(0)