开发者学堂课程【ALPD 云架构师系列:云原生 DevOps 36计-阿里云云效出品:不可变环境:打造稳定、可预期、低成本的运行环境】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/772/detail/13501
不可变环境:打造稳定、可预期、低成本的运行环境
内容介绍:
一. 不可变构建(回顾)
二. 运行环境的目标:稳定、可预期、低成本
三. 环境管理的常见问题
一. 不可变构建(回顾)
1. 不可变构建:相同的源码+相同的环境+相同的构建脚本=>一致的软件制品
2. 通过 Dockerfile 描述构建环境、构建脚本及运行环境
3. 容器的基本概念:One process per container
4. 按逻辑单库的结构组织代码库和代码组
这样才能以更好的组织形态去协作大家更好的维护。
5. 软件交付过程,其本质是开发者围绕代码库的协作过程,按照 SLA(Small、Linear、Atomic)的原则提交代码
6. 将环境相关的配置与镜像分离
问题:运行环境相关的配置属于哪一层?
答案:Pod和系统
解析:配置越靠里,成本越高。
二. 运行环境的目标:稳定、可预期、低成本
终态:提供稳定、可预期的系统
可预期的系统,需要确保运行环境和软件制品(例:容器镜像)一致性
运行环境,要做到环境的可预期和稳定,环境需要稳定。另外,因为相对来说环境资源成本比较高,所以要强调低成本这一点。
整个运行环境分为三部分,有制品(如容器镜像),运行上下文(数据、配置),编排规则。
制品要保证一致性,首先保证代码极其依赖的一致性,并且构建环境的一致性,构建脚本的一次性。 从环境的角度来讲应用或者服务的制品,比如运行容器镜像的数据配置相关的,编排规则怎么在上面跑,部署在哪些容器里头,在哪些机器上,哪些节点,以及要几次的备份,这些东西通过部署的动作到了环境。这是部署完了之后才会形成一个可以运行的环境。
三. 环境管理的常见问题
现实当中,在环境一块里会有很多的问题的。环境问题往往是痛点。
1. 常见的问题有哪些?
⑴配置文件中有好多监控之类的配置,我不知道该怎么设置
⑵测试依赖的环境经常发生问题, 耗费大量的等待和排查时间
⑶搭建一套新的环境很痛苦,经常需要耗费整天的时间
⑷开发的应用在本地跑不起来
⑸每次配置环境都需要小心翼翼,生怕漏修改了某个配置
2. 问题的根源:环境没有清晰的定义
环境不清晰,就会带来很多很多的问题,不管是拍照,还是去创建新环境,都会带来很多问题。
清晰的定义指的是说环境里头应该包含什么,他是怎么部署起来的,这些东西都需要有明确的定义。
3. 环境管理的终态:软件定义的不可变环境
通过相同的制品,相同的运行上下文,相同的编排规则去部署一致的环境。
这个定义是明确的、一致的。当制品相同的时候,有相同的运行上下文,资源、数据都一样,基于相同的编排规则,那么环境就应该是一致的,它的环境在任何地方都是一样的,不会有偏差。
环境管理的终态,其实可以通过代码库版本管理的方式定义出来,那么第一环境它基本上就是明确的,第二是有明确版本,这样就可以保证不同的版本的环境的一致性。