4. 阿里云的自动化能力和产品
1) 第一层:特定场景的自动化能力
适合“中级”的自动化场景和需求。
• 弹性伸缩
。 使用场景:当服务器数量需要进行弹性化管理时。
。 弹性伸缩服务:弹性伸缩(Auto Scaling)是根据业务需求和策略自动调整计算能力(即实例数量)的服务。您可以指定实例的类型,即ECS实例或ECI实例。在业务需求增长时,弹性伸缩自动增加指定类型的实例,来保证计算能力;在业务需求下降时,弹性伸缩自动减少指定类型的实例,来节约成本。弹性伸缩不仅适合业务量不断波动的应用程序,同时也适合业务量稳定的应用程序。
。 产品文档:https://help.aliyun.com/product/25855.html
• 部署模版
。 使用场景:当需要具备完全自动化的部署能力时,甚至可以达到一键部署。
。 资源编排服务ROS:资源编排服务ROS(Resource Orchestration Service)是阿里云提供的一项简化云计算资源管理的服务。开发者和管理员可以编写模板,在模板中定义所需的阿里云资源(例如:ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。
。 产品文档:https://help.aliyun.com/product/28850.html
• 事件驱动
。 使用场景:当某个特定的事件发生时,应该触发的自动化任务。
。 说明:事件的来源可以来自Cloud的云产品和服务器,也可以主动发送自定义事件。通常Cloud本身关注的是基础设施(Infrastructure)层,而自定义事件则多是业务系统和业务逻辑层。当事件发生时,可以触发启动相关的自动化任务,如自动检查,自动修复,或者通知某运维人员。事件通知内通常都会包括一些简单扼要的关键信息,如包括实例ID等,这类可以提取出来作为自动化任务的参数。
• 报警驱动
。 使用场景:当需要根据监控报警触发自动化任务时。
。 说明:和上述场景类似,区别在于这里的触动来源是报警。通常也可以分为Cloud提供的基础设施(Infrastructure)层的报警和业务系统和业务逻辑层的报警。并以此为触发来源,触发自动化相关的任务。
• 定时运维
。 使用场景:当需要在预定的时间开始执行的任务。
。 说明:和上述场景类似,区别在于这里的触动来源是根据预设的时间,通常允许按日,按周,按月等周期性定时运维。
2) 第二层:通用的自动化能力(原子能力)
适合“高级”及以上的自动化场景和需求。
• 自动化运维平台
适合通用的云上运维工作流编排引擎,且应该具备以下能力:
。 编排任何云产品Open API的能力,包括打通服务器内部和容器内部。
。 丰富的控制手段:并发控制,批量控制,错误控制,暂停控制。
。 必要的审批环节:事先审批,事中审批,事后通知。
。 支持多种触发方式:定时触发、事件触发、报警触发,手动触发。
。 支持代码化,集成版本控制系统如Git即可完成版本管理,以及GitOps,Ops as Code等先进运维理念。
阿里云运维编排OOS即是这样一款具备以上能力的自动化运维平台。
• 服务器内部运维通道
除了云产品管控面的服务能力之外,更应该更进一步,进入到数据面提供运维能力。因此应该具备打通服务器内部运维的能力:
。 包括图形化的操作方式,尤其是Windows用户。
。 包括命令行的操作方式,适合Linux系统。
。 应该支持基于OpenAPI的命令式执行,方便二次开发。
。 应该支持所有操作的审计能力,确保操作的安全性和合规性。
• 基础能力、原子能力
当以上的云产品都无法满足自动化需求时,或需要的自动化能力非常灵活时,则可以依赖最基础的能力,云产品的原子能力 —— OpenAPI、SDK和CLI。
Cloud厂商提供的SDK应该是使用OpenAPI的第一选择,SDK不仅给OpenAPI的调用提供了方便,更包含了诸多API调用的最佳实践等,根据二八原则,如默认配置应该可以满足80%的场景。
除此之外,Cloud厂商提供的CLI也是不二选择,当需要在Shell或脚本语言中快速集成时,或者当需要构建一个PoC类型的自动化项目时,直接使用CLI就可以快速达成目的。且CLI的语法相对而言比较简略,因此更容易上手。
3) 阿里云自动化能力和产品金字塔
4) 阿里云产品和能力与业界工具对照表