Lyst Engineering Blog 中关于微服务的经验有哪些?
Lyst Engineering Blog 中与微服务直接相关的文章主要有两篇:一篇讲“我们建了什么”(Microservices at Lyst),另一篇讲“迁移过程中哪些工具让事情变简单”(Tools That Made Our Microservices Easier)。两篇合起来覆盖了从单一代码库到多个小型服务的迁移历程、配套工具,以及迁移中需要处理的问题。如果你关心的是电商或数据密集型团队如何落地微服务,这两篇是入口;如果你要找的是具体代码实现,博客只给出经验层面的描述,没有完整代码仓库。
两篇核心文章各讲什么
| 文章 | 侧重点 | 对读者的价值 |
|---|---|---|
| Microservices at Lyst | 微服务架构的整体建设情况 | 了解 Lyst 把系统拆成了什么样的服务集合 |
| Tools That Made Our Microservices Easier | 迁移到微服务后配套的工具链 | 了解工程师如何快速构建和部署自己的服务 |
从摘要可以确认的路径是:Lyst 从“单一代码库”走向“一组小型软件服务”,并且在这个过程中发现并沉淀了一批工具,让任何工程师都能较快地构建和部署自己的服务。这是两篇文章共同的主线。
迁移历程:从单一代码库到多个小型服务
博客对这段历程的表述是“how we've handled the move to microservices at Lyst: from a single codebase to a collection of small software services”。可以确定的信息有:
- 起点是单一代码库(single codebase),终点是多个小型服务(a collection of small software services)。
- 迁移不是一次性动作,而是被“handle(处理/应对)”的过程,说明中间存在需要持续解决的问题。
- 迁移完成后,团队关注的重点转向“让工程师能自助地构建和部署服务”,而不是由少数人集中维护。
至于拆分的具体服务数量、拆分顺序、按什么边界拆分,博客摘要没有给出,需要点进原文确认。
让微服务变简单的工具
“Tools That Made Our Microservices Easier”这篇的摘要明确写了目标:发现“for any engineer to quickly build and deploy their own services”的工具。也就是说,工具链要解决的核心问题是降低单个工程师构建和部署服务的门槛,而不是只服务平台团队。
如果你在做类似的迁移,可以据此对照自己团队缺哪一环:
- 新服务从零到可部署,需要多长时间?
- 部署是否依赖某个特定团队或特定人?
- 普通业务工程师能否独立完成一次服务上线?
这三个问题对应的是博客里“quickly build and deploy their own services”所指向的能力。具体用了哪些工具、什么语言栈,摘要未列出,需查阅原文。
落地过程中要处理的挑战
博客没有单独列一节讲“挑战”,但从相关文章的分布可以看出 Lyst 在微服务化过程中同时处理了这些相邻问题:
- 会话数据迁移:Django Session store and DB Router 一文讲的是如何把 70GB 的 sessions 数据迁移到新的存储,用自定义 SessionStore 类和 db router 实现。服务拆分后,会话这类跨服务的状态需要重新安排存放位置。
- 数据库变更:Altering a Postgres Column with Minimal Downtime 讲的是理解依赖和锁,把迁移停机时间降到最低。服务多了以后,数据库 schema 变更的影响面需要单独控制。
- 测试环境:Getting to grips with Selenium 提到团队在改进测试栈,并回顾了转向 Docker 后旧测试难以维护的问题。服务数量增加会放大测试环境的复杂度。
- 服务性能:Basic service performance tuning 用 New Relic 和 Python profiler 做基础性能调优,属于单个服务层面的运维动作。
这些文章不是微服务专题,但都是微服务落地时会连带出现的工程问题,可以当作配套阅读。
怎么用这些内容
如果你的目标是判断要不要拆微服务,先读 Microservices at Lyst,看它的拆分动机和结果是否符合你的场景;再读 Tools That Made Our Microservices Easier,评估自己团队有没有能力补齐同等的工具链——工具链缺失往往是拆分后效率反而下降的原因。
如果你的目标是已经决定拆、想知道要准备什么,按上面的挑战清单对照:会话与状态怎么放、数据库变更怎么控停机、测试环境怎么跟上、单服务性能怎么观测。Lyst 的经验是这些问题在迁移过程中都会出现,需要提前或同步解决。
需要提醒的是,博客文章是经验分享,不含可直接复用的完整方案;具体的服务划分方式、工具选型和代码实现,需要以原文和 Lyst 的 GitHub 为准。