写点什么

DevGreenOps:如何设计可持续的数字服务

作者:Ben Linders

  • 2025-10-21
    北京
  • 本文字数:1479 字

    阅读完需:约 5 分钟

大小:738.75K时长:04:12
DevGreenOps:如何设计可持续的数字服务

DevGreenOps,也称为 DevSusOps,是 DevOps 方法的扩展,其特点是对环境可持续性的关注被整合到了 DevOps 周期的每一步中——Jochen Joswig 在OOP会议上的讲话中阐述了上述定义。通过透明度、极简主义、效率和认知的应用,有助于我们设计可持续的数字服务。

 

DevGreenOps 的承诺是,它将带来 DevOps 的所有好处,同时减少软件的环境影响,例如通过减少软件生命周期每个阶段所需的能源、水或其他资源,Joswig 说。

 

这一领域有许多概念、想法和方法可用。Joswig 建议将它们归类为以下四个类别:

 

透明度

极简主义

效率

认知

 

透明度这个类别包含的行动有,将有意义的可持续性指标整合到服务的监控和可观察性中,以及向所有利益相关者(包括开发人员、运维专业人员、设计师和用户或消费者)传达这些指标。这可以通过可持续性报告、仪表板或甚至是单个 KPI 来完成,当它们与他们的决策相关时,就将可持续性维度添加到这些决策中,Joswig 说。

 

一些开发团队也可能从其他概念中受益,如碳预算或计分板,Joswig 提到。就像财政预算限制了可以用于服务开发或运维的资金数量一样,碳预算限制了服务开发或运维允许造成的碳排放量。

 

对于计分板,Joswig 提到了两个主要应用:

 

第一个是将环境保护游戏化,例如跟踪在给定时间框架内哪些团队或项目节省了最多的环境影响。

 

第二个是跟踪哪个计算单元(应用程序、类、方法、机器等)对环境影响最大。

 

Joswig 说,像第二个例子这样的计分板有助于识别改进潜力,而前者可以促进和奖励可持续性走向卓越。

 

极简主义这一类别的核心问题是:“这真的有必要吗?” Joswig 解释说,这个问题越早在生命周期中提出和回答就越好:

 

想象一下,从测试纸原型中获得实际用户反馈,揭示了一个功能实际上并不需要,因此它永远不需要开发。

 

Joswig 建议仔细审查软件项目的每个方面。这可能是痛苦的,因为团队投入了金钱、汗水和泪水的某些部分实际上并不需要,因此可以被淘汰。但这很可能是值得的痛苦,因为它不止会带来对环境更友好的软件,而且能让软件更容易、更快、更便宜地维护、交付、运维和监控,也可能带来更好的用户体验:

 

有很多这样的例子,每一行代码都可能获得改进,甚至可以引出最基本的问题:“真的需要这个服务或项目吗?”。

 

一旦开发团队确定他们正在开发的内容是必要的,那么考虑提高其效率就有意义了,Joswig 说。效率类别不仅包括开发中的产品在其所有生命周期阶段的资源和能源效率,还可以包括开发过程的效率。

 

Joswig 建议考虑编程模式、算法和数据结构、数据格式。引入缓存或消除依赖可能值得一看,他补充说。一个非常基本且激烈讨论的话题是编程语言的选择。Joswig 提到了 Pereira 等人的论文《按能源效率排名编程语言》,该论文显示,如果用 C 语言而不是 Python 实现,能源消耗可能相差 75 倍。然而,他说,情况很少会这么简单。

 

Joswig 还增加了认知这一类别,因为即使软件是透明、最小和高效的,其环境足迹仍然有潜力被减少。他提到了一个例子,即确保软件认知到可再生能源的波动供应,并智能地适应它,这意味着计算被安排在可再生能源可用的地方或时间:

 

它用来减少限电场景时是最有用的,例如当太阳能或风能比需求更多时就会发生这种情况。

 

认知不仅包括软件层面,开发团队也应该意识到他们正在创造什么。充足性的问题就是这种认知的一部分,就像这个问题一样:软件/产品可能如何落入 Jevons 悖论陷阱,Joswig 说。

 

Jevons 悖论本质上说的是,效率增益并不转化为资源节省,因为技术或系统越高效,它就会被越多地使用。这甚至可能发展到效率增益导致更多资源利用的情况,Joswig 总结道。

 

原文链接:DevGreenOps: How to Design Sustainable Digital Services

2025-10-21 11:003895

评论

发布
暂无评论

Native开发工具之应用开发编辑器&打包发布(一)

android 程序员 移动开发

OkHttp3源码详解(三) 拦截器

android 移动开发

Kotlin 协程使用手册

android 程序员 移动开发

Kotlin-+-协程-+-Retrofit-+-MVVM优雅的实现网络请求

android 程序员 移动开发

Linux上SSH免密登录

android 程序员 移动开发

MFlowLayout标签

android 程序员 移动开发

Native开发工具之CPU 和架构(三)

android 程序员 移动开发

OkHttp 3

android 程序员 移动开发

OkHttp3-只会用是不够的,还得懂这些

android 程序员 移动开发

OpenCV开发之——人脸识别库生成so文件

android 程序员 移动开发

Koltin47

android 程序员 移动开发

Kotlin从头开始(一):lambda表达式和高阶函数 一

android 程序员 移动开发

【Flutter 专题】16 图解 ListView 下拉刷新与上拉加载 (一)【flutter_refresh】

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

MVVM-架构与数据绑定库

android 程序员 移动开发

MyEclipse7

android 程序员 移动开发

MySQL基础知识测试

android 程序员 移动开发

mysql数据库安装图解

android 程序员 移动开发

Okhttp的缓存机制

android 程序员 移动开发

Linux虚拟机与Windows宿主机间的通信

android 程序员 移动开发

ListView 与 RecyclerView 你应该弄懂的都在这里了

android 程序员 移动开发

LiveData+Retrofit 网络请求实战

android 程序员 移动开发

MPAndroidChart 教程:修改视窗 Modifying the Viewport(九)

android 程序员 移动开发

Kotlin Lambda巩固

android 程序员 移动开发

Kotlin协程实现原理概述

android 程序员 移动开发

Kotlin的自定义View,实现带弧形的进度条

android 程序员 移动开发

Linux 的make及makefile文件格式

android 程序员 移动开发

MPAndroidChart绘制曲线图、柱状图总结

android 程序员 移动开发

MVPArms官方首发一键生成组件化,体验纯傻瓜式组件化开发

android 程序员 移动开发

OkHttp、rxJava、Retrofit联合网络请求(一

android 程序员 移动开发

Meterial Design常见控件的使用(八):CardView

android 程序员 移动开发

MVC、MVP、MVVM,我到底该怎么选

android 程序员 移动开发

DevGreenOps:如何设计可持续的数字服务_AI&大模型_InfoQ精选文章