云上开发——加入还是退出?

Blog
Author:
Joseph SibonyJoseph Sibony
Published On:
2月 16, 2022
Estimated reading time:
1 minute

我想你肯定听过这样的说法——“云是未来的趋势。这属于老生常谈了,不过从技术上来看,确实如此。但是,我们说到这个话题是因为,它不只是一种流行说法或时髦术语。对于今天的大部分组织来说,时间不仅仅是金钱,它还是加快增长速度和优化产品发布的关键。

这就是为什么云如此令人期待。它淘汰了无法扩展的笨重硬件,转到资源无限、扩展无限的云端。你肯定读过无数文章,关于云如何帮助你【插入你的专业】以及如何以更低廉的价格做到更快、更好。这些文章可能是对的。

在云上,你可以更轻松地将某个重大发布日程转换成 CI/CD 模型,专注于增量更新。本地开发面临各种障碍,导致时间都浪费在了处理各种小任务上,比如简单的文件分享,使得整个流程都需要优化。

即便如此,仅仅是将流程转到云上,并不能解决所有问题。云管理不善可能会导致大量工作,带来与本地流程一样的问题,不会有任何明显的改进。不过目前这样的情况才刚刚冒头。所以,让我们深入讨论为什么现在需要加入云,以及是什么让你犹豫不定?

为什么要加入云?

我们不是说云不好。事实上,云的好处非常多。让我们来列举其中的几个主要优点吧。

扩展更智能、更快捷

开发经理转到云上是为了解放资源。对于任何计划启动或维护开发项目的人员来说,在云上,他们可以轻松地按需启停资源。这就是他们转到云上的主要原因。不再依赖手上的硬件,也无需购买更多的服务器, 你就可以按需启停任意数量的资源。另外,鉴于零部件的成本,尤其是芯片成本(由于全球芯片短缺,其成本变得更高),扩大硬件规模往往需要耗费巨资。

而云上有数种扩展方式,每一种都非常有用。比如,自动扩展工具。假如你有一台 64 核的大型机器,主要用于构建相关的流程以及其他需要占用大量资源的进程。换个角度,如果不使用单个兆级机器,那么你需要怎么办?你可以配置云扩展,使用一组 8 核的小型机器。你可以按需启停资源,这些都会便宜得多。

更甚者,在某些情况下,你还可以添加竞价实例,进一步降低成本。虽然他们不如按需资源可靠,但当你需要临时扩展规模,或在处理不需要一直正常运行的特定任务时,竞价实例可以进一步降低成本。云最突出的优势是什么?答案就是:不需要永久占用资源。 你可以在完成后立即弃用,无需继续支付维护费用。

/无维护环境

云环境和云计算的另一个备受赞美的优势是能降低维护成本。确实如此,如果没有硬件,就不用花钱维护。但是这并不表示没有其他维护成本,即便不是经济成本。

Jenkins 等工具确实超棒,但需要不断调整和更新,才能使其按你所想的方式运转。如果你采用 CI/CD 流水线,那么你肯定不想花大量时间确保设置正确无误。不过,有些工具,比如 Azure DevOps,出厂时就已预先配置好,这样可以更方便管理。如果你需要低维护的产品,那么这种云模型可能更适合你。

持续自动化

目前我们的流水线仍然无法做到全自动化,不过,利用一些云工具,我们提高了自动化的程度。虽然还没有达到零接触,但大部分云平台都能够帮助组织进一步减少摩擦,提升现有的自动化能力。首先就是将整个环境迁移到云上,并提供云原生工具包。这样可以减少硬件相关的故障点数量,过去这些故障点可能会影响整条生产流水线。

让我们举例说明一下。假如你利用本地基础设施在 Jenkins 上运行流水线。你可以自动化处理已知的错误和问题,包括依赖和语法错误,但是,如果你在 Jenkins 上运行的节点机器出现故障,那么整条流水线都会出问题。你不能切换到其他实例上,必须解决好硬件问题,比如打电话给 IT 人员,修好硬件,重新部署机器等,然后才能继续工作。那么在云上呢?你只需要回退或切换到另一个 Jenkins ec2 实例即可。

但是……

关于云的所有好处,如果你不做好取舍,那么累计成本也会很高。自动扩展可能是 DevOps 团队的主要资源,但它也可能导致人为疏忽和一些意外状况。资源获取太过容易就会出现这样的问题。人们很容易按需添加更多资源,但有些团队在启用资源过后,并未及时停用资源。

根据 Anodot  2021 年发布的报告,77% 的受访企业都曾对其云成本感到惊讶,而 70% 的受访者认为云成本属于日常考虑因素。更重要的是,工程师或开发人员并不能时时注意到成本,工作繁忙时,成本很容易急剧上升。

即便决定改进服务,一段时间后,又会出现意外(甚至令人震惊的)情况。例如,目前已经泄露了用户名和密码的资料库 HaveIBeenPwned(一个白帽网站),它没落的原因就是错误地配置了最大缓存大小,导致云费用高达 11,000 澳元。

在其他人看来,它高估了所需的资源,在确定合适的水平之后,没有做出适当的调整。不论情况如何,云成本最终可能比你想象的要高得多,不过这正好可以让你暂停下来,仔细思考DevOps 或开发项目数字化转型是否合适。

那么,你是否应该转到云上?

视具体情况而定。毫无疑问,将开发流程转到云上有很多优势。但是,如果不是出于正确的理由,且没有配套适当的基础设施,那么你可能会大失所望。

人们考虑转型可能只涉及几种原因。第一,赶时髦。你听说了各种关于云的超赞应用之后,心想好吧,为什么不试试呢?然后,很幸运地,你成功了。但是,在这种情况下,你并没有真正地找到问题的解决办法,只是试图按你想要的方式解决问题。

相反,如果你已经仔细考虑了各种方案,并准备好投入支持(经济投入,以及配备适当的基础设施),那么你可以考虑选择云。你不需要全部都转到云上。事实上,目前的许多组织(甚至是那些云上全能的组织)都采用混合模型,即利用预置软件的计算资源与云实例相结合。这样,他们就可以利用不断喷发的云应用更好地控制成本,因为云可以帮助他们更轻松地管理和控制成本。

最好要三思而后行,想想你真正需要什么,希望从云投资中得到什么。