DevOps及DevOps常用的工具介绍

目录

  • 1. 什么是 `DevOps`
  • 2. `DevOps` 概念的起源
    • 2.1. 单体架构 + 瀑布模式
    • 2.2. 分布式架构 + 敏捷开发模式
      • 2.2.1. 多人协同开发问题
      • 2.2.2. 多机器问题
      • 2.2.3. 开发和运维角色的天生对立问题
    • 2.3. 微服务架构 + `DevOps`
  • 3. `DevOps` 到底是什么
  • 4. `DevOps` 常用的工具
    • 4.1. `Jenkins`
    • 4.2. `Kubernetes`

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/


---------------------
作者:桐花思雨
来源:CSDN
原文:https://blog.csdn.net/weixin_38192427/article/details/115721321
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2018年SIAF 广州国际工业自动化技术及装备展览会下周隆重开幕

同期研讨活动聚焦行业未来趋势,探索技术发展及实际应用层面。 华南最重要的工业自动化行业盛会之一,SIAF广州国际工业自动化技术及装备展览会,将于2018年3月4至6日在广州中国进出口商品交易会展馆隆重开幕。为期三天的展会将再度与广州国际模…

生活感言

There will be moments when the only thing left is for us to question our existence.总时有一些瞬间,让人感觉留给我们的唯一的事情就是质疑我们自身的存在。There are always days when we get so lonely and depressed and the world has lost its colours.我…

相约现在,遇见未来

# 遇见未来这个世界很小,我们就这样遇见。这个世界很大,分开就很难再见。大家好,我是 chait,很高兴我们在这里《遇见》。今天是我申请公众号通过后的第一天,也是在该平台发表的第一篇文章,唠嗑点啥呢&#…

2018-04-12

https://www.cnblogs.com/dragonsuc/p/5512797.html linux top https://www.cnblogs.com/kex1n/p/7211008.html linux 后台 http://dev.xxzhushou.cn/noticeArticle.html?ID65 chacha http://bbs.xxzhushou.cn/forum.php?modviewthread&tid88904141&extrapage%3D1%26…

有关并行的两个重要定律

本文摘自 葛一鸣 老师的《实战java高并发程序设计》一书。因为觉得写得好就摘下来了 将串行程序改造成并发程序,一般来说可以提高程序的整体性能,但是究竟能提升多少,甚至说究竟是否真的可以提高,还是一个需要研究的问题。目前&am…

java web中jsp常用标签

在jsp页面开发过程中,经常需要使用JSTL(Java Server Pages Standard Tag Library)标签开开发页面,是看起来更加的规整舒服。 JSTL主要提供了5大类标签库:1. 核心标签库: 为日常任务提供通用支持,如显示和设置变量,重复使用一…

深入OKHttp源码分析(二)----OkHttp任务调度核心类Dispatcher解析

OkHttp任务调度核心类Dispatcher解析 上一篇我们分析了okhttp的同步和异步请求的执行流程并进行了源码分析,深入OKHttp源码分析(一)----同步和异步请求流程和源码分析 那么今天我们来看看在整个执行流程中起到关键作用的Dispatcher调度类。首…

C# 二十年语法变迁之 C# 10参考

C# 二十年语法变迁之 C# 10参考https://benbowen.blog/post/two_decades_of_csharp_vi/自从 2000 年引入 C# 以来,该语言的规模已经大大增加,我不确定任何人是否有可能随时对每个语言特性都有深入的了解。因此,我想写一系列快速参考文章&…

IT圈中的Bug的类型与历史

美国计算机科学家、图灵奖获得者詹姆斯尼古拉格雷(Jim Gray),在他的著名的论文“Why do computers stop and what can be done about it?”中首次提出了程序bug的类型,比如玻尔bug(Bohrbug)、 海森堡bug(Heisenbugs)等用著名科学家名称命名的bug。后来又…

Windows Nano Server安装配置详解03:远程管理Nano Server

远程管理Nano Server主要是通过使用远程powershell的方式。首先,我们把Nano Server的登录凭据保存到$cred变量之中,如图。其次,把远程Nano Server服务器添加到远程管理机本地的trustedHosts中,否则会报下面的错误,如图…

你和阿里资深架构师之间,差的不仅仅是年龄(进阶必看)

导读:阅读本文需要有足够的时间,笔者会由浅到深带你一步一步了解一个资深架构师所要掌握的各类知识点,你也可以按照文章中所列的知识体系对比自身,对自己进行查漏补缺,觉得本文对你有帮助的话,可以点赞关注…

[luoguP2601] [ZJOI2009]对称的正方形(二维Hash + 二分 || Manacher)

传送门 很蒙蔽,不知道怎么搞。 网上看题解有说可以哈希二分搞,也有的人说用Manacher搞,Manacher是什么鬼?以后再学。 对于这个题,可以从矩阵4个角hash一遍,然后枚举矩阵中的点,再二分半径。 但是…

Semaphore详解

Semaphore基本使用场景 Semaphore的基本使用场景是限制一定数量的线程能够去执行. 举个简单的例子: 一个单向隧道能同时容纳10个小汽车或5个卡车通过(1个卡车等效与2个小汽车), 而隧道入口记录着当前已经在隧道内的汽车等效比重. 比如1个小汽车和1个卡车, 则隧道入口显示3. 若…

PerfView专题 (第六篇):如何洞察 C# 中 GC 的变化

一:背景 在洞察 GC 方面,我觉得市面上没有任何一款工具可以和 PerfView 相提并论,这也是为什么我会在 WinDbg 之外还要学习这么一款工具的原因,这篇我们先简单聊聊 PerfView 到底能洞察 GC 什么东西?二:洞察…

Linux_日志管理介绍(一)

一、介绍1、CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务,但是rsyslogd是和syslogd服务相兼容的2、除了系统默认的日志之外,采用RPM方式安装的系统服务也会默认把日志记录在/var/log/目录中(源码包安装的服务日志是在源码包指…

如何将exe文件添加到开机启动

1、先创建exe文件的快捷方式 2、打开windows的startup启动目录(针对win10以上) windows有两个以上startup目录,一个是针对所有用户有效的,另外是每个用户下边有一个: 针对当前用户 : C:\Users\{当前用户}\A…

mysql重连,连接丢失:The last packet successfully received from the server--转载

1.1 错误信息: Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 20,820,001 milliseconds ago. The last packet sent successfully to the server was 20,820,002 milliseconds…

.NET MAUI 跨平台应用程序 (Windows App 和 Android )示例

也就前周,.Net MAUI正式版出来了 ,一个支持跨平台的UI框架,Linux支持情况官网也没说,按理来说应该也是支持的,刚好,我最近也在研究GUI的基本原理,微软出品还是值得深入研究一下的,就先来个样例&…

OpenStack 计算节点删除

前提 计算节点中一个僵尸计算节点存在,而里面的CPU数目在总物理CPU中,导致认为当前能创建实例。而实际没有这么多资源。其中node-11为僵尸节点。 原因 删除计算节点不能直接格式化该服务器,否则在控制节点的数据库上会存在该计算节点的数据。…

PHP 7.2 新功能介绍

PHP 7.2 已經在 2017 年 11 月 30 日 正式發布 。這次發布包含新特性、功能,及優化,以讓我們寫出更好的代碼。在這篇文章裡,我將會介紹一些 PHP 7.2 最有趣的語言特性。 你可以在 Requests For Comments 頁面查看完整的更動清單。 核心改进 参…