|
13 | 13 |
|
14 | 14 | ### DevOps 再理解
|
15 | 15 |
|
16 |
| -CI/CD 和 DevOps 有什么区别?如果不能准确回答的话,这篇介绍就值得读一下。文章介绍主要参考于[《软件研发效能提升之美》](https://book.douban.com/subject/35631505/ "软件研发效能提升之美")。 |
| 16 | +CI/CD 和 DevOps 有什么区别?如果你不能准确回答的话,可以读一下这篇介绍,对 DevOps 再次加深理解。内容主要参考自[《软件研发效能提升之美》](https://book.douban.com/subject/35631505/ "软件研发效能提升之美")。 |
17 | 17 |
|
18 |
| -DevOps 是 Development和 Operations 的组合,即开发和运维,再加上保证质量的测试,就构成了完整的 DevOps。 |
| 18 | +DevOps 是 Development和 Operations 的组合,即开发和运维,再加上保证质量的测试,就构成了完整的 DevOps。通常 DevOps 会用下图表示: |
19 | 19 |
|
20 | 20 | 
|
21 | 21 |
|
22 |
| -可以注意到 DevOps 是一个环形结构,它需要同时触达开发、测试、运维三方。DevOps 还可以理解为是敏捷的一种延续,到此可以总结出 DevOps 的目的:拉通职能、快速迭代,以达到提升能效的作用。如何更好的达到这个目的,由此会引出一系列工程实践和技术方案。DevOps 不是具体的开发工具,而是一种软件研发管理模式和思想,是一种文化实践,并不是具体的工具或技术,所有在保证质量的前提下提升效能的方法都属于 DevOps 的范畴。 |
| 22 | +DevOps 要解决的问题主要有两个: |
| 23 | + |
| 24 | +1、开发流程中原本的三方是各自独立且顺序依赖的。这样效率会很低,DevOps 将开发流程中原本独立的三方进行聚合,这也是为什么它的结构是一个重叠的环形结构。 |
| 25 | + |
| 26 | +2、传统的开发模式更新迭代比较慢。DevOps 接收敏捷开发中快速迭代思想,将各个开发环节都设计成自动化、可持续的流程。 |
| 27 | + |
| 28 | +DevOps 不是具体的开发工具,而是一种软件研发管理模式和思想,是一种文化实践,所有在保证质量的前提下提升效能的方法都属于 DevOps 的范畴。围绕这个理念催生出了很多开发工具和技术实践。 |
23 | 29 |
|
24 | 30 | 根据业界主流观点,DevOps 的生命周期可以化为这 7 个阶段:持续开发、持续集成、持续测试、持续监控、持续反馈、持续部署和持续运营。持续开发对应于编码工作,这个阶段需要用到代码仓库、版本控制工具、包管理工具等。持续集成是频繁的提交代码、编译代码、执行单测等,尽可能早的发现问题。持续测试是保证代码的每次提交都能够被及时验证。持续部署是指频繁的把构建出的产品发布到测试环境、生产环境的流程,以尽早接收检验。CI/CD 对应的是持续集成和持续部署,它是 DevOps 生命周期里最重要也是最基本的两个阶段,也可以说它们是 DevOps 概念的实践方式。
|
25 | 31 |
|
26 |
| -DevOps 的 7 个阶段都用到了持续一词,为了实现持续,需要串联开发中的各项任务,由此引出了流水线的概念。流水线是讲究顺序的,任何一个节点出错都会导致任务的失败,这一方面加快了周转速度,也利于尽早暴露问题。像是 Jenkins、GitLab、Github 都会 CI/CD 提供了便捷的流水线配置方案。 |
| 32 | +DevOps 的 7 个阶段都用到了「持续」一词,为了实现持续,需要串联开发中的各项任务,由此引出了流水线的概念。流水线是讲究顺序的,任何一个节点出错都会导致任务的失败,这可以加快了周转速度,也利于尽早暴露问题。像是 Jenkins、GitLab、Github 都会 CI/CD 提供了便捷的流水线配置方案。 |
27 | 33 |
|
28 | 34 | DevOps 还常会跟容器技术同时出现,无容积化流程通常是这样的:
|
29 | 35 |
|
30 | 36 | 
|
31 | 37 |
|
32 |
| -任务量小时这样没问题,但当面对大规模的提交时多场景的提交时,机器的执行效率就显得尤为重要。除了增加机器外,还可以利用容积化技术最大化机器的利用效率。Kubernetes 是一个比较成熟的管理容积化负载均衡、弹性伸缩的服务。 |
| 38 | +任务量小时这样没问题,但当面对大规模的提交时多场景的提交时,机器的执行效率就显得尤为重要。除了增加机器外,还可以利用容积化技术最大化机器的利用效率。Kubernetes 是用于优化容积化流程的技术方案,它可以提供容积化负载均衡、弹性伸缩等服务。 |
33 | 39 |
|
34 | 40 | 
|
35 | 41 |
|
36 |
| -在 DevOps 之后又演化出了其他开发实践。 |
| 42 | +DevOps 理念的发展又推动了其他开发环节的进化,并演化出了这些开发实践。 |
37 | 43 |
|
38 |
| -* DevSecOps:Sec 表示 Secure,就是将安全防护与 DevOps 结合起来。需要监控 DevOps 各个阶段的安全问题,通常会通过扫描代码、交互式安全扫描、模拟攻击等方式来保证安全性,这些都有对应的开发工具。 |
39 |
| -* DevPerfOps:Perf 表示 Performance,就是将性能保障与 DevOps 结合起来。需要监控各个阶段的性能指标,开发阶段有:代码静态性能问题、算法时间复杂度、接口级并发测试、性能基线比较等。持续集成阶段有模块级扩缩容测试、压力测试等。持续发布有系统级别的性能基准测试、故障迁移测试、全链路压力测试等。 |
| 44 | +* DevSecOps:Sec 表示 Secure,就是将安全防护与 DevOps 结合起来。需要监控 DevOps 各个阶段的安全问题,通常会通过扫描代码、交互式安全扫描、模拟攻击等方式来保证安全性。 |
| 45 | +* DevPerfOps:Perf 表示 Performance,就是将性能保障与 DevOps 结合起来。它需要监控各个阶段的性能指标,开发阶段的技术方案有:代码静态性能问题、算法时间复杂度、接口级并发测试、性能基线比较等。持续集成阶段有模块级扩缩容测试、压力测试等。持续发布有系统级别的性能基准测试、故障迁移测试、全链路压力测试等。 |
40 | 46 | * BizDevOps:Biz 表示 Business,就是将业务与 DevOps 结合起来。BizDevOps 的概念是将不写代码的业务团队,像是产品和运行也参与进来。它要解决的问题源于[三个不等式](https://developer.aliyun.com/article/839569 "深度 | 从DevOps到BizDevOps, 研发效能提升的系统方法"):局部效率不等于高效交付,高效交付不等于持续高效,高效交付不等于业务成功。为了起到真正助力业务的目标,需要落地产品导向的交付,建设标准化基础设施,不断积累技术资产,同时还需要与业务之间建立快速的反馈闭环。
|
41 |
| -* AIOps:人工智能 Ops,在原有 DevOps 的各个阶段都融入 AI 能力,通过不断的数据采集和分析,能够根据算法自动的下发执行规则。更进一步,通过自动化测试,不断的分析测试结果,还可以用于异常检测、瓶颈分析、故障预测甚至于故障自愈。 |
| 47 | +* AIOps:AI 表示 Artificial Intelligence,就是在原有 DevOps 的各个阶段都融入 AI 能力。通过不断的数据采集和分析,根据算法自动的下发或变更执行规则。更进一步,通过自动化测试,不断的分析测试结果,还可以用于异常检测、瓶颈分析、故障预测甚至于故障自愈。 |
42 | 48 |
|
43 | 49 | ### [Apple 计划推出 Lockdown 模式,保护用户免遭间谍软件侵害](https://www.apple.com.cn/newsroom/2022/07/apple-expands-commitment-to-protect-users-from-mercenary-spyware/ "Apple 计划推出 Lockdown 模式,保护用户免遭间谍软件侵害")
|
44 | 50 |
|
@@ -72,7 +78,6 @@ struct Class64 {
|
72 | 78 | ```
|
73 | 79 |
|
74 | 80 | ---
|
75 |
| -
|
76 | 81 | `Class64.data` 数据是 `VM Address` 地址,我们需要通过转换后拿到 `offset` ,在 `machData` 当中找到对应的 `ClassInfo64` 数据,然后其中 `name` 就是对应的 `className`
|
77 | 82 |
|
78 | 83 | ```C++
|
|
0 commit comments