DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式

DevOps系列之 —— DevOps概览(一)软件产业和交付模式发展趋势
 
DevOps 系列文章,持续更新中 ~~~

  • 新兴软件技术及交付模式
    • 1. 云原生与微服务简介
      • 1)云原生
        • 概念
        • 云原生定义 —— Cloud Native关键特征
        • 云原生应用
      • 2)微服务
        • 概念
        • 优势
        • 劣势
    • 2. 敏捷与DevOps
      • 1)敏捷
        • 敏捷软件开发宣言
        • 可工作的软件是进度的首要度量标准
        • 价值驱动 – 敏捷与传统瀑布型模式的最大区别
        • 敏捷常用的工程方法
      • 2)DevOps
        • DevOps的概念
        • DevOps专家的观点
        • DevOps领先企业的观点
        • DevOps生命周期过程
        • DevOps 收益与价值
        • DevOps持续交付实施框架
      • 3)敏捷和DevOps关系
        • 敏捷与DevOps关系——DevOps覆盖端到端交付周期

新兴软件技术及交付模式

1. 云原生与微服务简介

1)云原生

概念

单机->分布式->云计算

  • 企业的云化,不仅仅是基础设施和平台的升级,应用也需要摒弃传统的设计方法 ,整个生命周期都基于云的特点设计,构建原生为云而设计的应用,充分利用的发挥云平台的弹性以及分布式优势,这就是
  • 全新技术
    • 容器
    • 微服务
    • 服务网格

云原生定义 —— Cloud Native关键特征

  • 云环境下构建、运行、管理软件的新的 系统实践范式
  • 充分利用云基础设施与平台服务
  • 具备 微服务化、弹性伸缩、分布式、高可用、多租户、自动化 等关健特征
    DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式

2)微服务

概念

单体架构(Monolithic):一个归档包(eg:war包/jar包),包含了所有功能的应用程序,部署简单,技术单一,用人成本低
随着互联网发展单体架构出现的缺陷

  • 复杂性高,单体架构包含模块多,边界模糊,依赖关系不清晰,代码质量参差不齐,项目复杂,修改代码比较困难
  • 技术债务逐渐上升:需求更迭、人员更迭,已使用的系统设计/代码难以修改(应用程序的其他模块可能以意料之外的方式使用它)
  • 部署速度逐渐变慢:代码增加——>构建、部署时间增加,每次功能变更/Bug修复都需要重新部署整个应用(全量部署耗时长,影响范围大、风险高)
  • 扩展能力受限,无法按需伸缩(单体应用只能作为一个整体进行扩展,无法结合业务模块的特点进行伸缩)
  • 阻碍技术创新:一般使用统一的技术平台/方案解决所有问题,所有成员使用相同的开发语言和架构,引入新的框架/技术平台非常困难

 
由于单体架构以上缺陷,越来越多公司采用 微服务架构范式 解决上面的问题

  • 将单个应用程序开发为 一 组 小 型 服 务color{red}一组小型服务
  • 每个小型服务都 在 自 己 的 进 程 中 运 行color{red}在自己的进程中运行 ,通过轻量机制通信(通常是HTTP资源API)
  • 服务 围 绕 业 务 功 能 进 行 构 建color{red}围绕业务功能进行构建
  • 独 立 部 署color{red}独立部署
  • 可以使用 不 同 的 编 程 语 言color{red} 不同的编程语言
  • 可以使用 不 同 的 数 据 存 储 技 术color{red}不同的数据存储技术
  • 服务仅做 最 低 限 度 的 集 中 管 理color{red}最低限度的集中管理

优势

  • 微服务可以将应用拆分成多个核心功能,每个功能称为一项服务,可以 单 独 构 建 和 部 署color{red}单独构建和部署
  • 缩短TTM(Time To Market)时间
  • 有助于实现更加敏捷的部署和更新(开发时间缩短)
  • 高度可扩展(跨多服务器等)
  • 弹性伸缩(独立服务不会彼此影响),一个服务出现故障,不会导致整个应用下线
  • 易于部署(模块化)
  • 易于访问
  • 更加开放(多语言API,自由选择语言技术)

劣势

  • 运维要求较高(单体服务只需要保证一个应用的运行,微服务中,要保证几十甚至几百个服务的正常运行与协作)
  • 分布式固有的复杂性(系统容错、网络延迟、分布式事务等)
  • 接口调整成本高(微服务通过接口通信,若修改某个微服务的API,可能所有使用了该接口的微服务都需要做调整)
  • 重复劳动(很多服务可能使用相同的功能,而这个功能没有达到分解为一个微服务的程度,这时可能各个服务都会开发这一功能,导致代码重复)

2. 敏捷与DevOps

1)敏捷

敏捷软件开发宣言

  • 价值观
    • 个体和互动 高于 流程和工具
    • 工作的伙伴 高于 详尽的文档
    • 客户合作 高于 合同谈判
    • 响应变化 高于 遵循计划

    尽管右项有其价值,我们更重视左项的价值

  • 十二原则
    DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式

    价值驱动 – 敏捷与传统瀑布型模式的最大区别

    DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式

    敏捷常用的工程方法

    • 以Scrum为基础的方法论居于主流地位,使用率最高
    • 其他的还有:看板方法、精益创业、极限编程等
    • 小众方法论:DSDM、FDD、RAD
      DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式
    • DevOps 通 常 指 的 是 新 兴 的 专 业 化 运 动 color{red}通常指的是新兴的专业化运动

      DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式
      DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式
    • 计划阶段:运维人员为开发人员提供需求,并制定发布计划
    • 编码/构建/验证阶段:Scrum、极限编程和精益生产,持续集成、自动化测试等
    • 部署阶段:开发团队负责部署、监控部署过程,以及部署后的运行

    DevOps 收益与价值

    • 《2019 DevOps 状态报告》
    • DevOps Eilite组织 VS DevOps Low组织
      • 208 color{red}208 208 倍的代码部署频率
      • 106 color{red}106 106 倍的代码到部署时间效率
      • 1 / 2604 color{red}1/2604 1/2604 的故障恢复时间
      • 1 / 7 color{red}1/7 1/7 的变更失败率
    • 变更失败率指软件发布后不可用或者服务质量 出现不可接受的性能下降
    • 故障恢复时间指从现网发现问题,到故障全部恢复的时间

    DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式

3)敏捷和DevOps关系

  • EXIN(国际信息科学考试学会)的DevOps Master白皮书,下图为DevOps知识体系图,它将DevOps诠释为如下四个部分
    • 敏捷管理:包含计划、需求、设计、开发
    • 持续交付:包括开发、部署、运营
    • IT服务管理:包括运营、周期终止
    • 精益管理:从计划到周期终止的全程

DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式

最后,欢迎大家关注我的个人微信公众号 『小小猿若尘』,获取更多IT技术、干货知识、热点资讯。同时,我在公众号中分享了精心整理的一些视频资料(包括 Python全栈教程、AI教程、前端、数据库等),大家回复相应关键词即可获取网盘视频链接,感谢大家的关注??

 

DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式 小小猿若尘 DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式 微信公众号 DevOps系列之 —— DevOps概览(二)新型软件技术及交付模式

来源:若尘

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月21日
下一篇 2021年7月21日

相关推荐