"SKYLOGIQ" The moon can't shine on its own.
旗舰业务

Rust 迁移

那些您已无法再放心留在原有编写语言中的系统,在持续运行的同时迁移到 Rust。

政策要求

政策要求

2024 年 2 月,继 CISA、NSA 及盟国机构发布指导意见之后,白宫国家网络总监办公室呼吁科技行业采用内存安全的语言。政府和关键基础设施领域的采购框架开始要求提供内存安全路线图。方向已定。对每一个运行着大量 PHP、C++、Java、Node 或 Python 系统的组织来说,问题在于:迁移是按自己的时间表规划,还是按别人的时间表被迫进行。

零停机

我们如何做到不停机迁移

gateway一个开关,数秒内可回退
legacy::servicePHP · Node · Java · C++ · Python
rust::service镜像流量
parity::verify生产流量上 old == new
cut_over()随后下线
  1. 系统梳理。

    每个服务、依赖、数据流和调用方,全部记录在案。大多数组织会发现一些自己都忘了的系统。

  2. 排序。

    按风险、价值和耦合度为服务排序。第一次迁移的选择是为了验证方法,而不是为了逞英雄。

  3. 绞杀者模式。

    新的 Rust 服务部署在旧服务旁边,接收镜像流量,产出的结果会被自动比对。

  4. 一致性验证。

    只有当新旧系统在真实生产流量上结果一致时,迁移才会推进,需要多久就等多久。

  5. 切换,一次一个服务。

    流量通过一个数秒内即可回退的开关转到 Rust。

  6. 下线与交接。

    旧服务退役,文档完整,您的团队已接受新服务的培训。

源 → 目标

适合迁移的系统

  • PHP 单体应用(Laravel、Symfony、遗留代码)迁移为 API 网关后的 Rust 服务
  • 存在吞吐量或内存问题的 Node.js 服务
  • 许可、内存或延迟成本已成为结构性问题的 Java 和 C# 服务
  • 有内存安全事故历史的 C 和 C++ 组件
  • 瓶颈就在 Python 本身的 Python 数据与推理管道
坦诚

我们坦诚告诉客户的事

不是所有东西都该迁移。

财务部四个人用的报表工具,留在 PHP 里。处理您收入的支付路径,则不然。我们在第二周产出的系统地图就是讨论这件事的地方,它也是整个合作中最有价值的文件。

支撑您业务运转的系统,应当由运营过同类系统的人来构建。

The moon can't shine on its own.