【AWS征文】业务迁移上云秘籍

1、为何迁移上云

目前仍是有很多的中小企业把本身的业务工做负载放置在本地数据中心,面对着日益增大的业务量,本地数据中心开始慢慢凸显出一些弊端,难以知足企业新型业务的需求,而且购买以及更新设备都须要企业提早支出一大笔资金,不少中小企业难以承受其中的压力,经过迁移上云咱们能够避免本地数据中心面临的一些问题。docker

  • 下降建设及运维成本:托管本身的服务器基础结构须要对硬件,软件,电力和人员进行大量的投资,迁移到云解决方案显著下降资本支出。数据库

  • 减小硬件更新成本:无论是本地托管仍是托管提供商处托管,更换硬件都将是繁杂的工做,还须要企业马上投入全部硬件的费用。
  • 解决软件支持终止问题:应用程序可能依赖支持即将终止的其余软件或者操做系统,迁移到 AWS能够为这些依赖关系提供扩展的支持选项,最大程度减小重构要求。
  • 简化维护工做:不少系统的维护成本甚至超过它们的开发成本,采用云模式服务后基础平台的维护在云服务提供商。
  • 有效控制投资风险:系统在开发过程的任何阶段都有失败的可能,但在开发的初期就要进行硬件投资,一旦失败前期的投资没法收回,采用云服务试错成本低。
  • 敏捷与效率:自由的进行实验,更快速的开发。
  • 灵活性:云的弹性可扩展,支持在线扩容。根据负载大小,弹性可伸缩。
  • 全球化:在云中很是方便的把业务迁移到另外一个地域。
  • 多样性:第一时间体验到最早进的技术,如人工智能,机器学习,大数据,物联网等。
  • 安全性:云平台采用冗余、多副本机制,云平台专用企业级防火墙,可自定义安全等级部署,云平台中有各类安全服务,保障咱们的业务顺利进行,以及云服务知足各地域的法律法规。

2、迁移规划

当企业使用 AWS,能够实现按需高效、安全地运行资源,只需短短几小时,就能使企业以远胜从前的效率,敏捷地实现创新,再无需等待数月时间。那企业上云,想更快更好地将原有服务作迁移,制定迁移计划须要注意哪些问题?本篇文章将与你系统探讨 AWS 迁移模式。后端

迁移流程

在众多的迁移上云案例中,你们慢慢总结出了一个相对标准的迁移流程,按照这些流程进行业务迁移,能够提高咱们的迁移效率,以及少走一些弯路。tomcat

  1. 资源评估:须要对本地业务资源有一个总体的了解,列出一个业务清单,记录环境中的物理和虚拟服务器。
  2. 发现和分析:对整理出来的资源进行分析,肯定是否适合上云,以及云中使用有相应的服务支持。
  3. 计划和设计:若是知足上云要求,咱们要制定迁移策略。
  4. 迁移,整合,验证:进行迁移,验证,以及业务切换。
  5. 运维和优化:利用云中的服务对咱们的业务进行管理和优化。

迁移评估

在开始规划以前设定云迁移的优先级和目标,从而确保迁移更加成功。此外,自动云迁移工具还可提供有关环境和依赖关系的看法,帮助制定云迁移项目计划。在企业计划迁移阶段,须要系统评估多方因素,其中包含业务因素、合规因素、安全因素、平台因素及人员因素等,这些是迁移的基础考量。安全

  • 业务因素:须要考量全部主要利益相关方,是否都支持业务案例和对迁移的承诺,而且是否有资金能够投入迁移工做;
  • 合规因素:须要看企业是否有符合合规标准的应用程序;
  • 安全因素:须要考虑到企业在数据保密性方面的主要挑战,而且采起了哪些控制措施;
  • 平台因素:须要肯定一系列试点应用程序,而且获得工做负载全部者的承诺;
  • 人员因素:须要验证企业的技能和能力,是否认义了运营的角色和责任。

借助 AWS 的云迁移评估工具 Application Discovery Service,它能够自动识别在本地数据中心运行的应用程序、其相关依赖关系和性能配置文件,让你可以制定本身的云迁移计划。服务器

运用此信息来映射服务器,从而呈现你的本地应用程序。这将有助于肯定服务器之间的依赖关系或通讯,让你可以在云迁移计划中包含全部必备的应用程序组件,从而帮助下降风险,确保顺利迁移。而后,按逻辑方式对服务器分组以呈现应用程序,并根据每一个应用程序的要求和迁移目标为其选择最佳的云迁移策略。网络

迁移策略

在肯定评估因素后,咱们展开讨论计划阶段最重要的迁移模式问题,这对企业而言相当重要。对此,AWS 系统总结了 6R 迁移理论提供参考,包括:保留 (Retain)、停用 (Retire)、更换主机 (Rehost)、替换 (Replace)、更换平台 (Replatform)、重构 (Refactor),不一样的业务应用咱们能够采用不一样的迁移策略,企业根据应用的评估,选择不一样的迁移策略。架构

  • Retain:有些应用不能马上迁移,或者不容许迁移到云中,咱们继续留在本地数据中心
  • Retire:在评估过程当中,发现一些再也不须要的业务,咱们能够从数据中心删除。
  • Rehost:这种无代码选项一般称为“直接迁移”,可以让你快速将现有应用程序迁移到 AWS。每一个应用程序按“原样”进行迁移,既发挥了云的优点,又无需承担更改代码所带来的风险或成本。
  • Replace: 替换现有的应用。好比使用云中的 SaaS 服务替换咱们的应用。
  • Replatform:更改平台做为云迁移的一部分,好比将 Windows 更换成 Amazon Linux。
  • Refactor:对应用重构,而后迁移上云,好比更改后端数据库,中间件等,相对来讲比较复杂。

在迁移过程当中咱们不仅用到一种迁移模式,即便在一个应用程序栈中,企业也可能会遇到 2~3 个 “R”,咱们要充分分析应用程序,进行组合搭配,以达到最低的成本和最高的价值。负载均衡

3、迁移服务及工具

在了解了迁移上云的过程,以及迁移过程当中用到的一些策略以后,那么咱们开始对本地中心的应用进行迁移上云,咱们知道云数据中心中最重要的三项基础设施资源主要是计算、存储、网络,那咱们也主要以这三部分为你们介绍一下各自的迁移方法,以及相关的注意事项。less

网络迁移

本地数据中心的网络通常是私有网络,大部分是扁平化的网络,一些业务规模比较大的企业,他们都有本身的网络工程师来规划相对复杂的网络,网络迁移的复杂程度主要取决于本地数据中心的网络复杂程度,至于如何把本地网络迁移到 AWS 中,咱们也须要根据不一样的状况去考量。

在 AWS 云中,咱们是经过 VPC 来实现私有网络建设的,VPC 的各项功能基本能够知足企业网络的各项需求,那咱们该如何去设计咱们的网络呢?

  • 彻底复制:应用程序里面嵌入了服务器的私有 IP,总体迁移不去修改代码,而且没有计划使用混合云模式,针对这一部分,咱们能够在 VPC 中创建一个和本地数据中心如出一辙的网络,拥有相同的 IP 地址块,可是须要注意,VPC 中的一些安全设定本地中心可能没有,好比 NACL、Security group 等。
  • 混合云模式:有些企业部分应用迁移上云,而且将来规划混合云的模式。针对这种状况,咱们在 VPC 中设计的网络,其 IP 地址块与本地数据中心的 IP 地址块不能重合,既然是从新规划 IP 地址范围,那咱们尽可能每一个子网的分配的 IP 数量多一些。

本地数据中心的网络冗余,高可用方案,须要精通高级网络的工程师来进行配置和维护,网络上云以后,全部的这些都由 AWS 来进行维护,企业的维护人员具有简单的网络知识便可维护,下降了网络管理的门槛,也为企业节省开支。

工做负载迁移

咱们把支撑业务运行的一些资源称之为工做负载,咱们能够把虚拟机、数据库、应用等粗略的规划在工做负载层面,下面咱们主要针对这几部分来讲一下迁移过程当中的状况,这也是咱们整个迁移最重要的环节。

虚拟机迁移

将虚拟机转移到云端有助于避免会形成巨大财务压力的更新周期。准备就绪后,咱们能够经过两种简单方式使用直接原样迁移策略进行迁移,咱们使用 Rehost 做为咱们的迁移策略。

第一种:咱们可使用 AWS Server Migration Service (AWS SMS) 将虚拟机从本地或其余云平台直接迁移到 AWS。AWS SMS 是一项免费的服务,它能够帮咱们把本地虚拟机增量的复制为可在 Amazon EC2 上部署的云托管的 Amazon 系统映像 (AMI),整个复制过程,咱们只须要支付迁移期间所使用的 S3 存储桶、EBS 卷和数据传输费用,以及所运行的 EC2 实例费用。

第二种:咱们也可使用 VMWare Cloud on AWS 解决方案将您的 VMware 虚拟机直接迁移到 AWS。 这意味着您现有的基于 VMware 的工做负载可从云端的性能、规模和安全性中获益,而无需在迁移时重写。

  • 注意事项
    • 由于是总体的搬迁服务器,要考虑到带宽是否知足,是否须要增长临时带宽。
    • 复制过程当中有可能会用到临时的一些磁盘,存储方面是否足够。
    • 防火墙的替换,云中没有物理防火墙,能够考虑使用 AWS 的安全组来替换。
  • 价值体现
    • 能够享受更低廉的价格以及更先进的配置。
    • 多区域节点选择。
    • 提升员工效率,由传统 IT 运维转移到业务上面。

数据库服务迁移

本地数据中心的数据库服务,通常都是在物理机或者虚拟机上面,由运维人员部署,针对数据库的迁移,咱们主要有如下注意事项以及解决方案:

  • 迁移策略:针对数据库,咱们能够选择的迁移策略有 Rehost 和 和 Replatform。

    • 针对 Rehost,咱们能够直接使用 AWS SMS 来进行迁移。
    • 针对 Replatform,就是咱们把本地自建的数据库服务转换为 AWS 的数据库服务,AWS 的数据库很丰富,基本涵盖了市面上的全部数据库,包括关系型数据库和非关系型数据库。
  • 注意事项
    • 兼容性要求,如:文件格式,字符集的兼容性要求,引擎的兼容要求。
    • 数据迁移的限制,如,服务商数据库名/表名保留字;是否影响业务及其程度;是否须要停服务以及停服务的时间。
    • 迁移工具的便利性,服务商指导。好的迁移方案&工具应该是尽量少人工操做,step by step,自动化。
    • 数据完整性校验,在数据迁移完毕进行切换前,必定要进行数据完整性验证,以保证数据被正确、完整的迁移。如:部分服务商不能提供完整性校验,或者在校验存在不一致时没法给出具体信息,实际也没法定位。
  • 价值体现
    • 云数据库的高性能,高可靠性,扩展性,灵活性
    • 大规模创新
    • 兼具有份、扩容、迁移等功能
    • DBA 不用再去维护数据库的安装,运行,高可用,备份等,把精力集中在数据库优化业务上面。

对于 Rehost 的迁移,咱们能够很方便地使用 AWS SMS 工具来完成,不过其中可能会有数据延迟,由于数据并非实时同步的,因此我通常推荐你们使用云中的数据库,他具备咱们传统自建数据库没有的一些优点。

AWS Database Migration Service (AWS DMS) 是一项云服务,可轻松迁移关系数据库、数据仓库、NoSQL 数据库及其余类型的数据存储。您可使用 AWS DMS 将数据迁移到 AWS 云,在本地实例之间(经过 AWS 云设置)进行迁移,或者在云与本地设置的组合之间进行迁移,使用 DMS 服务,能够保证咱们的源数据库和目标数据库数据实时同步,持续运行,使用这种模式,能够保证咱们的数据库迁移零宕机。

对于一部分用户,他想在上云以后换一种数据库引擎,好比 Oracle 转换成 Aurora MySQL,遇到这种状况,咱们能够借助 AWS Schema Conversion Tool 这项服务来帮助咱们完成,在使用 SCT 的时候,比较消耗内存,提升内存性能能够提升转换速度,但会占用台式计算机的更多内存资源。

应用迁移

在实现应用迁移上云的过程当中,通常会面临已有业务系统改造和新建业务系统两种场景。新建业务系统只须要按照应用上云的标准要求进行架构设计、研发、编码和测试便可,实现相对简单。已有业务系统迁移上云则须要对现有业务系统改造。

  • 迁移策略:

    • 对于 Rehost,使用 AWS SMS 服务能够方便地迁移整个应用程序技术栈上云,这种迁移相对来讲比较简单,迁移完成以后,修改一下后端数据库信息,切换 DNS 服务便可上线。
    • 对于 Refactor,这种状况会花费比较多的工做量,他须要用户重构应用程序代码,使其能够充分的去兼容云原生的一些服务,好比 Lambda,API GateWay,Elastic Beanstalk 等一些服务,以提升咱们应用程序的性能和安全。
  • 注意事项

    • 是否有相关的应用程序路线图
    • 有哪些相关的成本与此应用程序有关系
    • 有哪些改进选项可加强服务可用性
    • 若是不改变这个应用程序,是否有相关风险
    • 此应用是否与组织的技术目标互相一致
  • 价值体现
    • 可使用云原生的一些服务
    • 能够借助云中 DepOps 工具加速应用程序的测试与发布
    • 运维开发人员不用再去管理应用环境的配置,专一于应用代码的开发,提高效率

对于应用程序上云,咱们通常是先在云中彻底创建一套完整应用程序环境,等待程序测试无误以后,经过修改 DNS 来完成应用上云,应用稳定后,应用程序就能够逐步的有计划从本地中心移除。

容器迁移

随着近些年容器的流行,愈来愈多的公司会有一些服务运行在容器平台中。若是容器运行在单机上面,咱们通常直接使用 docker 命令运行,或者使用 docker-compose,对于运行在多机器上面的容器服务,咱们大部分使用的都是如今很流行的容器编排服务 kubernetes。

由于容器的特性,它能够把整个程序运行环境打包到镜像中,咱们不须要再单独为其配置运行环境,根据这方面特性,对运行在容器中的应用程序迁移上云变得简单了不少,用户不须要对代码进行任何更改便可完成迁移上云。

那么在 AWS 上面有哪些容器平台供咱们选择使用呢?相对于本地自建的容器平台又有什么优点?

在 AWS 云平台中,有两个容器编排工具供咱们选择,一个是 Amazon Elastic Container Service (ECS) 或 Amazon Elastic Kubernetes Service (EKS)。

  • 若是应用程序是运行在单机上面的,在云中最佳的选择是 ECS,ECS 是一项高度可扩展的快速容器管理服务,它可轻松运行、中止和管理集群上的 Docker 容器,ECS 与 Identity and Access Management (IAM)、Amazon Virtual Private Cloud (VPC) 和 Amazon Route 53 等 AWS 服务深度集成,并在安全性、可靠性和可用性方面进行了普遍的测试,以支持内部和客户的任务关键型服务。
  • 若是应用程序运行在 kubernetes 上的,在云中的最佳选择是 EKS,EKS 则是运行 Kubernetes 的最安全、可靠且可扩展的方式。EKS 提供的控制平面不只可扩展且高度可用,还能跨多个可用区运行,以消除单点故障。EKS 可运行上游 Kubernetes,而且经认证与 Kubernetes 一致,所以您能够得到社区中开源工具的全部优点。

在 AWS 上运行容器时,您有两个平台能够进行选择。首先,您能够选择是否要管理服务器。若是您想要进行容器的无服务器计算,请选择 AWS Fargate,若是您须要控制计算环境的安装、配置和管理,则选 Amazon EC2。

Fargate 是客户跨 ECS 和 EKS 在 AWS 上运行容器的首选方式。客户喜欢 Fargate 是由于它提供容器的无服务器计算,此服务可以使他们专一于构建其应用程序。使用 Fargate,您无需预置和管理服务器,并且能够为每一个应用程序指定资源并为其付费,并经过设计隔离应用程序来提升安全性。

  • AWS 容器平台优点
    • 低成本:能够选择部分 spot 实例做为底层资源节省费用。
    • 企业就绪
    • 弹性扩展:云中 EKS 相比自建的 kubernetes 多 Cluster Autoscaler 特性,能够根据负载扩展集群中的服务器数量,ECS 中由 capacity providers 来提供底层计算资源弹性伸缩。
    • 更可靠:ECS 和 EKS 的控制面板由 AWS 彻底托管,服务的可用性由 AWS 专业技术团队维护。
    • 网络:使用 Amazon VPC CNI,使 container 或者 pod 具备 VPC IP,省去网络封包,提高网络性能。
    • 负载均衡:经过使用 AWS ALB,可让流量直达 container 或者 pod 的 IP,集群能够省去 原有 service 流量分发,提高转发性能。
    • 权限:能够直接为 container 或者 pod 赋予 IAM role 级别的权限,安全访问 AWS 其余服务。

那么面对这么多服务,咱们该如何选择呢?

  • 首先对于非分布式的应用,也就是单个的容器服务,我推荐选择 ECS + EC2 平台,ECS 为咱们简化了容器设定,下降管理容器的门槛,用户只须要按照容器运行的要求设置好 Task definitions 便可,若是您不想管理 EC2,那推荐选择 EC2 + Fargate。
  • 对于运行在 kubernetes 平台的应用程序,首选推荐 EKS + EC2 平台,也能够启动一部分 spot 实例混搭以节省费用,能够把在本地 kubernetes 上使用的 yaml 文件直接在 EKS 上运行,不须要特别的修改,整个迁移相对来讲更加简单,相对于 ECS,管理 EKS 集群须要运维人员更高的一些容器编排技能。对于一些访问量波动比较大的应用程序,咱们能够运行在 Fargate 平台上面,弹性扩展底层硬件。

数据迁移

这里所说的数据主要是静态存放的数据,以及一些归档数据,须要把这些数据传输到 S3 中,数据迁移工具的选择主要是考量数据量的大小,以及本地数据中心的带宽大小,不一样的组合用到的迁移工具也不尽相同。

  • AWS DataSync 是一种数据传输服务,能够简化、自动执行和加快本地存储与 Amazon S3 或 Amazon Elastic File System (Amazon EFS) 或 Amazon FSx for Windows File Server 之间的数据迁移。DataSync 使用本地代理链接到 NFS 文件系统,并快速迁移文件数据(比开源复制工具的速度快 10 倍),而无需编写和管理脚本。DataSync 会执行完整的初始副本,增量传输以及对已传输数据的验证。若是您有可用的网络带宽,那么 DataSync 是迁移基于文件的数据的最简单方法。
  • AWS Transfer for SFTP (AWS SFTP) 是一项彻底托管的 AWS 服务,可以让您经过安全文件传输协议 (SFTP) 将文件传入和传出 Amazon Simple Storage Service (Amazon S3) 存储。SFTP 也称为安全外壳 (SSH) 文件传输协议。
  • AWS Snow 系列能够为那些须要在严峻的非数据中心环境中运行操做、将大量数据迁出本地环境以及遇到缺少一致网络链接的状况的客户提供帮助。Snow 系列由 AWS Snowcone、AWS Snowball 和 AWS Snowmobile 组成,能够提供各类物理设备和容量点,其中大部分设备还内置有计算功能。这些服务使您可以在本地经济高效地使用 AWS 云的存储和计算能力,从而有效地传输数据并加速迁移。

咱们能够很简单的经过数据库和带宽估算出数据上云所消耗的时间,企业能够根据本身所能承受的能力来选择不一样的工具,对于一些数据量比较小的,可使用 DataSync,SFTP,固然也可也使用 aws cli 把数据传输到 S3,而后对于数据量比较巨大的,经过网络传输至关消耗时间的,咱们可使用 Snow 系列来传输数据。

4、优化

利用 AWS 安全管理服务来管理云环境,从而管理和监控云环境中的应用程序。开始在迁移期间使用这些服务,也能够在迁移后继续使用其中的部分服务来保证混合云的一致体验。

  • 云成本管理:AWS 帐单和成本管理是一项 Web 服务,借助该服务提供的功能可帮助您监控成本并支付帐单。Amazon Web Services (AWS) 根据使用状况向您的帐户收取费用,可确保您只需按实际使用量付费。
  • 使用 AWS 产品/服务节省费用:购买 AWS 的 RIs 还有 Savings Plans 服务,借助 Compute Optimizer 的推荐调整虚拟机的大小,以实现利用率最高,价值最大化。
  • 加快实现应用现代化:利用所节省的资源来增添更多云功能,慢慢把云中的工做负载迁移到无服务模式,实现应用的现代化。

5、安全与管理

AWS 很是注重客户业务的安全性,AWS 具备众多的安全服务来保障咱们的应用与数据安全,这里只简单介绍一下咱们经常使用的几个服务。

  • 业界领先的安全性:AWS Security Hub 向您提供 AWS 资源安全状态的全面视图。Security Hub 跨各 AWS 帐户和服务收集安全数据,帮助您分析安全趋势,肯定整个 AWS 环境中的安全问题并明确其优先级。
  • 监视分析云健康情况:利用 Amazon CloudWatch 跟踪云应用的运行情况和性能、基础结构和数据。从各来源轻松收集数据,并得到丰富看法。
  • 有效管理虚拟机:借助 Systems Manager 能够轻松批量管理众多虚拟机,如命令批量执行,操做管理、应用程序管理、操做和更改、实例和节点。

6、客户案例

笔者曾经在一家数据分析的公司任职,公司的主要业务是经过对手机 APP 数据进行分析。以前的业务所有在上海的数据中心,公司的应用程序主要是 Java 程序,数据库有 MySQL和 Oracle,大数据处理平台是经过多台物理机自建的 Hadoop 集群。

上云以前,若是临时接了一个项目,IDC 的资源难以及时有效的支持相应服务,公司须要硬件采购,(包括服务器,防火墙,交换机在内的相关基础硬件),设备上架,网络规划,系统安装及配置,以及大量的人工运维。整个周期须要至少半月到一个月左右。

经过一次培训,了解到云计算相关的特性,客户开始对部分业务进行上云评估,经过半月时间对本地数据中心的工做负载进行梳理并列出清单,根据AWS提供的迁移策略和最佳实践逐步将业务迁移上云。须要注意的是不少业务须要分步骤上云,逐步去替代掉本地数据中心的业务,在上云的过程当中,客户对部分应用进行了优化和重构,使其更加适应云原生的服务。

通过近一年多的 AWS 云服务的使用,客户充分体验到云服务的优点:

  • 节省硬件部署时间消耗,提升服务上线时间:客户没必要再花大量的时间在硬件采购和上架以及系统安装上;设备上线大大缩短了时间,由以前的数周缩短为一小时之内。
  • 简化数据库管理:咱们由本身部署的数据库,所有切换为云中的数据库,包括 RDS 还有非关系型数据库,MySQL 咱们更是直接采用了 Amazon Aurora Serverless 数据库,不在为估算数据库的配置而苦恼,它会根据业务的负载自动的扩容缩容,极大的减轻了咱们的维护压力,DBA 人员没必要再为数据库部署,高可用,备份,以及维护花费精力,这些工做只须要在云中点击记下就能够完成,DBA 把工做技术在业务上面的优化,极大的为咱们节省了人工成本,并提升了工做效率。
  • 提升应用上线效率:上云以前,咱们部署应用相对比较繁琐,由于咱们是 Java 程序,每上线一个新程序,都须要去配置一个tomcat,由于端口不能够公用,咱们须要修改每一个 tomcat 的配置更改端口,长此以往,tomcat 愈来愈大,很是不便于管理,咱们对部分应用重构以后上云,对于一些功能简单的应用,咱们部署在了 Lambda 上面,并经过 API Gateway 来触发,没必要再去关注底层服务器;另一部分应用直接部署在了 Elastic Beanstalk 上面,可由开发人员直接部署,没必要再去为环境搭建而花费时间,还有一部分应用放在了 ECS 上面,使用容器技术也极大提高了咱们的部署效率。
  • 节省整体成本:上云以后,对于成本的节省也很是显著,咱们粗略估算,费用节省高达 40%,这主要归功于云计算的灵活性,弹性,以及低成本,没必要提早预置一大批硬件花费大量金钱,对于长时间运行的一些服务,咱们购买了预留实例来节省成本。简单拿咱们的大数据平台来讲,以前咱们是几十台服务器组成的集群,集群的利用率并不高,可是也不能没有,上云以后,咱们直接购买的 EMR 服务,咱们了解到 AWS 有一种叫作 spot 的实例,费用节省最高达 90%,咱们的大数据工做负载,基本 80% 的服务器所有是买的 spot 实例,分析完以后销毁全部的实例,单单这一特性,为咱们节省了很是大的成本。

云中的优点还远远不止于此,好比在安全性方面,各类安全服务保障咱们的业务顺利进行,以及咱们能够第一时间使用最早进的服务,能够很是方便地使用机器学习等其余服务,它不但减轻了咱们的工做,也为企业节省了巨大的费用。

相关文章
相关标签/搜索