快速了解云计算与云原生

快速了解云计算与云原生

  • 云计算
  • 云原生
  • DevOps
  • 容器
  • 持续交付
  • 微服务

云计算

在讲云原生之前,先来讲讲云计算

其中云原生属于技术架构理念,而云计算提供应用所需的基础资源,云计算是云原生的基础,两者是相辅相成的

云计算简单来说,就是一种随时随地给大家提供解决网络资源的一种计算服务和应用

关于云计算的三种服务模式

  1. Saas(软件即服务):运用到我们的生活中,就是各种云存储云文档等等,完全不用自己去开发,直接拿来用就可以
  2. Paas(平台即服务):服务商提供给你一个框架,还有各种基础功能,你可以在这个平台上,开发不同的软件
  3. Laas(基础设施即服务):服务商只出租硬件设施,比如服务器硬盘或者网络等,给需要这些基础设施资源的人

三种模式也可以这样理解:
假如你有一个业务是需要用 Word写东西,做记录
最基础版本就是laas是服务商租你一台没有系统的电脑
中间版本paas是服务商租你一个带win10的电脑
最高版本就是saas就是服务商租你一台带win10还预装了word的电脑

专业图理解:
在这里插入图片描述

云原生

云原生(Cloud Native)是一种构建和运行充分利用云计算模型优势的应用程序的方法

云原生概括为4个要点:DevOps+持续交付+微服务+容器
在这里插入图片描述
符合云原生架构的应用程序:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率

DevOps

DevOps中的Dev指的是Development(开发),Ops指的是Operations(运维),用一句话来说,DevOps就是打通开发运维的壁垒,实现开发运维一体化

在这里插入图片描述

DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系,实际上DevOps应该还包括测试

关于软件行业的研发模式,大致有三个阶段:瀑布式开发、敏捷开发、DevOps

瀑布式开发:传统的软件开发流程,软件开发人员花费数周和数月编写代码,然后将代码交给QA(质量保障)团队进行测试,然后将最终的发布版交给运维团队去布署。所有的这三个阶段,即开发,测试,布署

也叫瀑布(Waterfall)模型,就是等一个阶段所有工作完成之后,再进入下一个阶段

敏捷开发:是一种能应对快速变化需求的软件开发能力。就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态

敏捷开发优势在于把一艘大船变成许多条小船,每条小船各司其职,分配小目标,所有的小目标合起来就能完成大目标。效率高,每个人职责分明

不足之处在于小团队做不到拥有开阔的视野,看不到所有团队都在一起做什么事情,大家只知道埋头苦干做好自己的部分就可以,但看不到全局,不知道全局发生了什么事情。对于一些不可分割的大需求,需要一次性派很多人手同时做的需求,敏捷开发就不再合适

虽然敏捷开发大幅提升了软件开发的效率和版本更新的速度,但是它的效果仅限于开发环节,对于运维人员来说,就是不要出问题,但是发生改变的时候最容易出问题。因此运维非常排斥“改变”。

因此才出现了DevOps,从目标来看,DevOps就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠

DevOps生态圈中的工具

容器

在软件开发过程中,通常会涉及以下几种环境:

  • 开发环境:用于开发人员编写、调试和测试软件的环境,包括开发工具、集成开发环境(IDE)、调试器、编译器等软件工具,以及开发人员个人的计算机或开发服务器。

  • 测试环境:用于软件测试的环境,包括测试服务器、测试数据库、测试数据等,用于进行单元测试、集成测试、系统测试、性能测试等各种测试活动。

  • 集成环境:用于集成开发人员编写的各个模块或组件的环境,以验证它们在一起工作的正确性和稳定性。

  • 部署环境:用于将开发完成的软件部署到生产环境中的环境,包括部署服务器、部署工具、配置管理工具等,用于将软件部署到生成环境中进行实际运行和使用。

  • 生产环境:软件部署和运行的环境,包括服务器、数据库、网络设备、负载均衡器等硬件设备,以及用于部署和管理软件的相关软件工具,用于提供稳定、可靠的环境,使软件能够正常运行并满足用户需求。

对于容器技术来说,对软件开发环境带来了许多好处,主要包括以下几点:

  • 环境一致性: 容器技术可以确保开发、测试和生产环境之间的一致性。开发人员可以在他们的开发机器上构建容器,然后将这些容器部署到测试环境和生产环境中,从而避免了“在我的机器上可以工作”的问题。

  • 快速部署: 容器可以快速部署,因为它们包含了应用程序及其所有依赖关系。这意味着开发团队可以更快地构建、测试和部署应用程序,从而加快软件开发和交付速度。

  • 资源利用率: 容器可以更有效地利用计算资源,因为它们可以在单个物理服务器上运行多个容器实例,而无需为每个应用程序实例分配独立的虚拟机或物理服务器。

  • 隔离性: 容器提供了应用程序之间的隔离,这意味着即使在同一台物理服务器上运行多个容器实例,它们之间也是相互隔离的。这有助于减少因应用程序之间的冲突而导致的问题。

  • 可移植性: 容器可以在各种不同的环境中运行,包括开发人员的个人计算机、本地数据中心、云基础设施等。这种可移植性使得开发团队能够更轻松地在不同的环境中部署和运行应用程序。

  • 微服务架构支持: 容器技术与微服务架构天然契合。通过容器化应用程序,可以更轻松地将应用程序拆分成小型服务,并通过容器编排工具(如Kubernetes)来管理这些服务的部署和伸缩

目前最常用的容器是docker,使用go语言编写
在这里插入图片描述

持续交付

CI/CD是持续集成(Continuous Integration)和持续交付/持续部署(Continuous Delivery/Continuous Deployment)的缩写。它是一种软件开发实践,旨在通过自动化的流程和工具来加速软件的开发、测试和部署

持续集成(Continuous integration,简称 CI)

持续集成指的是,频繁地(一天多次)将代码集成到主干。它的好处主要有两个:

快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成

持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起

持续交付

持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段

持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的

持续交付地将经过测试的代码部署到生产环境中,以便随时进行发布。持续交付旨在确保软件在任何时候都是可发布的状态,从而降低发布新功能或修复bug的成本

持续部署

持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境,它通过自动化的流程将经过测试的代码自动部署到生产环境中,从而实现快速、频繁地发布软件

持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段

持续部署的前提是能自动化完成测试、构建、部署等步骤

CI/CD的实施需要借助各种工具和技术,例如版本控制系统(如Git)、自动化构建工具(如Jenkins、Travis CI)、自动化测试工具、部署工具(如Docker、Kubernetes)等。通过CI/CD实践,开发团队可以加快软件的交付速度,提高软件质量,降低风险,并提高团队的生产力。这种实践在现代软件开发中被广泛采用,并成为提高软件开发效率和质量的重要手段

微服务

讲到微服务架构,是以单体架构为基础的,就像springcloud是以springboot为基础

通过微服务,可将大型应用分解成多个独立的组件,其中每个组件都有各自的责任领域。在处理一个用户请求时,基于微服务的应用可能会调用许多内部微服务来共同生成其响应

  • 多个独立的组件,指的就是微服务
  • 独立服务一般有明确定义的API,用于通信
  • 独立服务通常由一个小型团队负责
  • 针对每个独立服务的开发,部署,运营维护,扩展等都不应该影响其他服务
  • 每个服务应该针对一组功能进行设计,专注于解决特定的问题
  • 每个服务不强调使用同一语言,这种称之为技术自由

容器是微服务架构的绝佳示例,现代云原生应用使用容器来构建微服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/307983.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

竞赛保研 基于深度学习的水果识别 设计 开题 技术

1 前言 Hi,大家好,这里是丹成学长,今天做一个 基于深度学习的水果识别demo 这是一个较为新颖的竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/pos…

JVM基础(3)——JVM垃圾回收机制

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

复合机器人作为一种新型的智能制造装备高效、精准和灵活的生产方式

随着汽车制造业的快速发展,对于高效、精准和灵活的生产方式需求日益增强。复合机器人作为一种新型的智能制造装备,以其独特的优势在汽车制造中发挥着越来越重要的作用。因此,富唯智能顺应时代的发展趋势,研发出了ICR系列的复合机器…

计算机毕业设计 | SpringBoot航空订票 机票预定购买系统(附源码)

1, 概述 1.1 选题目的 目前,国内航空公司的数量和规模都在扩大,国外航空公司也纷纷着陆中国,这些航空公司之间的竞争可谓日益激烈。配备一个安全、高效、灵活、可靠的客户服务中心系统对于航空公司加强客户服务质量,…

使用Android Compose实现网格列表滑到底部的提示信息展示

文章目录 概述1 效果对比1.1 使用添加Item的办法:1.2 使用自定义的方法 2. 效果实现2.1 列表为空时的提示页面实现2.2 添加Item的方式代码实现2.3 使用自定义的方式实现 3. UI工具类 概述 目前大多数的APP都会使用列表的方式来呈现内容,例如淘宝&#x…

解决Echarts y轴文本超出容器问题

解决Echarts y轴文本超出容器问题 一开始好好的 数据变多之后就被挤出去了 解决方法: // echarts的grid属性 主要就是containLabel这个属性的配置 不设置的话他默认是false, 主要是包含是否包含刻度标签grid: {left: "5%",right: "10%",botto…

linux 里面在docker 里面安装pg 数据库(亲测有效)

目录 1 上传 1 上传 上传之后tar 包,将他变成镜像 输入docker images,发现目前是没有镜像的,现在将tar 包变成镜像 docker load -i postgresql.tar以上就将tar 包变成镜像了 现在在宿主机找一个地方,存放数据库的数据 /home/softinstall/…

全网独家:基于openEuler-20.03-LTS-SP4底包构建opengaussV5.0.1LTS的单机极简版数据库容器

本文尝试基于openEuler-20.03-LTS-SP4底包构建opengaussV5.0.1LTS的单机版极简版数据库容器。 一、软件包源 1、openEuler-20.03-LTS容器底包 openEuler-20.03-LTS-SP4 下载链接 sha256:24d8f51c1f3a79eb975c4e498cadd9055bfd708d66c15935ec46664d0f975a7b openEuler-dock…

@DependsOn:解析 Spring 中的依赖关系之艺术

欢迎来到我的博客,代码的世界里,每一行都是一个故事 DependsOn:解析 Spring 中的依赖关系之艺术 前言简介基础用法高级用法在 XML 配置中使用 DependsOn通过 Java Config 配置实现依赖管理 生命周期与初始化顺序Bean 生命周期的关键阶段&…

高照数量关系(一)—— 倍数特性、方程问题、周期问题

倍数特性 整除型 (1)口诀法:(常用于3、4、5、9)3/9看各个位数字之和,5看末位,4看末两位。 3/9 -> 看各位数字之和能否被3/9整除,例:124345 2/5 ->看数字末一位能…

【Linux】进程

----------------| 本文目录 |---------------- 1. 进程1.1 基本概念1.2 描述进程 - PCB1.2.1 task_struct - PCB的一种1.2.2 task_struct 内容分类 1.3 组织进程1.4 查看进程1.5 通过系统调用获取进程标示符1.6 通过系统调用创建进程 - fork初识 2. 进程状态2.1 看看Linux内核…

美创科技第59号安全实验室最新力作!《内网渗透实战攻略》出版发行

总结先进攻防实战经验,基于创新入侵生命周期模型,为提升渗透实战能力提供系统操作教程!近期,美创科技创始人&CEO柳遵梁,美创第59号安全实验室(王月兵、覃锦端、毛菲、刘聪等)撰写的新书《内…

时空序列问题的本质和底层逻辑

本质:Still need to polish this. 底层逻辑:Still need to polish this.See you pretty soon. Reference 【时空序列预测】什么是时空序列问题?这类问题主要应用了哪些模型?主要应用在哪些领域?_mb62b92582e5a0a的技…

办公场景日益多样化 企业如何保持安全?

当前,企业的办公场景日益多样化。远程办公、移动办公、云办公、分支机构等,这些新的办公场景也带来了新的网络安全挑战。以下将介绍一些办公场景带来的安全威胁。 1、远程办公:员工可以在任何地方工作,但同时也带来了网络安全的隐…

支付宝电脑端支付代码

在学习某些项目需要用到支付功能,如支付宝支付。 详细配置 演示沙箱环境下支付,沙箱环境和正式支付只不过一些参数不同 像AppId PrivateKey AlipayPublicKey gatewayUrl 这些参数会有不同。 代码配置 @Component @Data public class payConfig {private String PrivateKey…

springboot配置多数据源

在开发过程中&#xff0c;为了满足需求&#xff0c;会从第三方获取需要的数据&#xff0c;这个时候&#xff0c;除了使用原始的jdbc方式读取数据外&#xff0c;还可以配置多数据源来获取我们想要的数据。 第一步&#xff1a;pom.xml添加依赖 <dependency><groupId>…

JPackage指令将可执行Jar包打包成EXE运行程序

jpackage是jdk14正式加入的一个用于独立打包的工具。 官网简介翻译&#xff1a; jpackage工具将以Java应用程序和Java运行时映像作为输入&#xff0c;并生成一个包含所有必要依赖项的Java应用程序映像。它可以生成特定于平台格式的本机软件包&#xff0c;例如Windows上的exe或…

KVM系统虚拟化性能测试过程总结

buildroot编译 为啥要用buildroot 支持很多&#xff1a;交叉编译工具链、根文件系统生成、内核映像编译和引导加载程序编译。使用简单&#xff1a;使用类似内核的menuconfig、gconfig和xconfig配置界面&#xff0c;使用buildroot构建基本系统很容易。支持很多的包&#xff1a…

1.10 Unity中的数据存储 XML

一、XML 1.介绍 XML是一个文档后缀名是*.xmlXML是一个特殊格式的文档XML是可扩展的标记性语言XML是Extentsible Markup Language的缩 写XML是由万维网联盟(W3C)创建的标记语言&#xff0c;用于定义编码人类和机器可以读取的文档的语法。它通过使用定义文档结构的标签以及如何…

基于ubuntu2204使用kubeadm部署k8s集群

部署k8s集群 基础环境配置安装container安装runc安装CNI插件部署1.24版本k8s集群&#xff08;flannel&#xff09;安装crictl使用kubeadm部署集群节点加入集群部署flannel网络配置dashboard 本集群基于ubuntu2204系统使用kubeadm工具部署1.24版本k8s&#xff0c;容器运行时使用…