一步步实施 DevOps (五)

请首先阅读:

  1. 一步步实施 DevOps (一)
  2. 一步步实施 DevOps (二)
  3. 一步步实施 DevOps (三)
  4. 一步步实施 DevOps (四)

自动化部署

本章节重点谈自动化部署,每个人对自动化部署都有自己的理解,每个企业对自动化部署的需求也不同。

目前很多云平台开始推出一些列 DevOps 工具,体验了一下,仍然处在初级阶段,也不十分成熟。严格的说他们实现的 CD (持续部署)。

前面讲过持续集成不是 DevOps,这里我要说持续部署也不是 DevOps。CD是从CI中分离出来的,将部署单独提炼出来。

自动化部署远比 CD 要复杂,涉及包括:

 

  1. 网络层:网络设备管理,负载均衡切换,路由表管理
  2. 系统层:基础设施,操作系统,软件运行环境,
  3. 软件层:软件部署,CD部分
  4. 缓存层:缓存的刷新
  5. 搜索层:重建全文索引
  6. 数据层:数据库结构管理,数据库数据管理
  7. 日志层:谁,什么时间,做了什么操作,结果怎样
  8. 除此之外,管理上还需要提案和审批流程等等

所以 CD (持续部署)解决不了企业的生产环境自动化部署需求,CD紧紧是CI (持续集成)运行完成后,将构建物部署到指定的运行环境中。通常CD并不提供回撤功能,所以极少由企业使用 CD 部署生产环境。

Git -> 编译 -> 测试 -> 打包 -> 构建物 -> 部署 -> 运行

CI/CD 的流水线作业只能部署单一项目,对于大型网站就无能为例,例如很多大型网站:

  1. 构建过程非常复杂,不仅仅是一个项目打包, 而是需要多个模块,处理复杂的配置过程。
  2. 一次部署多台服务器,每个服务器可能有多个实例,实例间相互依赖关系
  3. 需要遵守严格的部署和启动顺序
  4. 记录部署日志,文件的新增,覆盖,删除
  5. 部署时间点
  6. 升级不仅仅是代码,还有数据库,缓存……
  7. 需要改变负载均衡设备节点,设置防火墙策略
  8. 需要有完备的回撤方案
  9. 除此之外好虚考虑增量部署和差异部署,例如部署100mb 以上的大文件,甚至GB尺寸的文件

很多 DevOps 方案注重 Docker,K8s解决方案。但实际情况 Docker 并不适用于所有场景,更多是物理服务器,虚拟机,云主机,刀片服务器…

使用 Docker 的前提是,Docker必须部署在宿主主机上,在云主机中部署 Docker 意义不大。

很多企业大量使用云主机,对 Docker 并无强烈的需求。

运维需要怎样的自动化部署工具:

 

  1. 项目管理:升级提案,工作流转,工作审批
  2. 备份管理:任何生产环境部署前都需要备份,必须实现增量备份和差异备份。
  3. 环境管理:环境部署,基础设施管理
  4. 阶段管理:开发,测试,生产
  5. 仓库管理:分支切换,分支保护(例如只允许合并不允许提交)
  6. 配置管理:每个阶段拥有自己的配置
  7. 文件过滤:排除过滤,包含获取,替换过滤(替换指定文件中的内容,用户不同阶段的差异区分)
  8. 覆盖删除:覆盖指定文件,删除指定文件
  9. 内容优化:Grup, Webpack 优化,压缩js, css,html5, 图片雪碧图…..
  10. 自动构建:编译,测试,测试报告,打包
  11. 部署管理:节点管理,增量部署,差异部署,md5sum 校验检查
  12. 部署脚本:部署前脚本(停止),部署后脚本(启动)或者环境初始化,解决部署依赖
  13. 时间线:谁,什么时间,做了部署,可以指定时间点随时回撤到指定版本。
  14. 部署日志:谁,什么时间,做了什么操作,产生什么结果
  15. 部署报告:生产 Issue或Ticker 报告

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/684174

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。