声明式环境管理最佳实践|学习笔记

简介: 快速学习声明式环境管理最佳实践

开发者学堂课程【ALPD 云架构师系列-云原生 DevOps36计声明式环境管理最佳实践】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/82/detail/1274


声明式环境管理最佳实践

 

内容介绍:

一、通过 IaC 来定义环境

二、新的挑战

三、Open Application Model(OAM 模型)

四、总结

 

一、通过 IaC 来定义环境

对于 IaC 的概念理解,例如云机房的上架会用到 IaC,这是早期接触的。

比如给一个新的机器装配 Windows7 的系统,并配有 DNS 等,按照原有的方式一条一条命令发布会很麻烦。

可以定义一个文件,例如杨某文件再搜索 step 这类工具将它建立起来。现如今云原生再讲 IaC 时可以将整个环境通过基础设施描述出来,包括中间线资源都属于基础设施,这比原有单纯的上架涉及要广。从整个配置的角度来看,有应用配置、应用运维配置、基础设施运维配置。对于整体软件生产的过程也是需要配置,例如怎么合并、怎么发布、怎么构建。

例如作为一个软件,需要符合怎样的质量才能在系统中,以怎样的方式去运行。其中的配置都可以用代码的方式保管,将其保存在代码库中。

image.png

举个简单的代码库的示例,将应用代码和 IaC 代码分成两个库,也会有放在一个库中。

例如所看到的在 IaC Repo 中放入动态配置(运行时的配置)、Baas 配置(基础设施资源所依赖的数据库,中间键资源,比如存储,消息队列)、监控配置(监控的力度,监控的采样频率)、发布配置(以金丝雀的发布方式,对于每个批次的间隔时间,发布策略,发布形式的定义),通过这样的方式管理放在代码库中可以完成的很好。

 

二、新的挑战

1、灵活的代价

每一组件,有自己的配置方式,例如开发一个插件可以用于限流,或者做一个资源水位的管控,或是超卖的管控,开启这个插件需要在ConfigMap 中定义一个变量。需要将 Ingress 和 Rollout 放在一起工作才能完成。

image.png

如果同时使用 HPA 和 CronHPA 会引起冲突,在中途会出现错误。这些 yaml 文件仿佛原始人的火种,即使小心伺候也有熄灭的可能。

2、知识的成本

网络配置存在有很多种,不清楚怎样去选择实现。在机械应用中MYSQL 设计时没有考虑 HBase 这样的场景,对于 HBase 并不是很友好,不清楚 MYSQL 集群该怎样去部署。

例如在阿里云买了一个 Pod 的机群,但是需要大数据的处理能力,并且需要很快绑定 SSD 磁盘,但是不清楚怎么能将它们联系在一起。下面是对源代码的展示,go 语言存在200多万代码,需要了解清楚如何放置和组织。

例如灵活的代价,尝试着用范式定义这样管理会比较省时省力。

 

三、Open Application Model(OAM 模型)

凯撒的归凯撒,上帝的归上帝。

对于下面环境配置的管理,有三种角色,第一种是 Developer 开发者,关注的是应用开发,第二种是 Application Operator 应用运维,开发者会去做运营上应用的运维配置,例如应用线轴。第三种是 Infrastructure Operator 基础设施运维,对组建能力的维护和开发。例如做滚动发布需要发布策略,手里资源的限制策略,这些需要在 Infrastructure 处理。

这三种角色的技能背景和技能战术是完全不一样的,他们之间必然会产生协作,如果他们之间协作不好,会产生前面所遇到的问题。在这个架构中把抽象形的左边内容,每个 component 里面包含需要的参数和描述,同时右边的配置 application 和另一个配置的 configuration,描述如何应用的一些相关的配置,同时也会描述 Triat。

 image.png

将开发者关心的、应用运维关心的和技术设置有关的分成三块,一个是 component 另一个是 application configuration 部分以及 Triat 部分分成三块。

同时在框架或者模型中对它们之间会出现的冲突做了预先的检测,保证中间不会出现问题。这样预先找到错误不会对线上服务有很大影响。提前给出应用说明将 OAM 模型相应的配置定义清楚,并提前做一些相应的预警,只有组合在一起才能够替换。另外重要的一点是分离。 

 

四、总结

前半部分基本介绍周围一致的环境包含什么,并且怎样去维护环境,维护环境是可以用 IaC 的方式,引用 OAM 模型去管理这些配置。回到环境本质还是希望能够有一个稳定可预期并且低成本的环境。

相关文章
|
Rust 算法 安全
【密码学】一文读懂HMAC
本文将来聊一聊基于哈希函数的消息认证码,在此之前,先来科普一下什么是 「消息认证码」 (MAC), 先来看一个简单的栗子
2275 0
【密码学】一文读懂HMAC
|
7月前
|
弹性计算 Java Maven
从代码到容器:Cloud Native Buildpacks技术解析
Cloud Native Buildpacks(CNB)是一种标准化、云原生的容器镜像构建系统,旨在消除手动编写Dockerfile,提供可重复、安全且高效的构建流程。它通过分层策略生成符合OCI标准的镜像,实现应用与基础镜像解耦,并自动化依赖管理和更新。阿里云应用管理支持通过CNB技术一键部署应用至ECS,简化构建和运行流程。
|
JavaScript Docker Python
下个时代的开发工具-Nix:声明式的运行环境构建器、简单场景下的docker替身
Nix 是一个独特的包管理工具和构建系统,采用声明式方法管理软件包和运行环境。它通过精确控制依赖关系和环境配置,确保软件的可重复性、隔离性和可追溯性。Nix 支持多语言开发环境,提供声明式配置、环境隔离、回滚与版本控制等核心功能,适用于复杂开发场景,有效解决依赖冲突和环境不一致问题。
1503 3
|
3月前
|
数据采集 监控 数据管理
数据管理最容易混淆的3个概念:元数据、数据元、元模型
本文深入解析数据领域三大核心概念:“元数据”“数据元”“元模型”,从定义、用途到实际应用,清晰区分三者区别。元数据是“数据的说明书”,描述数据来源与使用方式;数据元是“最小数据单元”的标准,确保数据统一与规范;元模型是“模型的设计规则”,指导模型合理构建。三者相辅相成,是数据治理不可或缺的基础。掌握它们,助你提升数据管理效率,避免踩坑。
|
5月前
|
人工智能 IDE 程序员
阿里也出手了!灵码AI IDE问世
各位程序员小伙伴们,是不是还在为写代码头秃?别担心,阿里云带着它的通义灵码 AI IDE 来拯救你啦! 相信不少小伙伴已经在VSCode、JetBrains IDE等主流开发工具中安装过通义灵码这款插件。 通义灵码插件全网总下载量超 1500 万,开发者采纳代码行数超 30 亿且每月增速 20%-30%。 今天我们要说的不是这款插件,而是阿里刚出的“为AI而生的灵码IDE”。
581 0
|
11月前
|
机器学习/深度学习 存储 缓存
ATB概念之:算子tiling
算子 tiling 是一种优化技术,用于提高大规模张量运算的计算效率。它通过将大任务分解为小块,优化内存使用、支持并行计算,并防止内存溢出。在ATB中,tiling data指kernel的分片参数,用于指导计算。ATB提供了三种 tiling data 搬移策略:整体搬移、多stream搬移及随kernel下发搬移,旨在优化内存拷贝任务,提高计算效率。
Elasticsearch 批量更新
讲述Elasticsearch批量更新索引指定字段操作
|
12月前
|
XML JSON Kubernetes
什么是 YAML?:一种简洁高效的数据序列化格式
什么是 YAML?:一种简洁高效的数据序列化格式
1732 0
|
存储 SQL NoSQL
详解数据库管理系统(DBMS)
【8月更文挑战第31天】
3365 0
|
机器学习/深度学习 人工智能 监控
一文读懂计算机视觉4大任务:分类任务、检测任务、目标分割任务、关键点检测任务
一文读懂计算机视觉4大任务:分类任务、检测任务、目标分割任务、关键点检测任务