惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Security Archives - TechRepublic
Security Archives - TechRepublic
罗磊的独立博客
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
Apple Machine Learning Research
Apple Machine Learning Research
The Register - Security
The Register - Security
J
Java Code Geeks
V2EX - 技术
V2EX - 技术
Vercel News
Vercel News
N
News and Events Feed by Topic
腾讯CDC
P
Proofpoint News Feed
N
News | PayPal Newsroom
www.infosecurity-magazine.com
www.infosecurity-magazine.com
爱范儿
爱范儿
O
OpenAI News
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
Martin Fowler
Martin Fowler
Engineering at Meta
Engineering at Meta
D
Docker
Y
Y Combinator Blog
博客园 - 聂微东
G
Google Developers Blog
S
Security @ Cisco Blogs
Simon Willison's Weblog
Simon Willison's Weblog
S
Schneier on Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
S
SegmentFault 最新的问题
云风的 BLOG
云风的 BLOG
阮一峰的网络日志
阮一峰的网络日志
C
CXSECURITY Database RSS Feed - CXSecurity.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
CERT Recently Published Vulnerability Notes
I
Intezer
G
GRAHAM CLULEY
有赞技术团队
有赞技术团队
Attack and Defense Labs
Attack and Defense Labs
V
Visual Studio Blog
博客园 - Franky
博客园 - 三生石上(FineUI控件)
W
WeLiveSecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
Scott Helme
Scott Helme
T
Troy Hunt's Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
L
LINUX DO - 最新话题
C
Cybersecurity and Infrastructure Security Agency CISA

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19) 使用 Velero 备份 Kubernetes 集群 Kubernetes Cheat Sheet 开发 Tips(18) 如何构建一个 Java 工程 开发 Tips(17) KubeSpray 安装 Kubernetes 报错 ip in ansible_all_ipv4_addresses 基于 Kubernetes 和 Jenkins 搭建自动化测试系统 在 Kubernetes 上动态创建 Jenkins Slave 使用 Jenkins 进行服务拨测 开发 Tips(16) Kubernetes 签发 Ingress 证书及日常故障运维 Kubernetes 中 Deployment 的基本操作 Kubernetes 中的证书 如何使用 KubeBuilder 开发一个 Operator Kubernetes 1.6.0 安装问题汇总 镜像管理工具 -- Harbor 开发 Tips(15) Docker 如何拉取镜像 开发 Tips(14) 使用 Helm 安装 harbor 开发 Tips(13) 使用 S2I 构建云原生应用 在 Kubernetes 中使用 emptyDir、hostPath、localVolume 开发 Tips(12) 开发 Tips(11) 代码质量分析工具 SonarQube 使用 Kubeadm 安装 Kubernetes 集群 一起来学 Go --(4)常用函数 Kubernetes 中的 Ceph Kubernetes 之 Volumes Kubernetes 之 Labels、Selectors 开发 Tips(10) 开源正在重构商业模式 Kubernetes 之网络 Kubernetes 之 API 使用 Helm 和 Operator 快速部署 Prometheus Kubernetes 复杂有状态应用管理框架 -- Operator Kubernetes 的包管理器 -- Helm 一起来学 Go --(3)Go Modules 如何一步一步地优化博客方案 kubectl 实用指南 Kubernetes 中的基本概念 搭建远程 Kubernetes 开发环境 大公司和小公司的 ToB 思路 开发 Tips(9) Go 入门指南 一起来学 Go --(2)数据与逻辑结构 如何预防 Web 富文本中的 XSS 攻击 django-xss-cleaner 云工作时代 一起来学 Go --(1)背景与特点 SaaS 开发团队的不同阶段 你不知道的 Git 使用技巧 输出既服务 微服务设计 继续奔跑 开发 Tips(8) 从账户安全到二次验证 Django 性能之数据库查询优化 Django 性能之分库分表 敏捷开发之研发流程 打造一致性的团队 开发 Tips(7) Pytest 进阶学习之 Mock PaaS 部署之 buildpack Go 开发配置 领域输出才是 PaaS 的核心竞争力 Pytest 入门学习 开发 Tips(6) 如何使用 Jenkins、Docker、GitLab 搭建 Django 自动化部署流程
SRE 向左,DevOps 向右
微信公众号 · 2022-09-10 · via 陈少文的网站

1,脱离职责的流程是没有意义的

软件架构与组织架构相匹配,不仅仅体现在功能边界,更体现在职责划分。

清晰的职责边界,才能构筑良好的团队协作与发展。每个团队、每个人都应该明白自己的目标,什么事情应该承担,什么事情应该回避,将时间和精力投入到对主要目标有增益的事情,不能陷于琐屑。如此,团队中的成员才不会那么累,有可能沉淀一些领域知识,进行有深度的思考。

清晰的职责边界很难。这并不是一个管理上的问题,而是一个执行的问题。一个流程可能会涉及到很多的人,但这些人的业务水平在各自的领域并不一定在同一个档次。通常,我们在大公司能看到清晰的边界,很重要的一点是他们招聘了一群牛人。而在中小公司,牛人的比例很少,一旦某个环节出现了短板,就需要其他人补充。这样就破坏了职责的边界,进入了无流程的状态。

职责边界的破坏会让团队总是处于救火的状态。每次出了问题,团队中的人不去关注自己的职责范围,而依赖于少数的消防员灭火。因为这些消防员精通整个流程,处理问题又快又好,越用越顺手。但这并不是一个可持续的方式,随着业务的增长,问题会越来越多,但消防员也能同比例增长吗?是否在不同的业务阶段,我们依然需要不同比例的消防员,这是一个值得继续思考的问题。

下面主要讨论的是 DevOps 和 SRE 的两种协作流程。

2,DevOps 向右

如下图,从工作流看,DevOps 是向右的。

在流水线上,开发人员借助于平台,依次完成需求管理、编码、编译、部署等环节。这里简化了整个流程,也没有形成经典环路。

DevOps 强调的是端到端的价值交付,一端指的是需求,另一端指的是用户。从需求到交付给用户使用,才算一次完整的 DevOps 迭代。

DevOps 并没有强调对交付价值的度量和管理,这与 SRE 有着显著差异。

虽然交付是由研发自助完成,但是运维和运维开发人员会对其进行支撑。运维开发人员主要是提供自动化的能力,降低交付的门槛,提高交付的效率。而运维人员主要是以专家的形式,提供领域上的指导,设计整个流程。

3,SRE 向左

如下图,从工作流看,SRE 是向左的。

如果说 DevOps 的工作方式类似 KPI,那么 SRE 的工作方式更像 OKR。DevOps 从需求出发,制定良好规划,稳步推进,一个流程一个流程转交,最终上线交付给用户。但 SRE 不一样,SRE 是先有目标,再来考虑应该做出哪些努力,从哪些方面入手以达成目标。

也有一种说法,SRE 是 DevOps 的一种最佳实践。我认为这是一种概念上的泛化而已,因为他们讨论的对象重合度太高。快速发展的概念,总是会有各种解读和扩展。但这里,我们可以明显看到 DevOps 和 SRE 在工作流上的一个差异。

我们一起来看看 SRE 工作流。首先是由运维人员或领域人士制定 SLI 核心指标。制定指标的目的是为了可以度量。只有业务指标可以度量,业务指标才能够得到管理。接着,根据管理者的 OKR 制定相关的 SLO 指标目标,应该达到多少。然后,研发人员配合 SLO 目标进行业务的改进。

SRE 工作流之后,需要再走一次 DevOps 的流水线,才能发布上线。

4,总结

本文主要讨论了职责划分对流程的重要性和 DevOps、SRE 两种工作流。这里并没有对立 DevOps 、SRE 两种工作流。实际上,SRE 工作流也需要 DevOps 工作流的支撑,他们并不是孤立的存在。

另一方面,适用场景、业务阶段也很重要。直接指定一个新业务的 SLO 并不合适,因为 SLI 并不好制定和度量,此时应该采用 DevOps 工作流,稳步迭代上线。