DevOps
[TOC]
DevOps
By:weimenghua
Date:2022.08.17
Description:DevOps
一、DevOps
DevOps(Development 和Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
DevOps 的基础核心是 CICD。
CICD 的基础核心是自动化。
二、CICD
持续集成(CI,Continuous integration)
持续集成指的是,频繁地(一天多次)将代码集成到主干。它的好处主要有两个。
(1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
(2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
持续交付(CD,Continuous delivery)
持续交付指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。
持续部署(CD,continuous deployment)
持续部署是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
三、云计算
根据服务类型的不同,云计算可以分为三类,即基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。这3种云计算服务有时称为云计算堆栈,因为它们构建堆栈,它们位于彼此之上。
IaaS(Infrastructure as a Service),即基础设施即服务。
指把 IT 基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式。
有了 IaaS 服务,用户可以在云服务提供商提供的基础设施上部署和运行任何软件,包括操作系统和应用软件。
用户没有权限管理和访问底层的基础设施,如服务器、交换机、硬盘等,但是有权管理操作系统、存储内容,可以安装管理应用程序,甚至是有权管理网络组件。
简单的说用户使用 IaaS,有权管理操作系统之上的一切功能。我们常见的 IaaS 服务有虚拟机、虚拟网络、以及存储。
PaaS(Platform as a Service),是指平台即服务。
是一种云计算服务,提供运算平台与解决方案服务。
PaaS 给用户提供的能力是使用由云服务提供商支持的编程语言、库、服务以及开发工具来创建、开发应用程序并部署在相关的基础设施上。
用户无需管理底层的基础设施,包括网络、服务器,操作系统或者存储。他们只能控制部署在基础设施中操作系统上的应用程序,配置应用程序所托管的环境的可配置参数。
SaaS(Software as a Service),意思为软件即服务,即通过网络提供软件服务。
SaaS 平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得 SaaS 平台供应商提供的服务。
SaaS 给用户提供的能力是使用在云基础架构上运行的云服务提供商的应用程序。可以通过轻量的客户端接口(诸如 web 浏览器(例如,基于 web 的电子邮件))或程序接口从各种客户端设备访问应用程序。
用户无需管理或控制底层云基础架构,包括网络,服务器,操作系统,存储甚至单独的应用程序功能,可能的例外是有限的用户特定应用程序配置设置。
云计算的本质-服务。云的概念起源于“共享”,类似于组织内的成员共享一个超级计算机,超级计算机就是个“资源池”,说白了就是一堆服务器资源。
四、持续集成工具
- Jenkins
- Gitee Go
- 阿里云效
- 腾讯 coding
- 嘉为蓝鲸
- 极狐
- 华为 DevCloud
- 百度效率云
- Ones.AI
- AzureDevOps
五、制品库和代码库
1、制品库:制品库用来统一管理不同格式的软件制品。 除了基本的存储功能,还提供了版本控制、访问控制、安全扫描、依赖分析等重要功能,是一种企业处理软件开发过程中产生的所有包类型的标准化方式。 并且制品是指由源码编译打包生成的二进制文件,不同的开发语言对应着不同格式的二进制文件,这些二进制通常可以直接运行在服务器上。 主流制品库类型:Generic、Docker、Maven、Helm、Npm、PyPI、Composer、RPM 等。
2、代码库:代码库就是编译成 DLL 的程序集,它们提供了一种将代码封装在单个文件中、允许继承和修改这些文件并允许分发离散的功能单元的可移植方法。
六、代码门禁
代码门禁则是在代码合并之前就验证代码来保护主干分支的完整性。通过这种方式,可以保护主分支代码避免因合码导致的构建中断,以确保 master 分支代码始终是可部署的。
七、知识碎片
POC 在技术领域中,POC通常是指“Proof of Concept”(概念验证)的缩写。概念验证是指为了证明某个想法、概念或者技术的可行性而进行的实验或项目。
ELK(日志分析系统)
ELK(Elasticsearch、Logstash、Kibana) Elasticsearch 对格式化后的数据进行索引和存储; Logstash 将日志进行集中化管理,将日志格式化并输出到 Elasticsearch; Kibana 前端数据的展示。
两地三中心
一般的金融信息至少是两地三中心的系统。(一个城市设两个机房,在另一个城市设一个冷备机房)
两地三中心指的是,在同城做两个数据中心,关系是热备份或者双活
双活指的是,你炸了一个,还有一个。两个同时工作,几乎没有影响。
热备份指的是,你炸了一个,我可以把服务切到另一个数据中心,也没啥影响。
1、两地三中心
两地 = 本地 + 异地 三中心 = 本地数据中心 + 本地备份数据中心 + 导数数据备份中心 主备数据中心之间一般有热备、冷备、双活三种备份方式。
2、热备
热备的情况下,只有主数据中心承担用户的业务,此时备数据中心对主数据中心进行实时的备份,当主数据中心挂掉以后,备数据中心可以自动接管主数据中心的业务,用户的业务不会中断,所以也感觉不到数据中心的切换。
3、冷备
冷备的情况下,也是只有主数据中心承担业务,但是备用数据中心不会对主数据中心进行实时备份,这时可能是周期性的进行备份或者干脆不进行备份,如果主数据中心挂掉了,用户的业务就会中断。
4、双活
双活是觉得备用数据中心只做备份太浪费了,所以让主备两个数据中心都同时承担用户的业务,此时,主备两个数据中心互为备份,并且进行实时备份。一般来说,主数据中心的负载可能会多一些,比如分担60~70%的业务,备数据中心只分担40%~30%的业务 。
HA (网站可用性)
在软件系统的高可靠性(也称为可用性,英文描述为 HA,High Available)里有个衡量其可靠性的标准——X 个9,这个 X是代表数字3~5。 X 个9表示在软件系统1年时间的使用过程中,系统可以正常使用时间与总时间(1年)之比。
- 1个9:(1-90%)*365=36.5天,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是36.5天
- 2个9:(1-99%)*365=3.65天 , 表示该软件系统在连续运行1年时间里最多可能的业务中断时间是3.65天
- 3个9:(1-99.9%)36524=8.76小时,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是8.76小时
- 4个9:(1-99.99%)36524=0.876小时=52.6分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是52.6分钟
- 5个9:(1-99.999%)36524*60=5.26分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是5.26分钟
- 6个9:(1-99.9999%)365246060=31秒, 示该软件系统在连续运行1年时间里最多可能的业务中断时间是31秒
SLA (服务等级协)
SLA(Service-Level Agreement),也就是服务等级协议,指的是系统服务提供者(Provider)对客户(Customer)的一个服务承诺。这是衡量一个大型分布式系统是否“健康”的常见方法。 最常见的四个 SLA 指标,可用性、准确性、系统容量和延迟。
分布式
分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。
集群
集群(cluster)是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。
纳管
纳管功能是用于方便、快捷的将虚拟化平台中已存在的虚拟机纳入到本系统中作为云主机进行管理和使用。 取消纳管用于取消本系统对虚拟机的管理操作,执行该操作以后,虚拟机只存在于虚拟化平台中,在本系统中不再显示,相当于纳管虚拟机的逆操作。 在顶部导航栏中单击[资源]菜单项,进入资源页面。