首页 > 其他分享 >DevOps及DevOps常用的工具介绍

DevOps及DevOps常用的工具介绍

时间:2024-01-14 15:57:47浏览次数:35  
标签:常用 服务 Kubernetes 运维 部署 DevOps 开发 工具

DevOps及DevOps常用的工具介绍

1. 什么是 DevOps

DevOps 这个词,其实就是 DevelopmentOperations 两个词的组合。它的英文发音是 /de'vɒps/,类似于"迪沃普斯"

在这里插入图片描述
它的目标:DevOps 就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠

2. DevOps 概念的起源

2.1. 单体架构 + 瀑布模式

在这里插入图片描述

在这里插入图片描述
以电商系统为例,它是单体应用架构,这个时候只有开发人员 ,没有运维人员,开发人员就是全栈,项目开发好,找台服务器安装好环境,把 jar 包丢到远程服务器,放上去开启服务就可以

这个时候服务监控也简单,服务出了问题,直接去线上看一下运行日志,为了解放双手监控服务,开发者会写一些脚本分析日志,服务器少,部署简单,通常开发就可以完成运维的工作,不需要专门的运维来做部署,所以开发模式很简答,直接按照瀑布流方式开发就可

2.2. 分布式架构 + 敏捷开发模式

在这里插入图片描述
在这里插入图片描述
随着业务体量发展越来越大,一台机器扛不住,那么就加机器,单机变多机,业务架构也开始加入了 nginx,cdn 缓存等通用基础服务,业务变多肯定会招人,就涉及到多人协同开发,多人多机器模式

2.2.1. 多人协同开发问题

人员一多,为了更好的分工,大多会将项目进行拆分,每个人负责专注于一部分,有点包干到户的感觉。敏捷开发的核心理念:就是既然我们无法充分了解用户的真实需求是怎样的,将一个大的目标不断拆解,把它变成一个个可交付的小目标,然后通过不断迭代,以小步快跑的方式持续开发。另外,一个项目是很大的,为了保证项目质量,测试环节不可减少,为了加快速度增大开发效率,QA 的工作最好是和开发同步交替进行的,需要将测试环节从后面注入到整个开发环节当中,每次可交付的都是一个可用的功能集合,对开发交付的内容进行持续验证

2.2.2. 多机器问题

再说说多机器问题,之前机器很少架构简单的时候,开发就可以干运维的活,就算加了几台服务器,那也是脚本将 JAR 包同时发布到这些机器上,好像也挺简单,但是会有两个人同时上线部署被覆盖的问题,所以大家在上线之前可能会去群里吆喝一声,”我要上线了,大家先别上线哈“,可想而知这样效率也很低下

公司业务一大,像大公司的动不动就是几千台服务器,就需要专门的运维介入了,一方面是因为开发分工每个人都专注于自己的事情,不会那么用心进行维护,另一方面是运维的学习成本确实变高了,开发人质量参差不齐,服务器要是每个人都可以上估计领导每天晚上都要做噩梦。但是这个时候也不是 DEVOPS,而是 DEV+OPS,这时 Ops 的主要职责就是:硬件维护、网络设备维护、DBA 、基础服务维护、数据监控等,运维们擅长写各种部署,监控脚本,减少机械的重复工作,开发模式变成了敏捷开发模式

2.2.3. 开发和运维角色的天生对立问题

加入运维,就要协调人员配合,运维的宿命就是维稳,他们是很讨厌变动的;开发的天职确是不断地推代码上线,进行代码变动,更替迭代,这两个工种天生就是对立的

很多大公司有那种,开发人员想要上线,需要提交各种审批,层层签字画押,多少人的上线激情被一句冷冰冰的‘还没到窗口发布期’给泼的透心凉。所以,敏捷开发解决了协同开发和多机器部署开发问题,但是没有解决内部人员的矛盾,留着这个矛盾在公司,开发和运维随时都可能约‘生死架’

2.3. 微服务架构 + DevOps

在这里插入图片描述
在这里插入图片描述
将项目拆成一个个小的服务单独部署,以电商项目为例如图,将整个项目拆分为用户服务,商品服务,订单服务,积分服务…每个服务单独部署,之间通过互相调用的方式来交互,而且可以将一些基础服务例如上传图片,发送短信等很多服务都需要的基础东西,抽象到一个单独的服务,也就是前些年鼓吹的很厉害的‘中台服务’

拆分部署催生出 DevOps,再看看这种架构下的开发模式 DevOps,运维需要做的上线工作,主要就是将代码部署到对应的机器里面,微服务有那么多的服务,每个大点的公司几百个服务不算多,而且还可能随时搞一个服务出来,如果还按照原始的脚本部署方式,可能最后连是哪个脚本都找不到。而且,如果每个服务上线都需要运维来同意,开发也太卑微了,估计要天天求着运维同意发布,运维也会烦不胜烦

那么为何不能再远程部署一些机器,专门用来管理代码,进行上线工作,由运维事先把上线的规则都给定义好了,开发只要按照他的规则都访问这台服务器进行各自的代码合成和发布,自己上线呢,能用代码自动完成的事情就绝不要手动解决,这是每个开发人员都在想的东西。运维需要做的事情,慢慢的都沉淀到了各个平台上面,例如监控,有专门的监控组件和可视化,基础服务例如服务器,CDN,负载均衡等基础服务可以外包到云服务厂商,日志也有专门的日志工具,链路追踪也有专门的组件和可视化,还有网关等,渐渐的,只要这些都配置好了,开发也可以做运维的部分工作,毕竟开发才是最了解代码的人,哪里出了问题看看监控日志,可以最快速度定位到问题,于是 DevOps开发模式诞生了,开发也是运维

3. DevOps 到底是什么

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

对比前面所说的瀑布式开发和敏捷开发,我们可以明显看出,DevOps 贯穿了软件全生命周期,而不仅限于开发阶段

在这里插入图片描述
下面这张图,更明显地说明了 DevOps 所处的位置,还有它的价值

在这里插入图片描述
DevOps 的流程下,运维人员会在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。而开发人员也会在运维的初期参与到系统部署中,并提供系统部署的优化建议

DevOps 的实施,促进开发和运维人员的沟通,增进彼此的理(gan)解(qing

4. DevOps 常用的工具

  • Git
  • Jenkins
  • Docker
  • Kubernetes

4.1. Jenkins

Jenkins(读:[ˈdʒɛŋkɪnz])是很多软件开发团队在走向 DevOps 时会用的自动化工具。它是开源的 CI/CD 服务器,帮助用户自动化交付流水线的不同阶段。Jenkins 之所以流行的主要原因是其巨大的插件生态系统。目前,它提供 1000 多个插件,因此它可以和几乎所有 DevOps 工具集成

使用 Jenkins 很容易,它在 Windows,Mac OS XLinux 上开箱即用。很容易就可以使用 Docker 安装它。用户可以通过浏览器搭建并且配置 Jenkins 服务器。如果你是第一次使用它,可以选择安装最常用的插件。当然也可以创建自定义配置。使用 Jenkins 用户可以尽快迭代并部署新代码。它还帮助用户度量流水线里每一步是否成功

官网:https://jenkins.io/

4.2. Kubernetes

Kubernetes 又称 K8S,它是容器编排平台,将容器化推进到下一个层面。它可以使用 Docker 或者其他替代产品。使用 Kubernetes 用户可以将容器组织成逻辑单元。如果你只有几个容器,那么可能并不需要容器编排平台。但是,当系统达到一定级别的复杂度,需要扩展资源的时候,这就是合理的下一步。Kubernetes 让用户可以自动化管理上百个容器的过程

使用 Kubernetes 无需将容器化的应用程序绑定到某个单独的机器里。相反,你可以将它部署到一个机器集群里,Kubernetes 会自动化分发并在整个集群里调度容器

一个 Kubernetes 集群包含一个 master 和几个 worker 节点。master 节点实现预定义的规则,并且将容器部署到 worker 节点上。Kubernetes 负责所有一切。比如,它注意到某个 worker 节点下线了,就会将其上的容器重新分发到别的节点上

官网:https://kubernetes.io/

   

标签:常用,服务,Kubernetes,运维,部署,DevOps,开发,工具
From: https://www.cnblogs.com/py169/p/17963787

相关文章

  • 为什么大公司一定要使用DevOps?
    0DevOps的意图 究竟什么是DevOps?要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁?即开发团队和IT运维团队!那么,DevOps的意图是什么呢?即在两个团队之间,建立良好的沟通和协作,更快更可靠的创建高质量软件! 事实上,并不是这两个团队之间的协作帮助交付了更好的软件,而......
  • redis工具类封装
    封装Redis工具类方法1:将任意Java对象序列化为json并存储在string类型的key中,并且可以设置TTL过期时间方法2:将任意Java对象序列化为json并存储在string类型的key中,并且可以设置逻辑过期时间,用于处理缓存击穿问题方法3:根据指定的key查询缓存,并反序列化为指定类型,利用缓存空......
  • 【JAVA基础】Java项目开发工具之Maven
    JAVA开发工具IDE有哪些?eclipce、idea、vscode等等IDEA比Eclipse更强大和高效。IDEA提供了更好的代码补全和重构功能,更好的代码导航和搜索功能,以及更好的支持多模块项目和多语言开发等。构建项目工具构建项目工具有哪些?Maven、Gradle、Ant等Maven管理和构建项目以及维护......
  • 华为常用的命令——display,记得点赞收藏!
    华为设备提供了多条display命令用于查看硬件部件、接口及软件的状态信息。通常这些状态信息可以为用户故障处理提供定位思路。常用的故障信息搜集的命令如下:路由器常用维护命令表交换机常用的故障信息搜集关注工仲好:IT运维大本营,获取60个G的《网工大礼包》......
  • 浅谈Linux下傻瓜式磁盘分区工具cfdisk的使用
    对于新手来说,Linux环境下的磁盘分区可能还会存在一些困难。对于熟悉Linux的朋友来说,我们还有fdisk、parted(2TB以上的磁盘分区使用)等磁盘分区工具可以使用。在我们新增磁盘或者在原来磁盘上进行扩容时就会使用到磁盘分区工具,磁盘分区对于整个系统的管理十分重要。1.增加一块容量......
  • 再议Linux中一些发行版中默认下载或上传工具curl的使用
    在目前的CentOS最小化安装发行版中,系统默认的下载/上传工具为:curl。curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。我们先来大概看一下curl工具的各选项的大概含义。-a/–append......
  • C#常用工具安装方法及资源整理
    1、GitGit下载地址Git安装教程2、SQLServer2019下载地址安装教程3、VisualStudio2022下载地址安装教程4、TortoiseGit(x64)  2.13.0.1中文版下载地址安装教程5、sqlserver2014下载及安装教程......
  • 在WSL2下的Ubuntu常用命令
    #查看宿主主机IPiproute|grepdefault|awk'{print$3}'cat/etc/resolv.conf#查看本机IPipa|grep"globaleth0"hostname-I|awk'{print$1}'#安装MySQL客户端sudoapt-getinstallmysql-client #保留文件属性的多文件或文件夹的压缩及解压tar--xattrs--x......
  • node版本管理工具推荐
    hello,今天给大家分享几款node版本管理的工具。背景在开发前端项目的时候,特别是新到公司接手一个多年维护的老项目时,如果node版本不正确,有的插件可能无法正确安装,比如我之前提到的node-sass无法安装问题,具体请看:https://www.cnblogs.com/easy1996/p/17945874同时我们在开......
  • 50个常用的Qt开源库
    1.Qwt(https://qwt.sf.net):Qwt是一个基于Qt的数据可视化库,提供了绘制曲线、图表、仪表盘等功能。2.QJson(https://qjson.sourceforge.net):QJson是一个用于JSON数据解析和生成的库,使Qt应用程序能够方便地处理JSON格式的数据。3.QCustomPlot(https://www.qcustomplot.co......