持续交付发布可靠软件的系统方法(交付生态圈)第十一章:基础设施和环境管理

《持续交付发布可靠软件的系统方法》读书笔记

基础设施与环境管理的目标是让所有测试环境(包括持续集成环境)都要与生产环境相似,特别是它们的管理方式。
环境是指应用程序运行所需的所有资源和它们的配置信息。有如下这些属性:组成运行环境的服务器的硬件配置信息:如CPU类型和数量、内存大小、硬盘和网卡等;应用程序运行所需要的操作系统和中间件:如消息队列、应用服务器、web服务器及数据库服务器等的配置信息。
基础设施代表了所在组织中的所有环境以及支持运行的所有服务,如DNS服务器、防火墙、路由器、版本控制库、存储、监控、邮件服务、日志服务等。
准备部署环境及管理它,要基于以下原理,用一个整体方法来管理所有基础设施:

  • 使用保存于版本控制库中的配置信息来指定基础设施所处的状态
  • 基础设施应该具有自治特性,即它应该自动地将自己设定为所需状态
  • 通过测试设备和监控手段,应该时时都能掌握基础设施的实时状况
  • 基础设施还应该具有非常容易重新搭建的特性

为了减少在类生产环境中的部署风险,需要精心管理以下内容:

  • 操作系统及其配置信息,包括各个环境
  • 中间件软件栈及其配置信息,包括应用服务器、消息系统和数据库
  • 基础设施软件,如版本控制库、目录服务器及监控
  • 外部集成点,比如外部系统和服务
  • 网络基础设施,包括路由器、防火墙、交换机、DNS和DHCP等
  • 应用程序开发团队与运维团队间的关系

理解运维团队的需要

开发团队往往需要尽可能快地交付软件,而运维团队的目标是稳定性。所有人的共识是:让发布有价值的软件成为一件低风险的事情。做这件事的最好方法是频繁发布,每次发布的变更很小。
运维团队使用熟悉的技术,在各个环境统一部署技术栈。开发人员是最开始部署环境的,所以一开始运维团队也需要在最开始写脚本的时候就加入其中。
对应用程序配置、中间件配置、操作系统配置、数据库配置等都需要进行统一管理。将它们像源代码一样加入版本控制库中,同时它们的配置也是部署流水线的一部分。

基础设施的建模和管理

如果项目处于开始阶段,这是制定基础设施配置管理策略的好时机。如果是一个遗留系统,并且没有好的控制规范的话,就要找出让它处于受控状态的方法。

  • 在没有批准的情况下,不允许他人修改基础设施
  • 制定一个对基础设施进行变更的自动化过程
  • 对基础设施进行监控,一旦发生问题,迟早发现。

对基础设施的修改是一个严肃的问题,在个问题上对测试环境与对生产环境同等重要。如果无法通过一个自动化过程从头重新创建基础设施的话,首先要实现访问控制,没有审批,不得对基础设施做任何修改;接下来在不关闭访问控制的情况下,创建自动化过程来管理基础设施。当然对测试环境的变更审核可以比生产环境的变更审核更容易些。
对基础设施进行修改的关键特征

  • 无论做哪类变更,如防火墙等都要走同样的变更管理流程
  • 流程使用一个所有人都需要登录的工单系统来管理
  • 变更应该有详细的记录
  • 能够看到每个环境进行的变更历史,包括部署活动
  • 生产环境变更前,必须先在类生产环境中测试通过,自动化测试也已经运行完成
  • 对每次修改都应该做版本控制,并通过自动化流程对基础设施进行变更
  • 需要有一个测试来验证变更是否成功

服务器的准备及其配置的管理

服务器可以使用PXE来做自动化的远程安装,或者使用虚拟化技术。同时服务器的配置需要添加到版本控制库中进行统一管理。一旦安装好操作系统后,就必须保证任何配置的修改都是以受控方式进行。除了运维团队外,任何人不能登录到服务器上,同时所有的变更都使用自动化系统来执行。

中间件的配置管理

中间件如果是系统标准安装的部分,直接使用配置管理工具进行部署;而如果不是系统标准安装的部分,可以将中间件打包,并将它放在包管理服务器上,然后使用同样的方式对其进行管理;最后对于没有考虑脚本化或者后台安装的产品,需要对其进行改造,并将配置相关的文件进行版本控制。

基础设施服务的管理

经常会出现已经成功完成部署流水线并在生产环境中运行的软件因为基础设施问题而不同正常工作。如DNS服务问题等。这种问题一般会比较难以诊断。有以下几个建议:

  • 对网络基础设施的每个部分都应该进行版本控制,使用Ansible类似的工具将配置文件从版本控制库中取出放在系统中运行,实现自动化
  • 安装一个好用的网络监控系统
  • 应用程序中对网络连接出现问题时,日志记录
  • 确保冒烟测试在部署时检查所有的连接
  • 确保集成测试环境的网络拓扑尽可能与生产相似
  • 出现问题时,可以使用tcpdump和wireshark进行排查

多宿主系统

生产系统中一个重要的增强部分是不同类型的流量使用多个隔离网络,并与多宿主服务器结合使用。多宿主服务器多个网络,一个用于运行备份,一个用于服务器的监控与管理,一个用做服务器间数据传输。

基础设施和应用程序的监控

创建监控策略时,需要考虑以下四点:

  • 对应用程序和基础设施进行监测,以便可以收集必要的数据
  • 存储数据,以便拿来分析
  • 创建一个信息Dashboard,将数据聚合在一起图表的形式展现出来
  • 建立通知机制,便于及时关注关心的事件

监控数据类型

  • 硬件,通过带外监控服务器的电压、温度、系统风扇速度、peripheral health等。
  • 构成基础设施的那些服务器上的操作系统,比如内存使用、CPU使用情况、交换分区、磁盘、IO、带宽等使用情况。
  • 中间件,如内存、数据库连接池、线程池、连接数、响应时间等。
  • 应用程序,设计一些数据监控的hook,比如业务交易数量、价格、转换率等。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容