本文作者:
付莹 Thoughtworks 总监级咨询师
梁晶 Thoughtworks 高级咨询师
随着云服务成为更多企业的默认选项,其使用费用和对气候产生的影响也随之上升。如何更负责任的使用云服务也成为企业需要考虑的问题,而解决这一问题需要人、文化和工具的支持。本文将介绍云服务是如何对气候变化产生影响,并结合实际案例阐述企业应当如何系统化的制定节能减碳和节省成本的方案。
云服务发展趋势
在当下的数字化时代,越来越多的企业选择将IT服务迁至云上,Gartner 2022年的一份报告预测,到2025年,会有51%的IT花费会从传统方案迁移至公有云[1]。云服务凭借它的易扩展性和价格优势,得到各家企业的青睐,但同时由于它的使用便捷性,也造成了云服务资源的浪费。一份报告[2]显示,企业在云服务使用上的花费越来越难以控制,同时云服务在使用中也存在大量的浪费。在2021年,真正有效的云服务花费只有不到70%。因此,很多企业也将“优化云服务使用,降低云服务成本”作为优先级之一。
另一方面,随着气候变暖带来的极端天气越来越频繁,各行各业都开始关注本行业对气候变化的影响。我们所处的ICT行业对气候变化的影响不容小觑,它在全球温室气体排放量中所占份额为 1.8%–2.8%。其中云服务(数据中心和网络数据传输)相关的碳排放占到全球温室气体排放量的0.6%[3]。目前,云服务提供商已经聚焦可持续发展,开始更加激进的推进碳中和的企业目标[4],比如降低数据中心的PUE,增加云服务的碳感知能力等。作为云服务的使用者,企业一方面需要响应云服务提供商针对可持续发展的新动作,另一方面,也需要制定自身的技术策略,降低企业使用云服务所带来的气候影响。
在可持续发展和成本优化的双重趋势下,企业需要重新思考自身的IT策略,更加负责任的使用云服务。
负责任的云服务使用
那么什么是负责任的云服务使用呢?这里的责任一方面指的是企业对环境的责任,另一方面指的是团队在使用云服务时对企业成本的责任。而负责任的云服务使用指的是,企业需要构建相应策略,通过治理和实践,以最少的成本和碳排放达成企业最大的业务价值。
负责任的使用云服务,需要企业从多个层面采取行动。
- 组织层面,需要将云服务的成本和碳排放纳入企业的运营目标中,并持续对此目标进行监控和追踪,设定相应的治理机制。
- 团队层面,在选择云服务提供商,使用云服务时,不仅仅需要考虑到业务的可持续性,也要考虑到云服务使用的成本和可能带来的碳排放。
- 企业员工层面,需要了解架构设计、云服务使用的最佳实践,在日常工作过程中,减少云服务使用的浪费,应用绿色实践,帮助企业达成降本和减碳的目标。
这不是一个简单的、一次性的工作,它需要从人、文化和技术等多方面入手,对企业的云服务使用策略进行变革。
云服务与碳排放的关系
人们一般比较容易理解云服务和成本之间的关系,但云服务的使用和碳排放之间是什么关系呢?我们平时使用的云服务背后是云服务提供商数据中心的资源,包括计算、内存、存储、网络。如同使用个人电脑一样,数据中心的运转也会消耗电力,而通过化石燃料(如燃煤)生产的电力则会产生碳排放。目前大多数云服务提供商还无法做到净零碳排放,因此如何使用云服务是影响碳排放的一个关键因素。例如AWS的EC2云服务器提供了通用型、计算优化型、内存优化型等多种实例供用户选择,不同选择的碳排放存在一定程度的差别。如果我们不负责任的随意使用,将会既增加成本,又增加碳排放,对环境造成破坏。
如何知道我们所使用的云服务产生了多少碳排放?目前,AWS[5],谷歌云[6]与微软Azure[7]都提供了碳足迹工具,支持可视化展示及导出云服务的碳排放量数据。如果云服务提供商没有提供碳排放工具或者希望更细粒度的计算碳排放量,你也可以参考Cloud Carbon Footprint开源工具所提供的方法[8]计算碳排放量。如下图所示,通过云服务提供商提取云服务的使用数据(计算、存储、网络,内存等)计算耗电量(瓦时),结合数据中心电力区域、PUE(衡量数据中心电力使用效率的指标)以及电网排放因子的公开可用数据将耗电量转化为以二氧化碳当量(公吨 CO2e)表示的温室气体排放量。
如何负责任的使用云服务
上述提及到负责任的使用云服务不是简单的一次性的工作,需要企业从多个层面采取行动,设定治理机制,落地优化实践,那么如何将云服务优化可持续的运转下去呢?企业在使用云服务时,可以构建如下图所示的可持续循环(监控-理解-优化),帮助团队内和团队间协作管理成本与碳排放。在可持续循环中,各个团队可以在统一的地方及时获取成本与碳排放信息,同时利用反馈循环帮助团队做出基于成本和碳排放的决策,在多次循环实践中逐步提升团队成员的责任心。
持续监控与可视化
循环构建的基础是对云服务成本和碳排放的持续监控和可视化。
首先,需要收集企业云服务的成本和碳排放数据。对于成本数据,云服务提供商大都提供了费用查看及导出功能。对于碳排放数据,可以参考上述提到的计算方式[8]。
而数据可视化是一个可以帮助我们持续监控的利器,一图胜千言。AWS、谷歌云与微软Azure的成本中心和碳足迹工具都提供了可视化面板,如果你的云服务提供商没有提供碳足迹工具,也可以考虑使用Cloud Carbon Footprint(CCF)开源工具进行可视化,或者结合想要分析的问题自行搭建可视化面板。
通过将云服务成本和碳排放信息以可视化的方式分享给各个团队,可以快速了解团队云服务使用情况,促进团队采取优化措施。
理解数据并深入分析
可持续循环的第二步是理解数据并深入分析。团队可以通过数据关注到云服务使用现状与整体走势,从而结合自身业务与技术架构进行理解与分析。例如观察所有云服务在整体费用和碳排放数据的占比情况是否合理,或从成本与碳排放前五的服务入手,寻找是否存在峰值或者异常情况等现象,再深入分析其根本原因。
以下列出了一些常见且关键的问题,可供参考:
- 云服务所在区域是否足够绿色? 可以借助云服务提供商工具或者电力地图查看自己区域电力是否由可再生能源提供动力。
- 选择的计算服务是否合适?例如计算服务只需要在午夜运行,如果计算服务不支持自动扩缩或者按小时/次付费,就会产生多余的费用和碳排放。
- 云服务是否利用率不足?例如使用五台20%利用率的服务器,而不是使用一台100%利用率的服务器,从而产生了更多的隐含碳[9]。
- 是否存在僵尸工作负载?即在某些时候有用的应用程序,但那个用途很久以前就结束了,却没有人停用该应用程序。
除此之外,Green Software Foundation(GSF)[10] 发布了绿色软件原则[11]和模式目录[12],原则是定义、运行和构建绿色软件所需的一组核心能力,模式是软件从业者可以使用的实用建议,对应于一个或多个原则。模式目录中的优化建议可以帮助发现更多云服务存在的问题,例如:
- 选取在低碳电力时完成对运行时间点无要求的任务(例如训练机器学习模型或批处理作业)。
- 减少传输数据的大小,从而帮助减少电力和隐含碳(例如减少传输不必要的属性,压缩数据等)。
- 最小化环境总数。每个增加的环境都会增加碳排放,因此了解每种环境的作用是很有必要的,可以按需减少不必要的环境。
制定并执行优化措施
在对云服务的成本和碳排放情况有所了解,并且通过分析识别出可优化的机会点之后,接下来则需要制定并执行具体的优化措施。这需要团队构建优化的路线,并且通过持续的监控观察优化的效果,调整优化措施,不断重复此循环,以达到降本减碳的效果。同时也需要各个团队提升成本和碳排意识,将实践落地到日常工作过程中。
- 制定优化路线。团队可以从容易实现的优化方式入手,例如减少定时任务的运行时间与次数,清除僵尸负载等,优化后通过监控数据了解变化,从而建立反馈循环,加强信心,有助于持续优化。然后可以根据团队业务优先级合理安排优化内容的顺序与时间,尽可能将实践步骤最小化,以方便快速反馈,分析数据变化。在优化过程中,可以逐步建立最适合团队业务的云服务架构和配置,也可以将实践经验对外分享,帮助更多团队或者企业更加负责任的使用云服务。
- 提升团队成本和碳排意识。团队在使用云服务的过程中,往往会将产品研发作为最高优先级,而忽略了云服务的成本问题。甚至有些企业已经将云服务的费用分享给各个产品团队,但仍然难以引起产品团队的重视,更何况是对碳排放的关注。只有提升各个团队对云服务成本和碳排的意识,并提供相应的工具和方法帮助团队进行行动,才能让优化措施真正落地。FinOps Foundation[13]提供了一系列培训课程和认证考试[14],提升团队成员对云成本的认识;GSF 提供了一个免费和开放的教育学习平台[15],Linux 基金会也提供了培训课程[16],可以帮助团队内技术或者非技术人员体系化的了解减碳的重要性,理解平时每天接触的应用/软硬件/云服务其实和碳排放息息相关。每个人都可以通过实际行动减少云服务成本和碳排放,通过成本和碳排放数据的下降验证优化行动的作用,以此获取动力和成就感。借此可以帮助企业将负责任和可持续融入到更多实践中。
实践分享
在Thoughtworks的一个内部项目上,借助可持续性循环,我们进行了接近一年的云服务绿色优化。我们的服务全部存放在谷歌云上,相比优化之前,我们整体的谷歌云费用降低了46%,碳排放量降低了60%。
首先是监控的构建。在Thoughtworks有一个专门负责Cloud Ops的团队会使用CCF提供的计算方法[8]得到每个内部项目团队的碳排放数据,并结合费用数据构建了云服务使用情况的可视化面板。我们基于此信息拉取出和自身产品相关的信息,进一步构建出符合团队诉求的面板,对云服务使用情况进行及时追踪。
借助该面板,我们对使用的所有云服务的成本和碳足迹进行了全面的分析,将云服务分别按照成本和碳排放量从高到低排序,一个个的深入服务检查和分析,发现了不少上述提到的问题:
1)僵尸工作负载:使用的虚拟机服务Compute Engine,碳排放量排在第一,并且存在上述提到的已经无用的僵尸实例。
2)过度配置:发现Kubernetes托管服务Google Kubernetes Engine(GKE)和数据库服务Cloud SQL也存在过度分配,利用率不足的问题,例如测试环境的Cloud SQL实例无法很好利用为其分配的4个cpu,26GB的内存。
3)不合适的计算服务:审视部署在GKE上的工作负载,发现更适合的计算服务是全托管serverless计算服务Cloud Run,它能正常运行我们的工作负载,碳排放和费用都低于GKE,支持快速自动缩放,也能减轻平时的集群维护工作。
针对上述问题,我们将问题划分优先级,依次进行优化,以月为粒度定期通过可视化面板观察和分析数据变化,形成反馈循环。为了从成本、碳排放、时间、服务类别等多个维度监控数据变化,我们优化了可视化数据面板,以更便捷的分析变化。
通过这次实践,让我们对负责任使用云服务以及可持续有了更加充分的了解,并借此优化了云服务的使用。也因为这次实践,团队每个人都建立了成本与碳排放的意识,在后续需要做云服务选型时,也自然而然的将成本和碳排考虑进去。
总结
随着云服务使用成本的逐渐提高,云服务对气候影响的加深,作为企业,需要重新审视当前的云服务使用策略,提升团队在使用云服务时的成本和减碳意识。通过可持续循环的构建,对云服务成本和碳排放进行监控和治理,持续寻找优化机会点,并通过构建团队成本和碳排意识,将云服务的相关实践融入到日常研发、架构选择过程中,一步步实现负责任的云服务使用。
References
[2] https://www.flexera.com/blog/cloud/cloud-computing-trends-2022-state-of-the-cloud-report/
[3] https://www.iea.org/reports/data-centres-and-data-transmission-networks
[5] https://aws.amazon.com/cn/aws-cost-management/aws-customer-carbon-footprint-tool/
[6] https://cloud.google.com/carbon-footprint
[8] https://www.cloudcarbonfootprint.org/docs/methodology
[9] https://learn.greensoftware.foundation/hardware-efficiency#embodied-carbon
[10] https://greensoftware.foundation/
[11] https://learn.greensoftware.foundation/introduction
[12] https://patterns.greensoftware.foundation/
[13] https://www.finops.org/about/
[14] https://learn.finops.org/
[15] https://learn.greensoftware.foundation/
[16] https://trainingportal.linuxfoundation.org/courses/green-software-for-practitioners-lfc131