阅读更多

0顶
0踩

企业架构

原创新闻 亚马逊云平台的迁移过程

2014-10-13 16:32 by 副主编 mengyidan1988 评论(0) 有5144人浏览
【导读】本文转自Bruce Dou的博客,作者分别从成熟老系统的常见问题、迁移过程需要考虑的问题以及迁移后带来的收益谈起,详细介绍了亚马逊云平台的的迁移过程及注意事项。
最近3个月变化很多,离开呆了5年多的北京,开始英国的工作和生活。到这之后基本在做系统向亚马逊云平台的迁移,踩了不少坑,收获也很多。由于系统的迁移涉及各个常见的架构组件,边边角角的细节很多。和大部分系统一样,长时间野蛮成长积累了很多问题。这样的老系统迁移到新平台意味着你需要处理所有之前埋下的问题。公司之前聘请了亚马逊推荐的第三方咨询服务工作在做迁移,但是由于问题太多,拖了很长时间没有完成。
成熟老系统常见的问题:

1. 缺乏文档

这应该是大小公司都存在的问题。文档会极大降低开发效率,并且互联网项目的特点是易变和追求速度,详细文档不是很好的方案。这就要求方案和细节设计上的合理性和不要做 “精巧”方案。结构化设计,不要零散的组成,这样其他人即使没有文档也可以理解。

2. 项目中临时方案太多

导致后来看起来很别扭而且不容易理解,半截工程。系统中存在大量“精巧”的设计,导致后来者难以理解。这也告诉我们做设计的时候尽量简单通俗易懂,项目设计的可沟通性也是很重要的一方面。某位工程师说自己花了1周的时间才搞明白Postfix的收邮件并自动解析的过程是怎么运行的。

3. 代码质量参差不齐

代码质量问题每个大点的团队都没法保证,保持代码库的干净很重要。

4. 繁杂的业务

5. 代码的Bug和代码对环境的兼容性

之前的系统使用配置文件做主从读写分离,配置文件由其他系统控制。但是配置文件确保留在代码库中,这意味着假如代码回滚或者 check 分支出错,配置文件会发生改变。不该发生的全会发生,这样的事情确实发生了。导致部分操作写入从库,从库与主库同步失败,典型的脑裂问题。最后只好花了很长时间重做从库的同步。这样的问题处理并不复杂,复杂的在于如何发现这个问题的原因。业务系统各种奇怪的表现,有时候很难想到问题的根源。

迁移过程需要考虑的问题:

1. 完善测试

性能测试可以采取流量镜像复制,读操作有很多简单可靠的流量复制工具,有时候根本不需要一个高大上的流量复制系统。并且大部分系统都是读多写少,测试不是什么难题。

功能性测试只能尽量做足,让熟悉系统的用户进行。

2. 无缝迁移

整个过程基本实现了平滑无缝迁移,系统的没有停止 1 分钟运行。由于项目的特点,比较少写操作,重点是读,暂停写操作后作将 HaProxy 后端逐步指向新集群,等全部流量导入新集群后修改 DNS 指向新集群。这里还涉及到 DNS TTL 从长变短再变长的修改过程。

缓存预热很重要,尤其是数据库的预热,这就要求新集群流量导入逐步进行,防止对整站延迟的影响。

3. 回退方案

由于暂时停止写操作,即使流量导入到新集群后测试发现问题仍然可以指回旧集群。

4. 改进还是保持原状

由于架构组件的选择余地很大,之前的各个组件的配置是否合理需要很长时间 Review。这里就要权衡保持原状还是一次性做好优化。比较好的方案是如果不是 BUG 则保持原状,等系统完成迁移再进行改进。

5. 性能的持续监控和对比测试

性能监控工具已经非常成熟了,比如 AppNeta 和 New Relic , 基本可以把控各个组件的性能。在迁移之前也可以进行镜像流量复制对比测试新旧集群的性能。

迁移带来的收益:

1. 重新设计的发布自动化

业务代码、系统配置、云架构配置的分离,任何操作的版本化,可回退。

2. 弹性扩展,总体成本的降低

迁移到亚马逊的主要原因就是高低峰流量差异很大。迁移后低峰期可以节约 1 半的机器成本。

3. 跨区域容灾,无单点故障

实现了 Multi-AZ,任意单点故障不影响业务运行。Web 前端服务器可以随手关掉,数据库的升级,配置改动也无任何影响,当然这归功于 RDS Multi-AZ 功能。

4. 运维难度的降低,无需运维

系统会自动根据负载进行增减机器,所以无需担心压力大把机器打垮,单机器的各种故障也无需人工处理。
来自:[url="http://blog.eood.cn/aws_cloud_migration" target="_blank"]Bruce Dou Blog[/url]
来自: Bruce Dou Blog
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • RailsGacl Rails应用 通用访问控制列表

    RailsGACL 是大名鼎鼎的 PhpGACL 的 Rails 版本.  RailsGACL 是一组允许你控制对象(用户,远程主机等)访问其他对象(网页,数据库等)权限的函数.  该组函数可以通过简单的管理提供高精度的访问控制,并且运行地...

  • RailsGACL手册(介绍)

    (整理好的说明 以后会包含在程序包里面) [img]http://www.iteye.com/topics/download/f8cb1e25-024f-4803-8185-551a23debaa7[/img]

  • RailsGACL手册

    [size=18][color=darkred][b]基于 Rails 的通用访问控制列表[/b][/... RailsGACL 是一组允许你控制对象(用户,远程主机等)访问其他对象(网页,数据库等)权限的函数.  该组函数可以通过简单的管理提供高精度的...

  • RailsGACL手册(使用)

    代码已更新 请到 [url]http://freeboat.iteye.com/blog/28753[/url] 重新下载 [img]http://freeboat.iteye.com/topics/download/3b9b53d7-a73d-4088-808e-0ca980487b9e[/img]

  • RailsGACL Debug

    administrator_controll.rb 第 855 行 修改成 if oldgroup.parent_id != parent_id 在第 861 行下面添加 oldgroup.parent_id = parent_id :oops:

  • RailsGACL使用疑问

    那么你的RailsGACL能够提供给使用RailsGACL的系统做这样的单独的GACL控制吗? 你例子中提到的是版面访问,那么比如这样的需求,我的博客上有篇草稿,需要几个好友帮助修改下.那么我首先需要对这篇草稿针对这几个...

  • RailsGACL 新版(UTF8格式)

    修改了系统中的一些错误, 最大的改变就是把原来的 GBK 格式修改成了 UTF8 格式, 还有已经把数据库的前缀去掉了,方便使用:) 制作匆忙,可能有不全之处,发现问题 还望指出  ...

  • YOLOv12:以注意力为中心的实时目标检测器.pdf

    YOLOv12:以注意力为中心的实时目标检测器

  • GO语言基础语法指令教程

    GO语言基础语法指令教程

  • MATLAB代码实现:分布式电源接入对配电网运行影响深度分析与评估,MATLAB代码分析:分布式电源接入对配电网运行影响评估,MATLAB代码:分布式电源接入对配电网影响分析 关键词:分布式电源 配电

    MATLAB代码实现:分布式电源接入对配电网运行影响深度分析与评估,MATLAB代码分析:分布式电源接入对配电网运行影响评估,MATLAB代码:分布式电源接入对配电网影响分析 关键词:分布式电源 配电网 评估 参考文档:《自写文档,联系我看》参考选址定容模型部分; 仿真平台:MATLAB 主要内容:代码主要做的是分布式电源接入场景下对配电网运行影响的分析,其中,可以自己设置分布式电源接入配电网的位置,接入配电网的有功功率以及无功功率的大小,通过牛顿拉夫逊法求解分布式电源接入后的电网潮流,从而评价分布式电源接入前后的电压、线路潮流等参数是否发生变化,评估配电网的运行方式。 代码非常精品,是研究含分布式电源接入的电网潮流计算的必备程序 ,分布式电源; 配电网; 接入影响分析; 潮流计算; 牛顿拉夫逊法; 电压评估; 必备程序。,基于MATLAB的分布式电源对配电网影响评估系统

  • 三相光伏并网逆变器:Mppt最大功率跟踪与800V中间母线电压的电力转换技术,三相光伏并网逆变器:实现最大功率跟踪与800V中间母线电压的优化处理,三相光伏并网逆变器 输入光伏Mppt 最大功率跟踪

    三相光伏并网逆变器:Mppt最大功率跟踪与800V中间母线电压的电力转换技术,三相光伏并网逆变器:实现最大功率跟踪与800V中间母线电压的优化处理,三相光伏并网逆变器 输入光伏Mppt 最大功率跟踪中间母线电压800V 后级三相光伏并网逆变器 ,三相光伏并网逆变器; 输入光伏Mppt; 最大功率跟踪; 中间母线电压800V; 后级逆变器,三相光伏并网逆变器:MPPT最大功率跟踪800V母线电压

  • 基于SSM的车位销售平台设计与实现.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

  • 西门子博途三部十层电梯程序案例解析:基于Wincc RT Professional V14及更高版本的应用探索,西门子博途三部十层电梯程序案例解析:基于Wincc RT Professional画面与

    西门子博途三部十层电梯程序案例解析:基于Wincc RT Professional V14及更高版本的应用探索,西门子博途三部十层电梯程序案例解析:基于Wincc RT Professional画面与V14及以上版本技术参考,西门子1200博途三部十层电梯程序案例,加Wincc RT Professional画面三部十层电梯程序,版本V14及以上。 程序仅限于参考资料使用。 ,西门子;1200博途;三部十层电梯程序案例;Wincc RT Professional;V14以上程序版本。,西门子V14+博途三部十层电梯程序案例:Wincc RT Pro专业画面技术解析

  • 基于舆情数据的知识图谱推荐可视化系统论文,全原创,免费分享

    基于舆情数据的知识图谱推荐可视化系统论文,全原创,免费分享

  • 基于Vivado源码的AM包络检调制解调与FIR滤波器设计在FPGA上的实现,基于Zynq-7000和Artix-7系列的AM包络检调制解调源码及Vivado环境下的实现,AM包络检调制解调,Viva

    基于Vivado源码的AM包络检调制解调与FIR滤波器设计在FPGA上的实现,基于Zynq-7000和Artix-7系列的AM包络检调制解调源码及Vivado环境下的实现,AM包络检调制解调,Vivado源码 FPGA的AM调制解调源码,其中FIR滤波器根据MATLAB设计。 【AM_jietiao】文件是基于zynq-7000系列,但没有涉及AD与DA,只是单纯的仿真。 【AM包络检调制解调_Vivado源码】文件基于Artix-7系列,从AD读入信号后,进行AM调制,并解调DA输出。 ,AM包络检调制解调;Vivado源码;FPGA;AM调制解调源码;FIR滤波器;MATLAB设计;Zynq-7000系列;Artix-7系列;AD读入信号;DA输出,AM包络调制解调源码:Zynq-7000与Artix-7 FPGA的不同实现

  • rdtyfv、ijij

    yugy

  • 2025山东大学:DeepSeek应用与部署(部署方案大全+API调用+业务应用)-80页.pptx

    2025山东大学:DeepSeek应用与部署(部署方案大全+API调用+业务应用)-80页.pptx

  • chromedriver-mac-x64-135.0.7023.0(Dev).zip

    chromedriver-mac-x64-135.0.7023.0(Dev).zip

  • 基于单片机protues仿真的433MHz无线模块编解码收发通信测试(仿真图、源代码)

    基于单片机protues仿真的433MHz无线模块编解码收发通信测试(仿真图、源代码) 该设计为单片机protues仿真的433MHz无线模块收发通信测试; 1、433M超再生收发模块; 2、在仿真图中是把发射MCU的P2_7腿直接输入到接收MCU的INT0实现编码解码的; 3、通过433MHz无线模块实现无线通信的编解码功能; 4、按键控制指令; 5、液晶屏显示收发状态和信息;

  • 车机安卓版好用的应用管理app

    资源说说明; 自带文件管理 adb操作以及应用管理等等的功能。 操作性对比其他应用较好。 参阅博文: https://blog.csdn.net/mg668/article/details/145689511?spm=1001.2014.3001.5352

Global site tag (gtag.js) - Google Analytics