---
title: "云迁移服务"
canonical: https://wavect.io/zh/services/cloud-migration/
language: zh
description: "把工作负载迁入云端、在云服务商之间迁移或迁回自建环境：先盘点，再以基础设施即代码构建，并演练切换与回退。"
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

云迁移

# 先演练切换、留好退路的云迁移。

基础设施迁移的难点，大多在没人写下来的地方：隐藏的依赖、难以搬动的数据，以及形态会改变的成本。我们盘点正在运行的内容，设计目标环境，用代码描述它，并在生产环境迁移前演练切换和回退。

合作范围

## 弄清在运行什么。用代码重建。演练切换。

1. **盘点** 工作负载、数据、依赖关系及其负责人。
2. **用代码构建目标环境** 经过审查、可复现、能够交接的环境。
3. **演练并切换** 分批迁移，每批都有检查和回退负责人。

服务概要

云迁移是把约定的工作负载迁入云端、在服务商之间迁移，或迁出到自建基础设施。服务包括盘点、目标架构、基础设施即代码、带回退方案的切换演练，以及新环境成本的可见性。

适合这些情况

- 希望从手工管理的服务器转向可复现环境的团队
- 因成本或可控性考虑更换服务商，或把工作负载迁回自建环境的企业

其他服务可能更合适

- 加固一个你打算继续使用的环境
- 在迁移过程中重写应用本身

## 先想清楚为什么迁，再决定迁到哪里

成本、可控性、数据存放地点、即将到期的合同，或者平台已不再合适，都是合理的理由，而每个理由都会改变目标环境。迁移可以是迁入云端、在服务商之间迁移，也可以是迁出云端到自建服务器。如果现有环境本身没有问题，只需要更安全的访问和恢复， [云安全服务](/zh/services/cloud-security/) 更合适。构建与发布流水线中的控制属于 [DevSecOps 服务](/zh/services/devsecops/) 。如果应用本身需要改变架构，请按 [遗留系统现代化](/zh/services/legacy-modernization/) 来规划；在迁移的同时重写应用，会让每一步的风险翻倍。

## 把现在运行的内容，变成可以重建的目标环境

服务商和平台是否适配，在确定范围时确认。我们不预设一种通用的多云服务。

盘点与依赖

工作负载、数据存储、DNS、证书、定时任务、外部集成、IP 白名单，以及每一项的负责人。

目标架构

按工作负载选择托管服务、容器、虚拟机或自建服务器，并把成本、厂商锁定和运维投入之间的权衡写清楚。

基础设施即代码

用版本化的代码描述目标环境（例如 Terraform 或 OpenTofu），使其可以审查、重建和交接。

成本可见性

为资源打标签，设置预算和告警，并把预期账单与旧环境对比。在真实流量运行之前，估算始终只是估算。

## 演练切换和回退

每一批迁移都包括：数据传输或同步方案、DNS 和证书步骤、必要时的变更冻结、证明新环境正常服务的检查，以及指定负责人的回退触发条件。切换后写入的数据不一定能自动回流，因此方案会写明回退在多长时间内仍然可行、需要付出什么代价。如需停机窗口，会提前约定。

## 示例验收：在预发布副本上演练切换

在预发布副本中，团队按照切换手册把流量切到新环境，执行约定的功能和数据检查，然后再切回。记录包括手册版本、耗时、数据检查、发现的问题和限制。这是验收方式的示例，不是客户成果，也不是零停机承诺。

## 规划、分批迁移、交接

每个阶段开始前确认范围和报价。持续运维是另一项职责，不是迁移项目的默认延伸。

1. **评估与规划** - 获得盘点结果、附带权衡说明的目标方案、分批迁移计划，以及列明假设的成本估算。
2. **构建与迁移** - 获得基础设施代码、已迁移的工作负载，以及每次切换的验证记录。
3. **交接** - 获得运行手册、访问权限模型和成本报告。之后由谁运维哪些部分会明确约定；Wavect 不提供全天候运维中心，也不提供可用性 SLA。

## 准备账单、架构资料和有权批准变更的人

我们首先需要账户和托管环境的只读访问权限、架构说明、当前账单、数据量、数据存放要求、可接受的维护窗口，以及有权批准生产变更的人。如果迁移发生在供应商交接之后，可查看 [软件接管](/zh/services/software-takeover/) 中的 [运营独立性演练](/zh/services/software-takeover/#operational-independence) ，其现有适用条件和条款不变。迁移完成后对应用的持续照料属于 [软件维护](/zh/services/software-maintenance/) 。

// 实证

## 现有工程项目中的基础设施迁移实践

Hyperstate AI 案例记录了把一台手动部署、GPU 负载很重的单一服务器迁移为容器化、编排化的服务，并用托管方案替换自行维护的高算力库。Twinsoft AI 案例记录了在打造可用于试点的重建版本时，同步构建的 Terraform 基础设施。IKB 案例记录了扩展运行 ChirpStack 的 Kubernetes 集群，这是 Wavect 在 IKB 自有项目内部参与的工程工作，并已完整移交给 IKB 团队。这些案例都不是完整的跨服务商数据中心迁移，属于相关的基础设施工作，不保证取得相同结果。

### [Hyperstate AI](/zh/case-studies/hyperstate-ai/)
- **状态:** 已关闭
- **成果:** GPU 单体 - → 微服务
- **概要:** 把 GPU 重负载的单体拆成编排化的服务，把自托管 ML 库换成可扩展的替代方案，延迟和成本双降，部署也变成例行公事。
- **技术栈:** Python, Django, OpenAI API

### [Twinsoft AI](/zh/case-studies/twinsoft-ai/)
- **状态:** 上线
- **成果:** 2周 - 到可销售的MVP
- **概要:** 把 vibe-coded 原型推到企业试点就绪，没有走捷径。
- **技术栈:** Python, Flask, LLMs

### [IKB](/zh/case-studies/ikb/)
- **状态:** 上线
- **成果:** 完整 - 平台交接
- **概要:** 因斯布鲁克的智慧城市物联网：扩展并扩容 LoRaWAN 基础设施，评估并集成多厂商设备，编写按设备的编解码器。与 IKB 自己的团队并肩。
- **技术栈:** Kubernetes, LoRaWAN, Docker

这些是精选项目，并非我们的全部作品。自 2018 年以来我们已交付 100+ 款产品。

## 开始前的常见问题

### 你们支持哪些云服务商？

报价前会确认服务商、架构和所需专业能力。常见目标包括 AWS、Google Cloud、Azure 和 Hetzner，或自建的 Docker 与 Kubernetes。书面范围会列出覆盖的环境。

### 迁移会导致停机吗？

方案会在数据允许的范围内尽量缩短停机。任何停机窗口都会提前约定，并在副本上演练。我们不对所有系统承诺零停机。

### 可以帮我们迁出云端吗？

可以。出于成本或可控性考虑，迁到自建服务器可能是合理的。方案会把这一点与团队需要承担的运维工作对比，例如打补丁、备份和硬件维护。

### 迁移会降低我们的账单吗？

不会自动降低。我们根据盘点结果估算新成本，并设置预算和报告，让你在真实流量运行后看到实际账单。节省成本是需要验证的目标，不是承诺。

### 迁移完成后由谁运维环境？

在切换前约定：可以是你的团队、现有服务商，或在约定范围内由 Wavect 负责。新环境的加固属于 [云安全服务](/zh/services/cloud-security/) 。

## 选择下一步

- [加固你要保留的环境](/zh/services/cloud-security/)
- [保障构建与发布流程](/zh/services/devsecops/)
- [改变应用架构](/zh/services/legacy-modernization/)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/zh/services/cloud-migration/#service",
      "@type": "Service",
      "areaServed": [
        {
          "@type": "Country",
          "name": "Austria"
        },
        {
          "@type": "Place",
          "name": "Worldwide"
        }
      ],
      "category": "安全与运维",
      "dateModified": "2026-10-30",
      "description": "把工作负载迁入云端、在云服务商之间迁移或迁回自建环境：先盘点，再以基础设施即代码构建，并演练切换与回退。",
      "name": "云迁移服务",
      "provider": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "serviceType": "云迁移",
      "url": "https://wavect.io/zh/services/cloud-migration/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/zh/",
          "name": "首页",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/zh/services/overview/",
          "name": "服务",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/zh/services/overview/#security",
          "name": "安全与运维",
          "position": 3
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/zh/services/cloud-migration/",
          "name": "云迁移",
          "position": 4
        }
      ]
    },
    {
      "@id": "https://wavect.io/zh/services/cloud-migration/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-10-30",
      "description": "把工作负载迁入云端、在云服务商之间迁移或迁回自建环境：先盘点，再以基础设施即代码构建，并演练切换与回退。",
      "inLanguage": "zh",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "mainEntity": {
        "@id": "https://wavect.io/zh/services/cloud-migration/#service"
      },
      "name": "云迁移服务",
      "url": "https://wavect.io/zh/services/cloud-migration/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "报价前会确认服务商、架构和所需专业能力。常见目标包括 AWS、Google Cloud、Azure 和 Hetzner，或自建的 Docker 与 Kubernetes。书面范围会列出覆盖的环境。"
      },
      "name": "你们支持哪些云服务商？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "方案会在数据允许的范围内尽量缩短停机。任何停机窗口都会提前约定，并在副本上演练。我们不对所有系统承诺零停机。"
      },
      "name": "迁移会导致停机吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "可以。出于成本或可控性考虑，迁到自建服务器可能是合理的。方案会把这一点与团队需要承担的运维工作对比，例如打补丁、备份和硬件维护。"
      },
      "name": "可以帮我们迁出云端吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不会自动降低。我们根据盘点结果估算新成本，并设置预算和报告，让你在真实流量运行后看到实际账单。节省成本是需要验证的目标，不是承诺。"
      },
      "name": "迁移会降低我们的账单吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "在切换前约定：可以是你的团队、现有服务商，或在约定范围内由 Wavect 负责。新环境的加固属于云安全服务。"
      },
      "name": "迁移完成后由谁运维环境？"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
