从阿里云全面崩溃看,真的需要「快速跨云迁移」

2023-11-14 20:03:40 +08:00
 Jianzs

众所周知,前天( 11.12 )阿里云又双叒宕机了,影响面非常大。一个小时过后,仍然有很多服务还没有完全恢复。这场事故中,给你的产品带来怎样的影响呢?

从这可以看出来,云作为基础设施真的非常重要。但与水电在使用标准上统一,在管理上分布不同(很好地避免了单点),云目前还处于使用标准不统一,各个云服务提供商“各自为政”的情况。这就导致了,在你的服务出现问题后,你却没法及时将业务迁移到另外一家服务提供商。这或许就意味着云距离成为真正的基础设施还需要再进一步,我在之前一篇文章中提到,有效的接入标准或许是促进云成为真正基础设施的关键因素。

你想一下,如果一份代码能够同时适配阿里云、华为云、腾讯云,甚至 Kubernetes ,那么在某一家发生异常后,你就能在极短的时间完成业务服务的迁移。这算不算给自己的服务提供更高的可用性呢?

如何实现云与代码的适配?

这里,代码与云服务提供商的适配有两个方向:1 )云适配代码:统一多云的接入标准使得相同代码能够在多云执行; 2 )代码适配云:提供自动化工具实现代码自动对多云的封装适配。

“统一多云的接入标准”目前看来不可能,各家云服务提供商都还在“努力”提供更多的云服务,并且都希望提供独有的特性以构建自身的壁垒,保留自己的用户。

“工具自动化封装代码以适配多云“是一个可以尝试的途径,并且目前也有产品正在试足这个领域,例如 Winglang,也包括我自己 —— Plutolang

自动化封装代码以适配多云:Plutolang

Plutolang 目标是:让用户仍使用常用的编程语言(如 TypeScript 、Python ),通过程序分析等手段完成业务代码对基础设施的依赖分析,最终,根据分析结果,以及对代码进行拆分,自动完成依赖组件的自动创建,和代码的自动发布。这样使得在保持现有生态便利性的情况下,降低上云的门槛,与多云迁移的负担。

感兴趣可以先看一个 Plutolang 的 Demo 视频,2 分钟,视频基于 TypeScript 实现一个多路由的 HTTP 服务在 AWS 与 K8s 的发布部署: 「 Pluto 云开发」

Plutolang 目前基于 TypeScript 进行实现,能够完成上图所展示的能力,也是 Demo 视频所对应的内容。用户编写一段 TS 代码,可以包含多个路由,以及 KV 数据库、消息队列等 BaaS 组件,不需要去控制台操作,也不需要编写基础设施代码,执行 pluto deploy 后,就能自动创建依赖的 BaaS 组件,以及将各个路由分别发布成 FaaS 组件。

想要动手试试可以 Fork 这个在线开发环境: Plutolang | CodeSandbox

回到文章的主题,从上图代码中可以看到,Plutolang 没有直接依赖于各个云平台的 SDK ,而是依赖于 @plutolang/pluto,为开发者屏蔽了底层不同云的异构性。这样,开发者开发时不与具体云服务提供商绑定,利用 Pluto 就能无缝地在多个云之间进行迁移部署。

当然,以上也只是完成计算服务的迁移,那么数据呢?还需要更多的工作去做,至少在计算上能够避免运营商锁定,在紧急时刻,可以及时将业务迁移到备份环境中。

想要进一步了解可以阅读:

同时,Plutolang 还处于非常早期的阶段,欢迎感兴趣的大佬们参与共建,如果你在使用 AWS 或者 K8s ,可以给我们提需求了。同时有任何想法或者建议,都非常欢迎,说出来,你的想法就会在后续版本实现。欢迎加入我们的 Slack 和 钉钉群:40015003990 。

11396 次点击
所在节点    推广
80 条回复
Jianzs
2023-11-14 23:12:23 +08:00
@mightybruce #19 感谢!

对接平台的话,我是接入了 Pulumi ,可以对接 K8s 和云,后续还会继续支持 Terraform ,生态更丰富些。

迁移和自动化 CICD 这些,目前是利用 npm 就能安装,还比较轻松,后续再继续优化,的确还没考虑完全,感谢建议!

TypeScript 更多的是给用户提供一个熟悉、简单的界面,本身 TS 编译也比较灵活,还能比较容易对接后面的云平台。如果思路验证可行的话,还会在 Python 等更多的语言上尝试。
mightybruce
2023-11-14 23:14:16 +08:00
你说的这些,在云原生社区并不新, 很多大公司都有考虑不能被运营商锁云, 各种开发多得很,光各种集群联邦和魔改方案就很多
kingjpa
2023-11-14 23:26:26 +08:00
其实你说的这些难度并不大,只是大部分业务又不是微 X 支付保,停了也没啥,云服务宕机概率极低,
为了这极低的概率,付出的代价太大,人们不愿意做而已。
Jianzs
2023-11-14 23:41:44 +08:00
@mightybruce #22 是的,但是对中小企业或者个人开发者,这方面成本还是比较高的(可能这个群体对快速迁移的需求不强

让个人开发者用云的门槛更低,让没有云背景的人也能很好地用上云,其实这是要去做的。目标的话,Pluto 作为一个自动化工具,让开发者还是 **像写单机程序代码一样** ,写出来的程序就能直接部署到云上。
lindt99cocoa
2023-11-14 23:46:48 +08:00
++成本;
--性能;
mytsing520
2023-11-15 00:22:12 +08:00
按照工信部的要求,目前 ICP 备案是锁接入商的,只做了备案没做接入,ISP 有义务拦截请求。这是合规要求。
就此,一句话,如果是 web 服务,你告诉我怎么解决备案接入的问题。
不要说什么提前多接入,对于中小企业或开发者那都是成本。
joyanhui
2023-11-15 00:47:25 +08:00
@mytsing520 我们算 是小微企业,备案先做了腾讯的那边的, 弄完一家就可以上线了这步骤是必须要做的,后面的几家备案慢慢申请就行。 华为那边因为不需要接入就可以使用,暂时没弄,不过经你这么一说,还是要去接入一下。
不过一般跨云部署 2-3 家就足够了。一个是风险规避,一个看厂商的促销活动

不过备案信息和域名实名都会泄露主体下所有的域名,会暴露一些业务出来。当然这个小问题了。
joyanhui
2023-11-15 00:48:29 +08:00
其实 跨云迁移 最麻烦的 还是 数据的转移 和 部分有状态服务 真的头疼。
Jianzs
2023-11-15 01:33:32 +08:00
@joyanhui 请教一下,你们是用云的 ec2 虚拟机么?还是容器托管? faas ?多云的适配是咋做的?
Maboroshii
2023-11-15 01:36:54 +08:00
数据不丢失,那都是万幸!
xuanbg
2023-11-15 01:37:49 +08:00
1 、成本翻倍
2 、你能确定迁移所需要的时间比故障恢复的时间短?

所以,看起来很好的东西不见得是有价值的
keepRun
2023-11-15 04:13:32 +08:00
直接混合使用多个云,不同的业务用不同的云,省的一次性全挂了。至于迁移,海量数据迁移才是最麻烦的,数据在迁移中错了就麻烦大了,以及业务还是得运行,不可能客户等你迁移完。
感觉这种应该再初始架构设计时就应该避免风险,而不是事发时迁移,事发时迁移就是个伪需求。
germain
2023-11-15 06:14:05 +08:00
你们不知道 DR 吗?
1145148964
2023-11-15 07:57:44 +08:00
工程学上有相关的论证:这种增加系统复杂度的行为只会导致成本增加。更容易出现故障。
比如四个发动机的飞机看起来更可靠,实际上成本飙升,故障率更高。
murmur
2023-11-15 08:19:39 +08:00
多云同步用的是宝贵的公网带宽,至少云内是局域网暂时还不要钱
Hyvi
2023-11-15 08:43:18 +08:00
很需要,对于国内外部署的也是非常需要
guyanyouyou
2023-11-15 08:43:41 +08:00
数据可以迁,服务可以迁移,但是备案咋办
nothingistrue
2023-11-15 09:18:30 +08:00
云服务不容易挂,你这个单点的「替代人工的自动化程序」,那可是非常容易出 bug ,非常频繁的因为水土不服而失效。
wyy
2023-11-15 09:21:15 +08:00
得多云多活把?
出故障后才迁移,先不说你自己的服务和数据能不能快速迁移走,你想迁到哪,对方也得有相应的资源能快速提供出来把
version
2023-11-15 09:44:56 +08:00
这明明是广告贴啊...阿里云崩溃和这个有啥关系...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/991920

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX