云原生与 DevOps

简介: 云原生与 DevOps

开发者学习笔记【阿里云DevOps助理工程师认证(ACA)课程云原生与DevOps

课程地址:https://edu.aliyun.com/course/3112069/lesson/18997


云原生与DevOps

 

内容介绍:

一、云原生的基本概念

二、微服务

三、容器

四、CI/CD及DevOps

 

一、云原生的基本概念

 图片204.png

1、基本概念

根据Cloud Native Computing Foundation,云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。云原生的定义一直在变,不同组织有不同的定义,比如,CNCF的定义以及最早的Pivotal公司给出的定义。同一个组织在不同的时间点有不同的定义,同一个人在不同的时间点也会有不同的定义。云原生的定义在未来还会变,现在最新的定义是由CNCF给出的1.0版本的定义,也就是刚刚提到过的定义。


2、云计算的服务模型

云计算有两种分法。第一种模型是指按层次来分,分为三种:第一种是基础设施即服务(IaaS),它提供的是云计算的基础设施,比如说计算、网络和存储的服务;第二种是平台即服务(PaaS),它指的是提供计算与编程语言或者是函数库、数据库这一类的服务;第三种是软件即服务(SaaS),指的是给最终用户提供一个成型的软件去使用这种服务。云服务的另一种分类方式叫做三朵云,它包括公共云、私有云和混合云。公共云指的是所有人都可以进行购买和使用的所有人共享的服务。私有云是把技术部署在客户、自己的机房。混合云是公有云和私有云的混合,客户的服务一部分是在公有云,一部分在私有云。

图片205.png

 

3、云原生应用的关注点

云原生应有的大的关注点有四个:微服务、CI/CD以及DevOps

图片206.png

 

二、微服务

1、微服务架构的演进

微服务是从单体架构演进而来,单体架构实现快但是维护成本较高;后来演化为垂直架构,实现了模块化以及负载均衡;再向后,由于服务管理和RPC技术的支持实现了服务架构也就是SOA架构,从服务架构进一步演化把所有大的服务redown成小的服务就是微服务架构。

图片207.png


2、微服务带来的好处

微服务架构带来了很多好处。首先是独立的可扩展性,每个微服务都可以独立进行横向或纵向扩展,根据业务实际增长情况来进行快速扩展。其次它可以提供独立的可升级性,每个微服务都可以独立进行服务升级、更新,不用依赖于其它服务,结合持续集成工具可以进行持续发布,开发人员就可以独立快速完成服务升级发布流程。另外,它还提供语言无关性,研发人员可以选用自己最为熟悉的语言和框架来完成他们的微服务项目。最后,微服务提供了故障和资源的隔离性,在系统中出现不好的资源操作行为时,将仅仅只会影响单个的微服务。


3、微服务带来的挑战

首先是微服务分布式系统的复杂性,它带来API数目的成倍增加,调试分布式系统很复杂,跨服务的重构会很困难,并且很难在测试中重建和生产环境一致的环境。第二大类的挑战是运维开销更大,多个服务需要多种编程语言运行服务,多个服务需要集群来处理故障转移和负载均衡,并且需要高质量的服务监控和运维基础设施,对健壮和自动化的部署要求更高。最后一类是对团队的要求更高,首先是组织结构需要转型到自治的、跨功能的团队,其次是团队的技术能力技术栈需要扩展,另外要求团队有更高的DevOps水平。

 

三、容器

1、什么是容器

容器是与系统其他部分隔离开的一系列进程。容器提供了一种逻辑打包机制,以这种机制打包的应用可以脱离其实际运行的环境。大家可以把容器理解为虚拟机,目前,市场上最流行的容器是Docker,同时还有CoreOS rkt、LXC、OpenVZ等同时在市场上存在的容器技术,目前还有containerd以及CRI-O新的容器技术出现。所以说,容器是一个快速发展的技术。

图片208.png

 

2、Docker基本概念

在Docker里面有四个最基础的概念:容器、镜像、Docker File和仓库。从一个 Docker File 可以 build 一个 images,这个容器的 images 通过push操作可以把它上传到容器仓库里,同时,通过pull操作可以从容器仓库把容器 images 下载到本地,有了 images,通过 run 操作,可以启动一个容器。

图片209.png

 

3、Docker工作流

从 Docker File 可以 build image,然后把 image push 到容器仓库,这就叫 Ship,然后把 image 运行起来成一个容器实例,这就叫 Run。基本的工作流就包括这三个部分。

图片210.png

 

 

四、CI/CD及DevOps

1、概念

CI Continuous Intergretion,它包括编码、构建、集成和测试,CD,持续部署,叫做 Continuous Deployment,它包含CI的所有部分,并增加了部署这一部分,而DevOps从字面上直观的理解是开发运维一体化,它包含开发的整个过程,即CI、CD的所有部分,并另外包含了项目计划和运维。

图片211.png

 

2、CI持续集成流程

持续集成指的是开发人员频繁的向代码库提交代码,提交的代码需要经过构建、测试验证并及时得到结果反馈。自动构建包括自动检测代码、自动从代码库拉取代码并且自动执行代码构建。自动测试包括自动执行单测、自动执行代码扫描、自动化测试用例执行。自动结果通知指的是在测试结果出来之后可以及时通知到开发人员并且通知到错误失败的案例,错误代码段的定位以及测试覆盖率。

 图片212.png

3、CD持续部署/持续交付

持续部署的主要目标是持续部署是持续集成的延伸,将集成后的代码部署到生产环境。频繁的部署确保可以小批次发布,在发生问题时可以轻松排除故障。

图片213.png

4、DevOps 的定义

图片214.png

根据维基百科,DevOps 的定义是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障部门之间的沟通、协作与整合。DevOps 经常被描述为“开发图案对于运营团队之间更具协作性、更高效的关系”。


5、阿里 DevOps 策略:打造一站式 DevOps 效能平台交付式流水线

它包含三个部分,第一部分是打破孤立团队的模式,从原来的敏捷团队进化为 DevOps 团队,这个策略带来的挑战是组织文化转型;第二个策略是开发人员进行更多的测试,从原来的开发人员只进行单元测试到开发自测,这所带来的挑战是测试赋能的开发,因为测试人员最开始是不熟悉整个的测试工作,他只熟悉开发的单元测试;第三个策略是必须采用新工具自动化,这会带来众多的工具并且需要学习,这所面临的挑战是工具学习曲线过高,因为工具的数量非常之多。

图片215.png 

相关文章
|
7月前
|
运维 Cloud Native Devops
云原生 DevOps CI/CD 概述
【1月更文挑战第7天】云原生 DevOps CI/CD 概述
|
7月前
|
运维 Cloud Native Devops
云原生 DevOps 自动化运维 概述
【1月更文挑战第7天】云原生 DevOps 自动化运维 概述
|
4月前
|
运维 Cloud Native Devops
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19378 30
|
3月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
231 3
|
3月前
|
运维 Cloud Native Devops
云原生时代的DevOps实践:自动化、持续集成与持续部署
【9月更文挑战第3天】未来,随着人工智能、大数据等技术的不断融入,DevOps实践将更加智能化和自动化。我们将看到更多创新的技术和工具涌现出来,为软件开发和运维带来更多便利和效益。同时,跨团队协作和集成也将得到进一步加强,推动软件开发向更加高效、可靠和灵活的方向发展。
|
7月前
|
Kubernetes Cloud Native Devops
【阿里云云原生专栏】DevOps与云原生的融合:阿里云CI/CD流水线最佳实践
【5月更文挑战第23天】阿里云融合DevOps与云原生技术,提供高效CI/CD解决方案,助力企业提升研发效能。通过云效平台,集成代码管理、构建服务、容器服务、持续部署及监控日志组件,实现自动化研发流程。案例中,应用从GitHub构建到Kubernetes部署,全程无缝衔接。借助阿里云,企业能快速构建适应云原生的DevOps体系,以应对复杂需求和提升市场竞争力。
205 1
|
7月前
|
Kubernetes Cloud Native Devops
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
162 1
|
4月前
|
敏捷开发 缓存 前端开发
阿里云云效产品使用合集之前端打包时npm安装卡住一般是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 弹性计算 持续交付
阿里云云效产品使用合集之同一个主机部署是否支持下载多个制品
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 监控 Java
阿里云云效产品使用合集之Codeup WebIDE环境下,如何使用通义灵码
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。