跳到主要内容

可持续软件工程 - 原则 8:优化

可持续发展不是一个优化,而是成千上万的优化。我们的建议是全面审视,逐步执行。通常情况下,努力了解从用户体验到数据中心设计或电网的完整堆栈,会产生简单的解决方案,显著提高碳效率。

权衡去碳化所需的努力与潜在的回报。就像更广泛的全球可持续发展运动一样,有些部门比其他部门更难实现去碳化。在计算领域,有些应用程序域比其他域更难实现去碳化。应用程序体系结构的某些部分比其他部分更难实现去碳化。

成功优化的关键是选择一个衡量标准,它将给出明确的信号,指出在哪些方面进行优化的效果最佳。例如,如果数据库查询导致碳排放量增加了 10 倍,那么是否有必要花两周时间来减少网络通信中数兆字节的流量?

在极少数情况下,我们可以直接测量应用程序的碳成本,但如果我们顺着一条资源链往下走,最终发现它与碳排放有关联,那么这就是一个很好的碳代用指标。

测量碳排放是一项复杂的挑战,需要估算而不是测量堆栈的各个部分,但只要付出一些努力就可以做到。

由于碳强度和其他依赖项的可变性,碳排放总量可能会根据应用程序的运行时间或地区而变化。

相同的应用程序在不同的时间测量,会产生不同的碳量。这种变化可能是一个好的信号,特别是当你对工作负荷需求转移持开放态度时,也可能带来困扰,比如当你专注于能源优化时。

能源

应用程序每次运行时消耗的能量可能会有所不同,对于这种变化,你可能想把它当作一个优化信号,也可能想要加以控制。

相同的应用程序在不同的硬件上运行可能会导致不同的能量消耗,因为硬件组件之间的能效不同。

根据能量均衡原则,相同的应用程序在相同的硬件、不同的时间运行,可能会导致不同的能量消耗,因为这两次运行的硬件利用率不同。也就是说,在第二次运行期间,硬件可能正在运行其他应用程序,这会改变硬件的总体能效。

但总体而言,在人类可感知的性能和输出相同的情况下,创建耗电更少的应用程序是一个很好的减碳范例。

某些设备、工具和库可用来测量应用程序所消耗的能量。

Cost

在某种程度上,大多数服务都会考虑电力和硬件的成本。构建尽可能廉价运行的应用程序通常是减少碳排放的应用程序的良好范例。

网络

人们往往不考虑联网的碳成本。联网需要消耗电力和硬件,因此它也是碳的代用指标。

测量并减少数据量和数据的传输距离是一个很好的减碳范例。

性能

构建性能更高的应用程序,就是要构建更有效利用硬件和电力的应用程序。由于硬件和电力是碳的代用指标,因此,如果你能构建一个在相同利用水平下性能更好的应用程序,这种设计将有可能减少总体碳排放。