阿里云云原生 DevOps - DevOps 基础概念

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
云原生网关 MSE Higress,422元/月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 阿里云云原生 DevOps - DevOps 基础概念

开发者学习笔记【阿里云云原生助理工程师认证(ACA)课程:阿里云云原生 DevOps - DevOps 基础概念】

课程地址:https://edu.aliyun.com/course/3112075/lesson/19057


阿里云云原生 DevOps - DevOps 基础概念


内容介绍

一、开发实例二、传统开发模式讲解

二、DevOps 基础概念

三、DevOps 与传统开发模式对比

四、DevOps 与传统开发模式对比

 

课程目标
希望通过本章节的学习,能够掌握 DevOps 的基本概念及核心组成,了解企业开发在云原生时代的困境及诉求,以及阿里云是如何助力企业轻松实现一站式 DevOps 平台,最后以企业开发所面临的困境为切入点,带领体验阿里云云效成是如何构建企业 DevOps 解决方案的

 

一、开发实例

image.png

1、问题现象

此处列举了一个具有代表性的例子,某企业有20人左右,分工明确的一个开发团队,有产品经理、开发人员。部署人员、测试人员等,以传统的瀑布式开发模式运行,整个开发过程如下,开发12天,联调(集成)5天,测试(端到端)8天,上线8小时,计算出发布一个需要一个月的时间,此过程还存在异常情况的发生,需要消耗额外的精力排查和修复。

2、问题分析

从两个方向对该现象进行分析,一是各阶段周期时间拆分二是各个环节中的等待、阻塞及资源浪费情况,最后定位出关键问题。

3、问题定位

(1)系统紧耦合问题较严重,相互影响和阻塞。

该项目本身是由多个子系统组成的复杂性,且没有采用微服务的架构,而是传统的多系统间的紧耦合,模块之间相互依赖,这样会造成多个子系统间无法并行交付,相互之间影响较多。一个子系统上线,其他相应的子系统就需要做相应的集成和联调,并且故障的传播是不可控的,只要一端出现问题,整个版本会被阻塞。

(2)各端未控制质量,集成时问题爆发。

首先,开发人员的自测不足,带有隐患的输出物直接进入后续环节,导致大量的缺陷在集成阶段集中暴露;其次,自动化能力的缺失,大量依赖人工处理,包括部署、测试、交付在内的所有操作均需要人工方式来执行;此外,团队间存在资源争抢问题,相互之间的冲突比较严重。

(3)环境交付未归一化,发布效率低。

一个版本开发完成后,首先会被部署到测试环节,测试完成后再放到类生产环节,最后才能部署上线。在此过程中,需要以手工的方式做多次版本的迁移,很容易导致线上线下不一致,同时测试环节、类生产环节也需要专门的维护,耗费大量的成本;并且串行式的发布上线,需要长时间的停服。为了尽可能减少对业务的影响,经常看到很多团队在凌晨进行版本升级,但是对于电商、短视频等许多行业,即使凌晨停服升级,在业务上也是无法接受的。

 

二、传统开发模式讲解

传统的开发模式如下,将业务、开发、测试、运维等许多环节都区分很清晰,PD 将需求写出,开发者根据需求完成代码的书写,传达到 SCM , SCM 将代码带包,打包后传达给 QA , QA 运维完成后通知 Ops 上线, Ops 进行上线部署,最后整个需求 relieve 版本。
image.png

这种方式的优势在于分工明确、职责清晰以及质量有保证,层层制约容易把控;劣势也较明显,开发和运维团队是完全独立的,在这种情况中会容易产生两个问题,一是整个过程需要多个部门人员的参与,沟通成本高,如开发人员需要了解需求才明确如何写代码, QA 也需要了解需求才能明确如何做测试, Ops 同样需要了解需求才能够维持线上版本的稳定;二是在过程中存在大量的人工操作,每个环节的质量都是不可控的,每个环节都可能成为项目推进的瓶颈。

 

三、DevOps 基础概念

为了解决上述问题, DevOps 应运而生,在这种模式下都发生了改变,不再是每个人做完自身事情交给下一个人,而是通过工具驱动所有的流程往前走,如开发写完代码,通过工具驱动自动打包、自动测试、自动升级、自动部署,同时还会配置监控,在工具的外围,确保工具中的每一个环节能够正常运转,同时还要保障工具中的模块能够支撑新的业务变化。
image.png

DevOps 分工模式的好处很明显,可以减少沟通成本及等待风险和降低正常需求交付所需时间,使得各个团队减少时间损耗,能够更加高效协同工作; DevOps 分工模式的劣势是,每个环节参与的角色较多,风险较高,另外对于业务形态多的企业,工具支撑成本高,因为每一种业务形态都需要 DevOps 工具集做支撑,工作量十分巨大。

DevOps 是一套集组织文化、团队协作、工程实践和工具为一身的工作方式, DevOps 并不是一个工具集,也不是一个开发流程,它是一种工作方式,以帮助企业高效、快速、高质量地交付应用程序和服务为目的,从而更好地实现客户价值为目标,它的出现正是可以帮助企业能够帮助企业跨越业务高速发展和研发低效交付的鸿沟。
image.png

DevOps 这个词是由 Development 和 Operations 组成的,它是一种促进开发和运维团队之间的协作,以自动化和可重复的方式更快的将代码部署到生产中的文化, DevOps 帮助团体提高软件和服务的交付速度,使团队能够更好的为客户服务并提高在市场中的竞争力,简而言之, DevOps 可以定义为通过更好的沟通和协作,使开发和运维保持一致,进而减少团队间的损耗,更加高效的协同工作。 DevOps 实现了技术与流程的自动化,是一种组织管理和流程方式,是软件质量和监控的关键环节,同时也是一种企业文化。

 

四、DevOps 与传统开发模式对比

研发运维一体化是很早以前就已经提出的敏捷开发的概念,它提倡团队在开发和运维的过程中进行有效的沟通,从而形成一种敏捷的开发模式。 DevOps 1.0 就是在这种敏捷开发模式的基础上提出的,它的核心是为了解决开发和运维过程中的沟通和协调问题,但是因为一些技术问题,并没有完全实现自动化测试,自动集成和自动部署,系统架构也都为分布式的,并没有完全实现微服务的架构。 DevOps 2.0时,就能通过技术手段实现自动化的流水线,能够自动化的集成和自动化的部署,由此, DevOps 也进入了云原生的时代,下面从软件的架构特性、开发周期、代码和系统质量、部署难度和时间以及实施成本这五个角度逐一进行对比。

image.png

软件架构,传统模式下采用的是单体架构,每个小模块的升级改造都会对整个系统产生影响,导致上线存在很多风险,在一个大型的项目中,往往需要几十甚至上百人连续通宵多个晚上才能够实现版本的上线; DevOps 1.0虽然才采用了分布式的模式,但是缺乏自动化的流程,所以软件开发周期基本是以周为单位; DevOps 2.0 的时代采用了微服务的架构,以小功能模块为服务单元,升级时只需要升级特定的服务单元,从而大大的提高了软件的交付效率,可以做到小时甚至分钟为单位进行迭代,一天能够迭代十几次甚至更多。
代码和系统质量,传统模式往往使用一种语言模式做开发,这会导致一些场景上的开发受到限制,子系统间紧耦合,没有很好的代码质量保障; DevOps 1.0 系统可以是异构的,不同层次之间可以使用不同的语言,但核心后台数据库的质量对系统影响严重; DevOps 2.0 时代使用了微服务,每一个模块都可以绑定自己的存储,使用不同的存储方式,可以使用不同的语言来解决特定的问题,子服务更加益于单独测试,代码的质量也更加有保障,系统能够以子服务为单位做到扩容和故障隔离。
部署难度,传统模式部署是以月为单位,并且有大量的工作依赖于手工操作,难度大、风险高、易出错; DevOps 1.0时代部署是以虚拟机为单位,可以通过云服务厂商提供的模板降低部署难度,但是部署回退的问题依然没有解决; DevOps 2.0以容器为单位的发布和更新,支持灰度、蓝绿等发布风格,可以方便的回退。实施成本,传统模式下,开发、部署和运维会浪费非常多的成本; DevOps 1.0 采用了敏捷模式开发,大大提升了开发的效率,采用自动化运维工具,也降低了很多运维成本; DevOps 2.0需要投入更多的成本在前期阶段,开发之群需要有一个整体的流程,需要配置自动化的代码流水线还有相应的工具集,在整个流水线架构完成之后,后续的开发成本会大大降低,同时带来了部署和运维的时间成本的极度优化。

相关文章
|
27天前
|
边缘计算 运维 Cloud Native
浙江省科技进步奖一等奖!阿里云云原生技术实现新突破
科技成果鉴定委员会高度评价该技术,“项目研发难度大,成果创新性强,对促进关键技术进步及自主可控具有重大意义,成果在国内外开源社区产生了广泛影响,并成功应用于互联网、交通、金融、物流、医疗等多个行业。”
|
8天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
8天前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,智算时代云原生操作系统
2024云栖大会,阿里巴巴研究员易立分享了阿里云容器服务的最新进展。容器技术已成为云原生操作系统的基石,支持多样化的应用场景,如自动驾驶、AI训练等。阿里云容器服务覆盖公共云、边缘云、IDC,提供统一的基础设施,助力客户实现数字化转型和技术创新。今年,阿里云在弹性计算、网络优化、存储解决方案等方面进行了多项重要升级,进一步提升了性能和可靠性。
|
10天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 11 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
23天前
|
敏捷开发 Kubernetes Cloud Native
阿里云云原生技术为企业提供了一套高效、灵活的解决方案,支持跨云部署与管理
在多云环境中,阿里云云原生技术为企业提供了一套高效、灵活的解决方案,支持跨云部署与管理。通过容器化、服务网格等技术,实现了应用的一致性与可移植性,简化了多云环境下的资源管理和服务治理,帮助企业应对复杂的云环境挑战,加速数字化转型。
39 5
|
23天前
|
存储 Prometheus 运维
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案。该集成结合了ARMS的基础设施监控能力和Prometheus的灵活配置及社区支持,实现了全面、精准的系统状态、性能和错误监控,提升了应用的稳定性和管理效率。通过统一的数据视图和高级查询功能,帮助企业有效应对云原生挑战,促进业务的持续发展。
30 3
|
27天前
|
边缘计算 运维 Cloud Native
阿里云基于云原生的大规模云边协同关键技术及应用荣获浙江省科学技术进步一等奖
11月22日, 2023年度浙江省科学技术奖获奖成果公布,阿里云与浙江大学、支付宝、谐云科技联合完成的基于云原生的大规模云边协同关键技术及应用获得浙江省科学技术进步一等奖。
|
4月前
|
敏捷开发 缓存 前端开发
阿里云云效产品使用合集之前端打包时npm安装卡住一般是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 弹性计算 持续交付
阿里云云效产品使用合集之同一个主机部署是否支持下载多个制品
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 监控 Java
阿里云云效产品使用合集之Codeup WebIDE环境下,如何使用通义灵码
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。