高级如何使用 亚马逊云科技 Step Functions 加速向 SaaS 的迁移

作者:Graeme Wilson,首席移民架构师 — Is lam Mahgoub 提升, 高级
解决方案架构师 — 亚马逊云科技

Advanced-AWS-Partners-2023
Advanced
Advanced-APN-Blog-CTA-2023

Advanced Care Cloud 是在亚马逊网络服务 (亚马逊云科技) 上运行的软件即服务 (SaaS) 解决方案,它使不同规模的护理组织能够随时随地有效地管理其整个业务。

在这篇文章中,我们将介绍 高级 版如何 使用 亚马逊云科技 Step Fun ctions 来协调解决方案的入门流程和数据迁移活动。我们将讨论 Advanced 通过利用 Step Functions 而不是构建自定义编排功能所获得的优势。

我们还将探讨高级版如何使用 亚马逊云科技 云开发套件 (亚马逊云科技 CDK) 来编写和部署所有迁移资产,从而提供最佳的 DevOps 体验。

Advanced 是一家英国商业软件和服务提供商,业务涉及多个垂直领域,包括医疗保健、人力资源、教育、现场服务管理等。作为 亚马逊云科技 精选等级服务合作伙伴 ,Advanced 还是大型机迁移服务的领先国际提供商,在过去的四十年中,已在全球所有行业交付了 500 多个项目。

背景

Advanced 希望能够将现有客户从传统的高级和第三方解决方案迁移到其 SaaS 解决方案。这涉及数据迁移活动,这些活动包括提取、转换、加载 (ETL) 等传统支柱,但在导入之前需要对源数据进行复杂的转换。这些传统解决方案有时由 Advanced 托管,但通常是部署在客户驻地的自托管客户端-服务器应用程序。

自动化是此次迁移的关键要求,因为Advanced希望在相对较短的时间内迁移大量现有客户。Advanced 希望尽可能重复使用现有的软件资产,特别是因为它具有广泛且经过验证的将数据导入 SaaS 产品的方法。

该公司还希望重复使用客户迁移过程的特定部分来吸引新客户。最后,Advanced 希望能够全面检查和审计每位客户的迁移,迁移可能需要几个小时才能完成,涉及电子文档和关系数据,包括个人身份信息 (PII) 和患者数据。

挑战与目标

  • Advanced 拥有数百个客户,每个客户都有成千上万的个人用户,他们在很短但临时的时间内迁移到其 SaaS 解决方案。
  • Advanced 迁移客户的传统软件已有 10-20 年的历史了。就架构与SaaS解决方案的兼容性而言,不能认为任何事情都是理所当然的,而且数据质量可能很差。
  • 迁移是一个复杂的过程,有许多步骤通常涉及不同的团队和技术,因此,要使迁移具有成本效益,就需要尽量减少人工干预。工作流程通常比单班需要更长的时间才能完成,而且所需的不同技能使一个人无法依次地 “运行” 所有步骤。
  • 此外,自动化是一个好处,因为Advanced需要能够运行可重复的试用迁移,以便及早发现错误,还需要为客户创建用户接受度测试 (UAT) 环境。

解决方案概述

通常,高级版正在迁移客户的传统应用程序是本地应用程序。它们要么是基于表单的用户界面 (UI) 的经典客户端服务器,要么是基于本地托管的 Web 和数据库服务器(通常是 Microsoft SQL Server)的早期.NET 框架和 ASP.NET 上的基于 Web。

我们将重点介绍 Advanced 如何仅允许其中一个传统应用程序的用户迁移到 Advanced Care Cloud 解决方案。同样的原则将用于其他传统应用程序。

让我们从下图开始,该图表描述了 Advanced Care Care Cloud 的高级架构。请注意,由于本文的重点是迁移,因此诸如多租户和身份管理之类的某些细节已被隐藏。

Advanced-Step-Functions-Migration-1

图 1 — SaaS 解决方案的高级架构。

亚马逊弹性计算云 (亚马逊 EC2)实例用于托管网络服务器,而 亚马逊 Aurora (兼容 MySQL)用作后端数据库,适用于 Redis 的 亚马逊 ElastiCache 用作缓存层

客户对应用程序的使用在一天中差异很大,因此构建一个可根据负载向上和向下扩展的弹性架构将有助于 Advanced 避免过度配置资源以处理高峰活动级别的业务运营。因此,降低成本和提高Advanced满足用户需求的能力至关重要。为了实现这一目标,利用了 自动扩展组 Amazon Aurora Serverless v2

Amazon Aurora Serverless 是亚马逊 Aurora 的按需自动扩展配置。它会根据应用程序的需求自动向上或向下扩展容量。在这种情况下,它允许 Advanced 在不管理数据库容量的情况下在 亚马逊云科技 上运行数据库层。

亚马逊弹性容器服务 (亚马逊 ECS)和 亚马逊云科技 Fargate 用于托管 SaaS 解决方案的容器化组件。Amazon ECS 是一项完全托管的容器编排服务,可轻松部署、管理和扩展容器化应用程序。亚马逊云科技 Fargate 是一款无服务器即用即付计算引擎,可让您在不管理服务器的情况下专注于构建应用程序。

数据迁移要求

Advanced 的迁移工作流程需要将三种类型的数据迁移到新平台:

  • 来自关系数据库的常规行级数据。
  • Blob 数据,存储在关系数据库中,但需要移至 亚马逊简单存储服务 (Amazon S3)以使其可用于 SaaS 解决方案。
  • 结构化 XML 数据,作为 Blob 存储在源中,需要将其转换为 HTML 并存储在 S3 中。

Advanced 决定不直接将客户从其本地 SQL Server 数据库迁移,而是使用保存在S3中的数据的备份来运行。这允许整个迁移过程在 亚马逊云科技 中进行,并确保迁移过程不会出现本地中断。

此过程意味着客户会停机,因为一旦将备份传送到高级,就无法对其本地数据库进行更改。就Advanced而言,这是可以接受的,因为客户正在从客户端服务器软件转向基于云的解决方案。这需要对所有用户进行一些再培训,因为切换会影响所有用户。同时,使用旧系统自然会遇到困难,然后转向新软件。

客户可以使用 亚马逊云科技 Transfer Famil y 通过 SFTP 提供备份。这会将 SQL Server 备份放入 S3 中,并允许高级版使用 亚马逊关系数据库服务 (亚马逊 RDS) 中的 “从 S3 恢复” 功能使数据在 SQL Server for RDS 中可用。

迁移工作流程

简化的迁移工作流程如下图所示:

Advanced-Step-Functions-Migration-2

图 2 — 迁移工作流程。

管弦乐编曲

Advanced 决定使用 亚马逊云科技 Step Functions 来协调数据迁移过程中涉及的各种活动。Step Functions 提供无服务器编排,允许客户构建分布式应用程序、自动化流程、协调微服务以及创建数据和机器学习 (ML) 管道。

与此形成鲜明对比的是,定制的迁移解决方案,例如服务或命令行可执行文件,在这些解决方案中,除开发人员以外的所有人都可以隐藏业务逻辑。进程状态需要在外部可视化,运行服务的主机需要权限和网络才能访问所有目标服务。

亚马逊云科技 Step Functions 提供工作流程的图形视图,允许高级构建者与他们的产品和支持团队讨论和可视化该流程。Step Functions API 提供的详细信息允许 Advanced 将工作流程状态和历史记录集成到其现有的监控和管理应用程序中。

此外,Step Functions 允许以简单的方式编排 亚马逊云科技 服务和 Advanced 自己的组件。无需考虑流程边界,因此步进函数可以在单个工作流程中协调在 亚马逊云科技 Fargate 中运行的 亚马逊云科技 API 和 Advanced 自己的 ASP.NET API 和.NET 框架命令行接口 (CLI)。

数据导入

Advanced Care Cloud 解决方案是本地应用程序的演变,因此,Advanced 具有现有的、经过充分测试的全面数据导入组件。

Advanced 希望继续使用该资产,而不必重写或重新实现数据导入,这是通过容器化实现的——现有资产已封装在容器中并部署到 亚马逊云科技 Fargate 上的 Amazon ECS 中。 数据迁移本质上是临时的,运行时间有限,因此非常适合 亚马逊云科技 Fargate。

使用 Fargate,高级版不必保持 EC2 实例始终处于运行状态即可执行数据迁移活动。取而代之的是,Fargate 容器是在数据迁移活动启动时创建的;它会一直运行到任务完成,然后终止。高级版仅为迁移任务在其运行期间请求的资源付费。

这是通过为组件创建命令行界面,然后将此 CLI 构建为可以在 ECS 中托管的 Docker 镜像来实现的。此任务通过 亚马逊云科技 步骤函数启动

摘要

总而言之,迁移涉及的步骤是:

  • 现有的数据导入组件要求将要导入的每个业务实体都采用 CSV 格式的数据(目前有 80 多个)。
  • 对于行级数据,亚马逊云科技 步骤函数调用 亚马逊云科技 Lambda 函数,该 函数对源数据库运行 SQL 脚本,并将未经清理的原始输出以 CSV 形式写入 Ama zon S3。
  • 步进函数会进一步调用 Lambda,它们通过 SQL 脚本提取 Blob 数据,每个对象也写入 S3。
  • 数据提取脚本完成后,使用 S3 批处理作业调用 Lambda 来清理和转换数据。
  • 经过清理和格式化的 CSV 文件放置在 S3 位置,准备导入 SaaS 产品的 MySQL 数据库。
  • 步骤函数调用 亚马逊云科技 Fargate 上的 Amazon ECS 任务来创建运行数据导入 CLI 的容器。

使用 亚马逊云科技 Step Functions 的另一个好处是能够使用 亚马逊云科技 CDK 来定义和部署整个迁移基础设施,包括步骤函数定义。这比在 JSON 中定义、编辑和版本控制状态机更容易,并且允许从高级 CI/CD 管道部署迁移解决方案。

除了基础设施即代码 (IaC) 的好处外,Advanced 还能够快速安全地修改更改并将其部署到解决方案的任何部分。

结论

将客户从传统的本地解决方案迁移到云托管解决方案非常耗时,而且容易出错。这会影响客户的信心和对质量的看法,需要人工投入才能确保维持客户关系并实现平稳过渡。

Advanced 使用 亚马逊云科技 Step Functions 来确保可以快速、重复地执行迁移的技术方面,并确保现有资产可以重复使用。它还可以确保最大限度地减少人工参与,从而减少项目团队的计划和日程安排要求。


Advanced-APN-Blog-Connect-2023


高级 — 亚马逊云科技 合作伙伴聚焦

Advanced 是 亚马逊云科技 合作伙伴 和英国商业软件和服务提供商,业务涉及多个垂直领域,包括医疗保健、人力资源、教育、现场服务管理等。

联系高级 | 合作伙伴概述


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。