一步步实施 DevOps (五)-阿里云开发者社区

开发者社区> netkiller> 正文

一步步实施 DevOps (五)

简介: 本章节重点谈自动化部署,每个人对自动化部署都有自己的理解,每个企业对自动化部署的需求也不同。 目前很多云平台开始推出一些列 DevOps 工具,体验了一下,仍然处在初级阶段,也不十分成熟。严格的说他们实现的 CD (持续部署)。
+关注继续查看

请首先阅读:

  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 报告

版权声明

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
OceanBase数据库漫谈
从开发视角、运维视角、数据拆分漫谈OceanBase
20 0
node+mysql+express接口开发数据库连接池
node+mysql+express接口开发数据库连接池
18 0
教育培训机构使用阿里云无影桌面优缺点
配置灵活,GPU满足设计产品线,价格低廉,随开随用。
26 0
Node + Express + MySQL 接口开发完整案例
Node + Express + MySQL 接口开发完整案例
20 0
工商银行实时大数据平台建设历程及展望
中国工商银行大数据平台负责人袁一在 FFA 2021 的分享
28 0
【mockito】单元测试之mockito简单使用
项目使用的是springmvc+mybatis 开发; mock包为 mockito-all;虽然也引用了powermock,但截至目前,还未使用到;如果使用到后续再补相关笔记。
15 0
ACP实战特训营RDS(DAY3)
要点记录 1. PolarDB的基本概念 1.1、对比单机数据库优势有哪些:简单易用、极致性能、降低成本、海量存储、安全可靠、快速弹性 1.2 、单机数据库容量瓶颈-单机数据库扩展困难-数据库使用成本过高-分布式数据库应用开发繁琐 2. PolarDB产品系列:集群版-单节点-历史库-多主架构 2.1、集群:一个集群包含一个主节点和多个读节点,最多16个节点,即一个主节点和15个只读节点 2.2、地域:是指物理的数据中心,一般情况下,PolarDB集群应该和ECS实例位于同一地域,以实现最高的访问性能
14 0
浅谈我对DDD领域驱动设计的理解
DDD的全称为Domain-driven Design,即领域驱动设计。下面我从领域、问题域、领域模型、设计、驱动这几个词语的含义和联系的角度去阐述DDD是如何融入到我们平时的软件开发初期阶段的。要理解什么是领域驱动设计,首先要理解什么是领域,什么是设计,还有驱动是什么意思,什么驱动什么。
12 0
Flutter基础笔记
目录 List里面常用的属性和方法: Set Map forEach,map, where,any,every extends抽象类 和 implements Flutter环境搭建 入口文件、入口方法 第一个 Demo Center 组件的 使用 把内容单独抽离成一个组件 给 Text 组件增加一些装饰 用MaterialApp 和 Scaffold两个组件装饰 App Text 组件 Container 组件 图片组件 引入本地图片 裁剪布局之 ClipRect、ClipRRect、ClipOval、ClipPath、CustomClipper 实现圆角以及实现圆形图片 圆形头像
4 0
+关注
netkiller
Nickname:netkiller | English name: Neo chen | QQ: 291379 | 订阅号:netkiller-ebook | 网站:http://www.netkiller.cn
229
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载