zoukankan      html  css  js  c++  java
  • 持续交付9-基础设施和环境管理

    基础设施和环境管理

    部署软件步骤:

    1. 创建并管理应用运行所需的基础设施
    2. 安装应用程序的正确版本
    3. 配置应用程序,包括数据和状态

    环境:指应用程序运行所需的所有资源和它们的配置信息.

    基础设施:代表了你所在组织的所有环境和支持其运行的所有服务.

    基础设施和环境管理方式:

    1. 使用版本库中的配置信息指定基础设置所处的状态
    2. 基础设施具备自治性.可自动状态恢复
    3. 测试和监控基础设施.

    基础设施内容:

    1. 操作系统及其配置信息
    2. 中间件软件栈及其配置信息
    3. 基础设施软件,如版本控制代码库,目录服务,监控系统
    4. 外部集成点,外部系统和服务
    5. 网络基础设施

    解决什么问题

    基础设施和环境管理,持续交付不仅是应用的版本化管理,基础设施和环境的版本化管理是关键,只有将所有影响因素进行控制才能保障应用迭代后可顺利交付.也因此基础设施和环境的管理,可以说是持续交付的基石.

    1. 确保所有环境都是幂等的
    2. 很容易准备一个相同的环境系统,如预生产,生产环境
    3. 环境可实现自动化迁移
    4. 如果服务监控得当,环境还具备自恢复能力

    怎么做

    • 运维管理

    一般基础设施都是运维团队负责,但是开发也应该了解运维流程并给予相应的支持.

    1. 文档和审计.环境变更要被记录,便于追溯;变更管理要进行审批流程.
    2. 异常告警.开发要辅助运维监控的实施
    3. 进行灾备管理.高可用服务,需要进行建立备用服务,定时进行数据备份,恢复测试以及对于大数据量数据进行归档管理.
    4. 内部沟通使用运维熟悉的技术.

    监控很重要

    • 基础设施管理

    与交付流程的其他方面一样,创建和维护基础设施的所有内容都要进行版本控制:

    1. 操作系统的安装定义项
    2. 数据中心自动化工具的配置信息
    3. 通用基础设施配置信息
    4. 用于管理基础设施的所有脚本

    更代码管理一样,基础设施变更也要进行流水线控制,共享基础设施还应该单独建立流水线

    1. 变更之后,上层应用可以正常运行;
    2. 将变更内容放到运维管理的的测试和生产环境上
    3. 执行部署测试

    实际基础设施访问需要进行权限控制

    • 基础设施访问控制

    控制主要包括如下内容:

    1. 未经批准,不允许修改基础设施
    2. 制定基础设施变更自动化过程
    3. 进行基础设施监控

    测试和生产的审核流程要一致,区别只是审核严格程度不同.

    • 基础设施变更

    变更流程:

    1. 各种基础设施变更流程一致
    2. 变更流程需要进行用户登录管理,统计变化平均周期时间
    3. 变更要详细记录到日志
    4. 能够看到每个环境的变更历史
    5. 修改内容必须经过测试才可应用生产
    6. 每次修改进行版本控制,并通过自动化流程对基础设施进行变更
    7. 验证变更已生效

    自动化脚本即文档,它记录变更内容,便于后面进行变更审计.
    自动化对生产系统变更可使用工具:puppet,cfengine等

    • 基础设施环境安装

    环境安装分为三种方式:

    1. 手动安装,不推荐
    2. 自动化远程安装
    3. 虚拟化

    自动化安装方式流程:

    1. 通过带外远程管理系统启动服务器
    2. 通过网络启动并使用PXE安装操作系统
    3. 通过配置管理工具进行环境管理

    环境修改包括:修改操作系统的服务包,升级,安装新软件,修改配置项,执行部署等;

    • 中间件配置管理

    中间件组成:二进制安装包,配置项和数据

    实际中间件的管理分为三种:

    1. 配置文件管理.通过组合安装包和配置文件即可工作,这种管理最方便;
    2. 通过操作系统打包,使用服务器管理系统管理
    3. 无法通过上述方式管理的方式.

    实际中间件选择时就要考虑管理的便捷性:

    1. 通过产品文档和技术支持进行产品研究.
    2. 考查中间间如何处理状态的.实际中尽量选择文本处理方式,如果是数据库来进行状态处理,你还需要将数据库管理作为其一部分,会增加复杂性.
    3. 查找用于配置的API.

    如果都不满意,那么就应该学会放弃,选择更好的技术.

    • 基础设施服务的管理

    实际服务运行中经常会出现基础设施配置引起的问题,这种问题因为平常接触比较少,很难第一时间排查到.

    所以基础设施管理应该:

    1. 基础设施也应该进行版本控制
    2. 进行监控
    3. 重视日志
    4. 部署时进行基础设施冒烟测试
    5. 测试环境和生产环境的网络环境尽量一致,这样可以提前发现问题.这种方式可能感觉有些浪费,但是如果出现问题测试环境和生产环境进行蓝绿部署.相当于增加了一个备用环境.
    • 平台虚拟化

    虚拟化:是一种在一个或多个计算机资源上增加了一个抽象层的技术.
    但是基础设施中虚拟化指的是平台虚拟化,即模拟一个完整计算机系统.
    通过平台虚拟化,我们可以控制环境差异,轻易实现基础设施管理.

    优点:

    1. 轻松进行环境初始化
    2. 环境固化.
    3. 硬件标准化
    4. 基线维护简单.

    缺点:

    任何事物都有两面性,当你要降低风险时,就要较全面的了解它的优缺点.

    缺少动态能力,实际服务变化,不能及时调整.

    根据虚拟化的优点,我们可以通过虚拟化技术进行环境升级测试以及,应用部署测试,以及线上环境问题复现以及并行测试等操作.

    云计算

    云计算:分布式计算的一种,指通过网络将巨大的数据计算处理程序分解为无数小程序,然后通过多服务器组成的系统进行处理和分析这些小程序,得到结果并返回给用户.

    云计算服务可以分为三类:

    1. 基础设施即服务IaaS
    2. 平台即服务PaaS
    3. 软件及服务SaaS

    实际就是将不同的产品进行封装,便于用户按需使用.

    • 基础设施即服务

    包括基础设施服务,消息队列,静态内容托管,流媒体托管,负载均衡,存储.
    云服务天然支持虚拟化,扩展简单,有成熟的环境管理服务,使用非常便捷.但是使用的服务越多,与服务商的架构耦合就越严重,这是所谓的"上云容易,下云难"的来源.

    同时最核心的问题还是:安全问题和服务级别问题.

    安全问题:

    1. 如何控制外部危害
    2. 如何限制数据窃取

    因为黑盒原因,你无法自己控制这些行为,但是云服务商会提供相应的服务来便于你管理.

    • 平台即服务

    服务商通过让用户使用标准应用栈,通过牺牲一定的灵活性,便于应用程序和基础设施的横向扩展.

    优点:

    1. 按需扩展
    2. 服务商会处理非功能需求,如安全性,可用性,扩展性等
    3. 标准化应用栈,有利于服务迁移,服务初始化.

    缺点:

    1. 有灵活性限制
    2. 使用功能越多,服务绑定越严重

    基础设施的监控

    监控策略考虑内容:

    1. 监控应用和基础设施,便于收集必要数据
    2. 存储数据,便于分析
    3. 数据聚合展示
    4. 通知机制
  • 相关阅读:
    H5页面引用百度地图绘制车辆历史轨迹
    js 银行卡号校验
    PC页面客服微信QQ弹窗(鼠标移入显示移出隐藏)
    js 识别二维码
    js 生成二维码
    apicloud APP沉浸式状态栏设置
    微信公众号页面video标签播放视频兼容问题
    EasyUI 导出数据表格 (Export DataGrid)
    c#部署程式到服務器插入數據到oracleDB亂碼
    asp.net JS使用MVC下載(導出Excel)
  • 原文地址:https://www.cnblogs.com/chengmuyu/p/13284093.html
Copyright © 2011-2022 走看看