持续交付5-基础设施和环境管理
Posted chengmuyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了持续交付5-基础设施和环境管理相关的知识,希望对你有一定的参考价值。
基础设施和环境管理
部署软件步骤:
- 创建并管理应用运行所需的基础设施
- 安装应用程序的正确版本
- 配置应用程序,包括数据和状态
环境:指应用程序运行所需的所有资源和它们的配置信息.
基础设施:代表了你所在组织的所有环境和支持其运行的所有服务.
基础设施和环境管理方式:
- 使用版本库中的配置信息指定基础设置所处的状态
- 基础设施具备自治性.可自动状态恢复
- 测试和监控基础设施.
基础设施内容:
- 操作系统及其配置信息
- 中间件软件栈及其配置信息
- 基础设施软件,如版本控制代码库,目录服务,监控系统
- 外部集成点,外部系统和服务
- 网络基础设施
解决什么问题
基础设施和环境管理,持续交付不仅是应用的版本化管理,基础设施和环境的版本化管理是关键,只有将所有影响因素进行控制才能保障应用迭代后可顺利交付.也因此基础设施和环境的管理,可以说是持续交付的基石.
- 确保所有环境都是幂等的
- 很容易准备一个相同的环境系统,如预生产,生产环境
- 环境可实现自动化迁移
- 如果服务监控得当,环境还具备自恢复能力
怎么做
- 运维管理
一般基础设施都是运维团队负责,但是开发也应该了解运维流程并给予相应的支持.
- 文档和审计.环境变更要被记录,便于追溯;变更管理要进行审批流程.
- 异常告警.开发要辅助运维监控的实施
- 进行灾备管理.高可用服务,需要进行建立备用服务,定时进行数据备份,恢复测试以及对于大数据量数据进行归档管理.
- 内部沟通使用运维熟悉的技术.
监控很重要
- 基础设施管理
与交付流程的其他方面一样,创建和维护基础设施的所有内容都要进行版本控制:
- 操作系统的安装定义项
- 数据中心自动化工具的配置信息
- 通用基础设施配置信息
- 用于管理基础设施的所有脚本
更代码管理一样,基础设施变更也要进行流水线控制,共享基础设施还应该单独建立流水线
- 变更之后,上层应用可以正常运行;
- 将变更内容放到运维管理的的测试和生产环境上
- 执行部署测试
实际基础设施访问需要进行权限控制
- 基础设施访问控制
控制主要包括如下内容:
- 未经批准,不允许修改基础设施
- 制定基础设施变更自动化过程
- 进行基础设施监控
测试和生产的审核流程要一致,区别只是审核严格程度不同.
- 基础设施变更
变更流程:
- 各种基础设施变更流程一致
- 变更流程需要进行用户登录管理,统计变化平均周期时间
- 变更要详细记录到日志
- 能够看到每个环境的变更历史
- 修改内容必须经过测试才可应用生产
- 每次修改进行版本控制,并通过自动化流程对基础设施进行变更
- 验证变更已生效
自动化脚本即文档,它记录变更内容,便于后面进行变更审计.
自动化对生产系统变更可使用工具:puppet,cfengine等
- 基础设施环境安装
环境安装分为三种方式:
- 手动安装,不推荐
- 自动化远程安装
- 虚拟化
自动化安装方式流程:
- 通过带外远程管理系统启动服务器
- 通过网络启动并使用PXE安装操作系统
- 通过配置管理工具进行环境管理
环境修改包括:修改操作系统的服务包,升级,安装新软件,修改配置项,执行部署等;
- 中间件配置管理
中间件组成:二进制安装包,配置项和数据
实际中间件的管理分为三种:
- 配置文件管理.通过组合安装包和配置文件即可工作,这种管理最方便;
- 通过操作系统打包,使用服务器管理系统管理
- 无法通过上述方式管理的方式.
实际中间件选择时就要考虑管理的便捷性:
- 通过产品文档和技术支持进行产品研究.
- 考查中间间如何处理状态的.实际中尽量选择文本处理方式,如果是数据库来进行状态处理,你还需要将数据库管理作为其一部分,会增加复杂性.
- 查找用于配置的API.
如果都不满意,那么就应该学会放弃,选择更好的技术.
- 基础设施服务的管理
实际服务运行中经常会出现基础设施配置引起的问题,这种问题因为平常接触比较少,很难第一时间排查到.
所以基础设施管理应该:
- 基础设施也应该进行版本控制
- 进行监控
- 重视日志
- 部署时进行基础设施冒烟测试
- 测试环境和生产环境的网络环境尽量一致,这样可以提前发现问题.这种方式可能感觉有些浪费,但是如果出现问题测试环境和生产环境进行蓝绿部署.相当于增加了一个备用环境.
- 平台虚拟化
虚拟化:是一种在一个或多个计算机资源上增加了一个抽象层的技术.
但是基础设施中虚拟化指的是平台虚拟化,即模拟一个完整计算机系统.
通过平台虚拟化,我们可以控制环境差异,轻易实现基础设施管理.
优点:
- 轻松进行环境初始化
- 环境固化.
- 硬件标准化
- 基线维护简单.
缺点:
任何事物都有两面性,当你要降低风险时,就要较全面的了解它的优缺点.
缺少动态能力,实际服务变化,不能及时调整.
根据虚拟化的优点,我们可以通过虚拟化技术进行环境升级测试以及,应用部署测试,以及线上环境问题复现以及并行测试等操作.
云计算
云计算:分布式计算的一种,指通过网络将巨大的数据计算处理程序分解为无数小程序,然后通过多服务器组成的系统进行处理和分析这些小程序,得到结果并返回给用户.
云计算服务可以分为三类:
- 基础设施即服务IaaS
- 平台即服务PaaS
- 软件及服务SaaS
实际就是将不同的产品进行封装,便于用户按需使用.
- 基础设施即服务
包括基础设施服务,消息队列,静态内容托管,流媒体托管,负载均衡,存储.
云服务天然支持虚拟化,扩展简单,有成熟的环境管理服务,使用非常便捷.但是使用的服务越多,与服务商的架构耦合就越严重,这是所谓的"上云容易,下云难"的来源.
同时最核心的问题还是:安全问题和服务级别问题.
安全问题:
- 如何控制外部危害
- 如何限制数据窃取
因为黑盒原因,你无法自己控制这些行为,但是云服务商会提供相应的服务来便于你管理.
- 平台即服务
服务商通过让用户使用标准应用栈,通过牺牲一定的灵活性,便于应用程序和基础设施的横向扩展.
优点:
- 按需扩展
- 服务商会处理非功能需求,如安全性,可用性,扩展性等
- 标准化应用栈,有利于服务迁移,服务初始化.
缺点:
- 有灵活性限制
- 使用功能越多,服务绑定越严重
基础设施的监控
监控策略考虑内容:
- 监控应用和基础设施,便于收集必要数据
- 存储数据,便于分析
- 数据聚合展示
- 通知机制
以上是关于持续交付5-基础设施和环境管理的主要内容,如果未能解决你的问题,请参考以下文章