自动化实践过程TIPS

更新时间:2025-01-23 06:32:35

本视频介绍IaC自动化实践过程中的一些小贴士,以Terraform为例帮助大家了解各自动化关键阶段的问题和需要思考的内容。

自动化实践过程TIPS

以下是视频转写全文,供参考:

hello,大家好,欢迎回到阿里云开放平台自动化专栏Auto Talk。本期我们带来的是自动化过程的实践 一些小tips,然后我们会以Terraform为例,我是天凯,来自于阿里云开放平台。我们正式开始今天的内容。

大家都知道,其实在云上做自动化的操作,包括业务的自动化,也是分几个阶段的。拿我们现在比较火的汽车生产为例,我们其实在很早之前是手工组装汽车。这个车也是能生产出来的,后来就到了某些产线,我们可能对零件做了自动化生产,但是组装仍然需要通过人工的方式将这个车组装出来,最终它还是一辆车。随着生产力的不断提升,现在一些比较先进的车企,其实也在用全链路自动化的方式生产汽车。从喷漆到最后零件组装,可能大部分的工作都通过生产线的方式完成。云上也有自动化的操作,也是这个逻辑和步骤。

我对这个事情的定义是,每个阶段其实都有它存在的意义。其实是和我们业务的发展过程相匹配的 ,没有绝对的好和坏。但是随着组织需要迎接更大的市场竞争力和我们的业务驱动,它会从手工半自动到自动化这样的方式去演进。这三个阶段里面,其实也都有好和坏的区分。

比如说在手动的阶段,我们对市场的灵活性显然是更好的。我们在管理少量资源的时候,可能通过控制台的方式很快就可以应对。虽然我投入了很小的人力,但是我并没有承担建设平台的成本,也没有人工培训的成本。我只要会使用阿里云的控制台就可以完成。

随着资源量的不断增加,单靠堆人力肯定会导致组织的成本和ROI逐渐降低。市场对我们需求 就是运维团队可能会更多地转向做平台。一方面,这扩大了平台的价值,运维团队在做平台过程中,价值也会逐渐体现和提升。我们的组织也会拥有更高的标准化。在自动化的过程中,我们会拥抱极致的生产力和生产效率。同时我们会获得更多的额外的业务价值,对员工在这件事情上的职业生涯的价值也会有更高的肯定。

今天主要内容我会通过六个部分给大家介绍一下。我们服务的一些客户和我在看到这个市场过程中,思考了在做Terraform自动化时的一些关键阶段和关键问题。首先相信大家在自动化的第一个问题就是我要从什么地方做,做什么。 我在这里面给大家一些层次的目标。我们其实会把云上的自动化分为四个层次。分别是基础设施的生产,基础设施的管理,应用的生产和应用的管理。

说白了前两部分还是在讨论如何能够把云上的资源生产出来。有些企业其实是生产出来之后就不管了,讲究的是生产效率。有些企业生产之后还管理,讲究的是生产的标准化。有些企业会把应用发布和生产发布绑到一起。我全流程自动化就会带来更高的业务收益。有些企业在有了应用之后,还需要对这个应用的整个生命周期版本进行管理。这四个层次其实是难度和要求越来越高的。但相对来说第一个层次是我见过大部分客户可能会优先入手的层次。

第二个就是关于技术选型。虽然今天我们的内容其实是关于Terraform,但是实际上做IaC的过程是可以多个自动化工具混用的。这取决于每个客户的实际的场景和最终的实现效果。比如说,您可以通过Terraform去做版本基线、资源的基线生产和资源的provision。这方面其实它是一把好手。而且Terraform在社区的活跃度和相应的人才储备上也是比较丰富的。同时我们也可以选择用OpenAPI或者云控制API这种阿里云提供的开发工具,来为我们业务做一些自动化的集成,将业务逻辑转化成一个自动化的生产链路。

第三步就是团队环境。相信提到团队环境时,很多小伙伴可能会认为今天团队环境不是我最大的gap,我觉得大家可能在真正落地过程中就会感受到它在其中扮演了一些很关键的角色。因为不管是任何一个组织,它其实也是由人来管理和决策的。当我们某一个团队的成员对Terraform、对这种先进的IaC理念感兴趣的时候,一个人感兴趣并不代表在这个组织,在这个团队内能够完整地从01去落地。

那如何让这件事情发生其实是需要很多的内部的共识,包括对业务现阶段的理解和洞察的。我举个例子,其实有些时候我们会跟老板讲说Terraform这个技术怎么好,它是声明式的,可以保持基线稳定。但是这个事情本质上对业务并不是产生的最终的业务价值。如果我们跟老板说,今天Terraform带来的是生产效率的提升,可以减少50%以上的误配错配。那可以保持我这个业务稳定的基线。我相信这个事情对于业务的发展阶段可能是有效果的。

另外的话就是学习成本。相信不是所有的团队的成员一开始都懂Terraform,可能有一些人懂。觉得入门之后感觉很好,很简单。但是对于不懂的同学,尤其是对一些技术上,有倾向的同学。其实在这个过程中也会有一个学习成本。

然后第三个就是工作习惯。因为每一个人在做的时候,其实一开始都是面临一个矛盾点的,就比如说我可能通过控制台也可以完成任务。那为什么我要学习自动化?当没有这个对比,或者没有真正去使用自动化去做的时候,其实很难体会到这个红利。所以在内部的案例的分享,包括一些内部的推动方面,其实也是达成这个事情的一个支撑指导。

另外的话就是拥抱一些老技术。很多老的技术人员在向新的技术迭代的时候,这个成本如何去cover?我的团队如何去适应和配合,其实也都是需要综合考虑的。

所以其实对于一些大中小型企业,我们也分别给了一些建议。这可能只作为一个参考。我觉得对于大型组织来说,它的成本会更高一些,因为它涉及到很多团队协作和内部工作的方式。对于中小型企业,小型企业我们的建议是,如果你需要通过控制台和一些基础方式满足你的云管理需求,其实是不需要特别纠结于用什么技术去实现自动化。第二,对于中型企业,我觉得需要开始考虑,并且让部分的团队做小的试点。对于大型企业,我们需要通过价值驱动的方式给业务带来更大的助力。

然后第四个就讲到这个决策责任。因为说实话我们在做自动化的时候,本质上是业务流程到代码逻辑的一个转化。代码逻辑必然会涉及到人、技术和一些流程的三位一体的组合。首先流程和规范是通过不同的岗位角色定义出来的,比如说我们团队内部会有操作员、审计员和合规人员,这些流程和规范实际上很多情况下是在他们的脑子里的,也有一些管理规范和制度比较先进的组织和企业,他们可能已经把它系统化了,可能沉淀在某些流程平台上。这些东西其实是我们需要重点考虑的。

因为当您去建设自动化流程的时候,比如说您要开一台ECS,那么在开完ECS之后,开不同规格的ECS,审批流会不会有所不同?那它的合并节点和执行的节点是否有区别?删除的时候是否有特定的需求,比如说需要主管审批等等。这种方式其实都是我们在实施和落地这个IaC体系过程中需要考虑的内容。

但是我们的建议是从一些主线流程和一些单点的小规模的具体问题出发,然后由点及面的去梳理这个东西,不要尝试去做一些大爆炸的方式。比如说我现在首先定义出整个组织的每一条线,必须先定义清楚,然后我才能够一点点去实施。在宏观框架上可以有一些方向性的引导。但是我觉得在微观业务上,其实不需要搞得这么复杂。可能从一个主线慢慢剥离出来,然后逐渐产生一些比较通用的框架,再在内部去推广,其实我觉得是一个比较好的案例。因为大家需要在这个过程中尝到甜头,感受到对业务的助力,然后再进行业务的迭代和优化,并且最终和业务共同发展。

然后第五步就是工作流程,我觉得最小的建设一套IaC的流程至少要具备与Git相关的基础能力,包括CI/CD这些理念。因为如果你只是把代码写到本地的机器上去跑,而没有任何的版本管理,只是在不断修改自己本地的文件。这与去做控制台没有本质上的区别,实现形式有区别,但是本质的问题并没有解决。因此,我们建议在梳理这套流程的时,至少要把版本管理、运行态、变更审批,以及合并发布、部署生产等标准动作融入到自动化流程当中,先搭建框架,然后再以小项目试点进行引入和探讨。

然后对于生产系统,其实自动化能做的事情非常多。这里面我只是列了一些比较常见的大场景。比如说像安装配置,包括一些HA的配置,以及阿里云上的一些服务,比如说在新账号创建之后,您可能有一些服务想要购买,需要做一些批量的服务开通。资源生产时需要做一些批量的扩缩容,包括一些服务器的部署。其实运维还可以更多地关注性能、网络安全包括现在比较火的FinOps,对吧?您的成本指标如何能够通过自动化的方式去匹配,并打上成本策略,包括Saving Plan等策略,整合到您的自动化业务流程当中。

但是我们不建议每个客户一下子把所有的场景都广泛涉猎,每一个只做一点,其实本质上每一个也做不好。所以在生产系统的整个的落地和交付过程当中,我们建议先从一些比较通用,比较痛、又比较常见的收益比较高的场景入手。比如说服务开通,账号权限的基础设施创建,资源的批量的部署,以及测试环境的快速创建和删除。这些其实都是对业务的价值非常高的,而且您的投入不会太大。我们也提供了很多的线上的示例。大家可以到Terraform的官网去看,其实都是有的,基于这些场景,就可以在内部快速的形成价值共识,并且能够在业务上快速推动落地。

最后我就从四个方面给大家总结一下,总的来说就是要有合理的技术的预期和技术的选型。因为每一个组织,每一个技术站的人员都是不同的。我们对于不同技术栈的同学,也希望他们有一个持续可发展的迭代和演进路径。所以我觉得在助力业务发展为主要目标的情况下,才是你真正能够把IaC长线持久运行下去的核心的原动力。第二个就是团队环境,我觉得可能不仅要考虑一个人,一个人认为先进其实并不是整个组织的先进。我们需要把先进的平台和产品技术应用到我们先进的组织和管理理念中去。

然后第三个就是决策的责任。不光是技术和运维involve进来,很有可能我们也需要很多业务同学involve起来。因为比如说我们的合规策略,审计策略可能也是逐渐迭代的,我们的自动化的这套代码可能和组织的策略需要形成一个强烈的呼应。我们在这个流程中,运维团队的角色就会变得越来越重要,也是不可或缺。还有最后就是流程场景,流程其实它不是一个一锤子买卖,不是说今天我要做自动化,做完之后就可以一键对吧,什么也不用管了。我们在这个过程中其实还需要考虑,随着业务的发展,持续的管理和逐步的迭代的过程。

好,以上就是本期分享的全部内容了。如果你有任何疑问和关于云上自动化的想法,欢迎扫描屏幕下方的二维码,加入钉群与我们交流,期待联系,我们下期再见。