DevOps
持续集成
简述
持续集成简称CI,是软件的开发和发布标准流程的最重要的部分
作为⼀个开发实践,在C中可以通过⾃动化等⼿段⾼频地去获取产品反馈并响应反馈的过程
简单的来说,持续集成就是持续不断地(⼀天多次)将代码合并(集成)到主⼲源码仓库,让产品可以快速迭代,同时保持⾼质量代码每次通过集成到主⼲之前,必须通过⾃动化测试,以便快速发现和定位错误持续集成并不能消除错误,⽽是让它们⾮常容易发现和改正
优点
1. 缩减开发的周期,快速迭代版本
(尽早的持续集成,尽早进⼊迭代之中,尽早的暴露出问题,尽早解决,尽量在规定的时间内完成任务)(四尽早⼀尽量)2. ⾃动化流⽔线操作带来的⾼效
(CI的精髓在于持续,持续意味着⾃动化)
(⾃动化验证代码变更的过程,可以在软件开发的早期发现缺陷和与其他代码、组件的集成问题)3. 随时可部署
(⾼频率的集成可以尽可能地保证随时部署上线,缩短开发复杂软件的市场交付时间)4. 极⼤程度避免低级错误
(减少⼤量内容合并到主⼲分⽀的请看看,避免代码合并冲突和⽆法预料的⾏为)低级错误:编译错误,安装问题,接⼝问题,性能问题等
难点
迁移遗留代码到现有CI系统,需要的投⼊通常爱预料之外
在⽂化和组织上如果没有采⽤敏捷原则或DecOps的⼯作⽅式,那么很可能没有持续不断的提交,那么CI的存在意义不⼤随着业务增长、⼯具的更替、技术的演进。CI系统也必然随之改动,往往会导致阶段性的不稳定和⼈⼒物⼒的耗费如果CI的基本设定不到位,开发流程将会增加特别的开销
注意点
CI流程的触发⽅式
跟踪触发式:在每次提交到源码版本管理系统时触发计划任务:预配置好的计划
⼿动:⽆论是通过CI服务器的管理界⾯还是脚本,⽤户可以⼿⼯执⾏CI⼯作流代码审核
可在持续集成服务器⾥使⽤代码分析⼯具(例如Sonar)来执⾏⾃动代码审查
⾃动代码审查通过后,可发起⼀个⼈⼯代码审查,揪出那些⾃动审查⽆法找出的问题,即验证业务需求,架构问题,代码是否可读,以及是否易于扩展。
可灵活配置代码审核策略,例如:如果某些⼈没有审查代码便阻⽌对主⼲分⽀的任何提交。最常⽤的⼯具是Gerrit
持续交付
简述
持续交付简称CD或CDE,是⼀种能够使得软件在较短的循环中可靠的发布的软件⼯程⽅法与持续集成相⽐,持续交付的重点在于 交付,其核⼼对象不在于代码,⽽在于可交付的产物。
由于持续集成仅仅针对于新旧代码的集成过程执⾏来了⼀定的测试,其变动到持续交付后还需要⼀些额外的流程持续交付可以看作为是持续集成的下⼀步,它强调的是,不敢怎么更新,软件是随时随快可以交付的有图可看出,持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实的运⾏环境的[类⽣产环境]中
⽬的
持续交付永爱确保让代码能够快速、安全的部署到产品环境中,它通过将每⼀次改动都会提交到⼀个模拟产品环境中,使⽤严格的⾃动化测试,确保业务应⽤和服务能符合预期
好处
持续交付和持续集成的好处⾮常相似:
快速发布。能够应对业务需求,并更快地实现软件价值
编码→测试→上线→交付的频繁迭代周期缩短,同时获得迅速反馈⾼质量的软件发布标准。整个交付过程标准化、可重复、可靠整个交付过程进度可视化,⽅便团队⼈员了解项⽬完成度
更先进的团队协作⽅式。从需求分析、产品的⽤户体验到交互、设计、开发、测试、运维等⾓⾊密切协作,相⽐于传统的瀑布式软件团队,更少浪费
持续部署
简述
持续部署 意味着:通过⾃动化部署的⼿段将软件功能频繁的进⾏交付
持续部署是持续交付的下⼀步,指的是代码通过审批以后,⾃动化部署到⽣产环境。
持续部署是持续交付的最⾼阶段,这意味着,所有通过了⼀系列的⾃动化测试的改动都将⾃动部署到⽣产环境。它也可以被称为“Continuous Release”
持续化部署的⽬标是:代码在任何时候都是可部署的,可以进⼊⽣产阶段。持续部署的前提是能⾃动化完成测试、构建、部署等步骤注:持续交付不等于持续集成
与持续交付以及持续集成相⽐,持续部署强调了通过 automated deployment 的⼿段,对新的软件功能进⾏集成
⽬标
持续部署的⽬标是:代码在任何时刻都是可部署的,可以进⼊⽣产阶段
有很多的业务场景⾥,⼀种业务需要等待另外的功能特征出现才能上线,这是的持续部署成为不可能。虽然使⽤功能切换能解决很多这样的情况,但并不是没每次都会这样。所以,持续部署是否适合你的公司是基于你们的业务需求——⽽不是技术
优点
持续部署主要的好处是:可以相对独⽴地部署新的功能,并能快速地收集真实⽤户的反馈
敏捷开发
简述
敏捷开发就是⼀种以⼈为核⼼、迭代循环渐进的开发⽅式。
在敏捷开发中,软件仙姑的构建被切分成多个⼦项⽬,各个⼦项⽬的成果都经过测试,具备集成和可运⾏的特征。
简单的说就是把⼀个⼤的项⽬分为多个相互联系,但也可以独⽴运⾏的⼩项⽬,并分别完成,在此过程中软件⼀直处于可使⽤状态
注意事项
敏捷开的就是⼀种⾯临迅速变化的需求快速开发的能⼒,要注意⼀下⼏点:1. 敏捷开发不仅仅是⼀个项⽬快速完成,⽽是对整个产品领域需求的⾼效管理2. 敏捷开发不仅仅是简单的快,⽽是短周期的不断改进、提⾼和调整
3. 敏捷开发不仅仅是⼀个版本只做⼏个功能,⽽是突出重点、果断放弃当前的⾮重要点4. 敏捷开发不仅仅是随时增加需求,⽽是每个迭代周期对需求的重新审核和排序
如何进⾏敏捷开发
1、组织建设
也就是团队建设,建⽴以产品经理为主导,包含产品、设计、前后台开发和测试的team,快速进⾏产品迭发;扁平化的团队管理,⼤家都有共同⽬标,更有成就感;2、敏捷制度
要找准适合⾃⾝的敏捷开发⽅式,主要是制定⼀个完善的效率⾼的设计、开发、测试、上线流程,制定固定的迭代周期,让⽤户更有期待;3、需求收集
这个任何⽅式下都需要有,需求⼀定要有交互稿,评审通过后,⼀定要确定功能需求列表、责任⼈、⼯作量、责任⼈等;4、⼯具建设
是指能够快速完成某项事情的辅助⼯具,⽐如开发环境的⼀键安装,各种底层的⽇志、监控等平台,发布、打包⼯具等;5、系统架构
略为超前架构设计:⽀持良好的扩容性和可维护性;组件化基础功能模块:代码耦合度低,模块间的依赖性⼩;插件化业务模块:降低营销活动与业务耦合度,⾃升级、⾃维护;客户端预埋逻辑;技术预研等等;6、数据运营与灰度发布
点击率分析、⽤户路径分析、渠道选择、渠道升级控制等等
原则、特点和优势
敏捷开发技术的12个原则:
1.我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。2.即使到了开发的后期,也欢迎改变需求。
3.经常性地交付可以⼯作的软件,交付的间隔可以从⼏周到⼏个⽉,交付的时间间隔越短越好。4.在整个项⽬开发期间,业务⼈员和开发⼈员必须天天都在⼀起⼯作。5.围绕被激励起来的个⼈来构建项⽬。
6.在团队内部,最具有效果并且富有效率的传递信息的⽅法,就是⾯对⾯的交谈。7.⼯作的软件是⾸要的进度度量标准。8.敏捷过程提倡可持续的开发速度。
9.不断地关注优秀的技能和好的设计会增强敏捷能⼒。10.简单使未完成的⼯作最⼤化。
11.最好的构架、需求和设计出⾃于⾃组织的团队。
12.每隔⼀定时间,团队会在如何才能更有效地⼯作⽅⾯进⾏反省,然后相应地对⾃⼰的⾏为进⾏调整。特点:
1. 个体和交互胜过过程和⼯具
2. 可以⼯作的软件胜过⾯⾯俱到的⽂档3. 客户合作胜过合同谈判4. 响应变化胜过遵循计划优势总结:
敏捷开发确实是项⽬进⼊实质开发迭代阶段,⽤户很快可以看到⼀个基线架构班的产品。敏捷注重市场快速反应能⼒,也即具体应对能⼒,客户前期满意度⾼适⽤范围:
1. 项⽬团队的⼈不能太多2. 项⽬经常发⽣变更3. ⾼风险的项⽬实施4. 开发⼈员可以参与决策劣势总结:
1. 敏捷开发注重⼈员的沟通2. 忽略⽂档的重要性
3. 若项⽬⼈员流动太⼤,维护的时候很难
4. 项⽬存在新⼿的⽐较多的时候,⽼员⼯会⽐较累
5. 需要项⽬中存在经验较强的⼈,要不然⼤项⽬中容易遇到瓶颈问题
Open-falcon
简述
open-falcon是⼩⽶的监控系统,是⼀款企业级、⾼可⽤、可扩展的开源监控解决⽅案
公司⽤open-falcon来监控调度系统各种信息,便于监控各个节点的调度信息。在服务器安装了falcon-agent⾃动采集各项指标,主动上报
特点
1. 强⼤灵活的数据采集
(⾃动发现,⽀持falcon-agent、snmp、⽀持⽤户主动push、⽤户⾃定义插件⽀持、opentsdb data model like(timestamp、endpoint、metric、key-value tags) )2. ⽔平扩展能⼒
(⽀持每个周期上亿次的数据采集、告警判定、历史数据存储和查询 )3. ⾼效率的告警策略管理
(⾼效的portal、⽀持策略模板、模板继承和覆盖、多种告警⽅式、⽀持callback调⽤ )4. ⼈性化的告警设置
(最⼤告警次数、告警级别、告警恢复通知、告警暂停、不同时段不同阈值、⽀持维护周期 )5. ⾼效率的graph组件
(单机⽀撑200万metric的上报、归档、存储(周期为1分钟) )6. ⾼效的历史数据query组件
(采⽤rrdtool的数据归档策略,秒级返回上百个metric⼀年的历史数据 )
7. dashboard(⾯向⽤户的查询界⾯,可以看到push到graph中的所有数据,并查看数据发展趋势 )(对维度的数据展⽰,⽤户⾃定义Screen)
8. ⾼可⽤
(整个系统⽆核⼼单点,易运维,易部署,可⽔平扩展)9. 开发语⾔
(整个系统的后端,全部golang编写,portal和dashboard使⽤python编写。 )
监控范围
Open-Falcon⽀持系统基础监控,第三⽅服务监控,JVM监控,业务应⽤监控基础监控指的是Linux系统的指标监控,包括CPU、load、内存、磁盘、IO、⽹络等,这些指标由Openfalcon的agent节点直接⽀持,⽆需插件
第三⽅服务监控指的是⼀些常见的服务监控,包括Mysql、Redis、Nginx等
OpenFalcon官⽹提供了很多第三⽅服务的监控插件,也可以⾃⼰实现插件,定义采集指标。⽽采集到的指标,也是通过插件先发送给agent,再由agent发送到OpenFalcon。
JVM监控主要通过插件完成,插件通过JVM开放的JMX通信端⼝,获取到JVM参数指标,并推送到agent节点,再由agent发送到OpenFalcon。
业务应⽤监控就是监控企业⾃主开发的应⽤服务
主要通过插件完成,插件通过JVM开放的JMX通信端⼝,获取到JVM参数指标,并推送到agent节点,再由agent发送到OpenFalcon。
数据流向
常见的OpenFalcon包含transfer、hbs、agent、judge、graph、API⼏个进程以下是各个节点的数据流向图,主数据流向是agent -> transfer -> judge/graph:
SNMP
简述
SNMP:简单⽹络管理协议,是TCP/IP协议簇 的⼀个应⽤层协议,由于SNMP的简单性,在Internet时代得到了蓬勃的发展 ,1992年发布了SNMPv2版本,以增强SNMPv1的安全性和功能。现在,已经有了SNMPv3版本(它对⽹络管理最⼤的贡献在于其安全性。增加了对认证和密⽂传输的⽀持 )。
⼀套完整的SNMP系统主要包括:管理信息库(MIB)、管理信息结构(SMI)和 SNMP报⽂协议
为什么要⽤SNMP
作为运维⼈员,我们很⼤⼀部分的⼯作就是为了保证我们的⽹络能够正常、稳定的运⾏。因此监控,控制,管理各种⽹络设备成了我们⽇常的⼯作
优点和好处
优点:
简单易懂,部署的开销成本也⼩ ,正因为它⾜够简单,所以被⼴泛的接受,事实上它已经成为了主要的⽹络管理标准。在⼀个⽹络设备上实现SNMP的管理⽐绝⼤部分其他管理⽅式都简单直接。好处:
1. 标准化的协议:SNMP是TCP/IP⽹络的标准⽹络管理协议。2. ⼴泛认可:所有主流供应商都⽀持SNMP。3. 可移植性:SNMP独⽴于操作系统和编程语⾔。
4. 轻量级:SNMP增强对设备的管理能⼒的同时不会对设备的操作⽅式或性能产⽣冲击。5. 可扩展性:在所有SNMP管理的设备上都会⽀持相同的⼀套核⼼操作集。
6. ⼴泛部署:SNMP是最流⾏的管理协议,最为受设备供应商关注,被⼴泛部署在各种各样的设备上。
MIB、SMI和SNMP报⽂
MIB
1. 管理信息库MIB:任何⼀个被管理的资源都表⽰成⼀个对象,称为被管理的对象。2. MIB是被管理对象的集合。
3. 它定义了被管理对象的⼀系列属性:对象的名称、对象的访问权限和对象的数据类型等。4. 每个SNMP设备(Agent)都有⾃⼰的MIB。
5. MIB也可以看作是NMS(⽹管系统)和Agent之间的沟通桥梁。
MIB⽂件中的变量使⽤的名字取⾃ISO和ITU管理的对象表⽰符命名空间,他是⼀个分级数的结构SMI
SMI定义了SNNMP框架多⽤信息的组织、组成和标识,它还未描述MIB对象和表述协议怎么交换信息奠定了基础SMI定义的数据类型:1. 简单类型(simple):
Integer:整型是-2,147,483,8~2,147,483,7的有符号整数octet string: 字符串是0~65535个字节的有序序列
OBJECT IDENTIFIER: 来⾃按照ASN.1规则分配的对象标识符集
2. 简单结构类型(simple-constructed ):
SEQUENCE ⽤于列表。这⼀数据类型与⼤多数程序设计语⾔中的“structure”类似。⼀个SEQUENCE包括0个或更多元素,每⼀个元素⼜
是另⼀个ASN.1数据类型
SEQUENCE OF type ⽤于表格。这⼀数据类型与⼤多数程序设计语⾔中的“array”类似。⼀个表格包括0个或更多元素,每⼀个元素⼜是另
⼀个ASN.1数据类型。
3. 应⽤类型(application-wide):
IpAddress: 以⽹络序表⽰的IP地址。因为它是⼀个32位的值,所以定义为4个字节;
counter:计数器是⼀个⾮负的整数,它递增⾄最⼤值,⽽后回零。在SNMPv1中定义的计数器是32位的,即最⼤值为
4,294,967,295;
Gauge :也是⼀个⾮负整数,它可以递增或递减,但达到最⼤值时保持在最⼤值,最⼤值为232-1;time ticks:是⼀个时间单位,表⽰以0.01秒为单位计算的时间;
SNMP报⽂
SNMP规定了5种协议数据单元PDU(也就是SNMP报⽂),⽤来在管理进程和代理之间的交换。1. get-request操作:从代理进程处提取⼀个或多个参数值。
2. get-next-request操作:从代理进程处提取紧跟当前参数值的下⼀个参数值。3. set-request操作:设置代理进程的⼀个或多个参数值。
4. get-response操作:返回的⼀个或多个参数值。这个操作是由代理进程发出的,它是前⾯三种操作的响应操作。5. trap操作:代理进程主动发出的报⽂,通知管理进程有某些事情发⽣。
操作命令
SNMP协议之所以易于使⽤,这是因为它对外提供了三种⽤于控制MIB对象的基本操作命令。它们是:Get、Set 和 Trap。1. Get:管理站读取代理者处对象的值
2. Set:管理站设置代理者处对象的值3. Trap: 代理者主动向管理站通报重要事件
SLA
简述
SLA(服务等级协议):是关于⽹络服务供应商和客户之间的⼀份合同,其中定义了服务类型、服务质量和客户付款等术语
⼀个完整的SLA同时也是⼀个合法的⽂档,包括所涉及的当事⼈、协定条款(包含应⽤程序和⽀持的服务)、违约的处罚、费⽤和仲裁机构、、修改条款、报告形式和双⽅的义务等。同样服务提供商可以对⽤户在⼯作负荷和资源使⽤⽅⾯进⾏规定。
KPI
简述
KPI(关键绩效指标):是通过对组织内部流程的输⼊端、输出端的关键参数进⾏设置、取样、计算、分析,衡量流程绩效的⼀种⽬标式量化管理指标,是把企业的战略⽬标分解为可操作的⼯作⽬标的⼯具,是企业绩效管理的基础。
KPI可以是部门主管明确部门的主要责任,并以此为基础,明确部门⼈员的业绩衡量指标,建⽴明确的切实可⾏的KPI体系,是做好绩效管理的关键。
KPI(关键绩效指标)是⽤于衡量⼯作⼈员⼯作绩效表现的量化指标,是绩效计划的重要组成部分
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- niushuan.com 版权所有 赣ICP备2024042780号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务