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

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
性能测试 PTS,5000VUM额度
简介: 阿里云云原生 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需要投入更多的成本在前期阶段,开发之群需要有一个整体的流程,需要配置自动化的代码流水线还有相应的工具集,在整个流水线架构完成之后,后续的开发成本会大大降低,同时带来了部署和运维的时间成本的极度优化。

相关文章
|
9天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2025 年 2 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
340 10
阿里云微服务引擎 MSE 及 云原生 API 网关 2025 年 2 月产品动态
|
1月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
|
12天前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
22 10
|
11天前
|
负载均衡 容灾 Cloud Native
云原生应用网关进阶:阿里云网络ALB Ingress 全面增强
云原生应用网关进阶:阿里云网络ALB Ingress 全面增强
|
13天前
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
11天前
|
边缘计算 Cloud Native 调度
感谢认可!阿里云云原生大规模云边协同技术荣获浙江省科学技术进步奖一等奖
感谢认可!阿里云云原生大规模云边协同技术荣获浙江省科学技术进步奖一等奖
|
12天前
|
人工智能 关系型数据库 分布式数据库
阿里云PolarDB重磅发布云原生与Data+AI新特性,打造智能时代数据引擎
阿里云PolarDB重磅发布云原生与Data+AI新特性,打造智能时代数据引擎
|
3月前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
3月前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
7天前
|
存储 缓存 Cloud Native
云原生时代的架构革新,Apache Doris 存算分离如何实现弹性与性能双重提升
随着云基础设施的成熟,Apache Doris 3.0 正式支持了存算分离全新模式。基于这一架构,能够实现更低成本、极致弹性以及负载隔离。本文将介绍存算分离架构及其优势,并通过导入性能、查询性能、资源成本的测试,直观展现存算分离架构下的性能表现,为读者提供具体场景下的使用参考。
云原生时代的架构革新,Apache Doris 存算分离如何实现弹性与性能双重提升