- 目次
1.ソフトウェアはサステナビリティに貢献できるのか?
あなたがIT担当者だとして、上司から「ウチのシステムをサステナブルに(グリーンに)してほしい」と言われたらどうしますか?恐らく多くの人が、まずは省エネ機器の導入やグリーンなデータセンタの活用を検討するでしょう。これらの手段は非常に効果的ですし、検討すべきポイントであることに疑いの余地はありません。
しかし考えてみてください。ハードウェアを動かしているのは誰でしょうか?処理を投げ込む人間も正解ではあるのですが、「機械をこう動かせ」と実際に命令を与えているのは「プログラム」です。自動車とドライバーの関係に例えると、ハードウェアが自動車でプログラムはドライバー。プログラム、つまりソフトウェアの挙動がハードウェアのエネルギー効率にも大きく影響します。調査会社のガートナーが2024年5月に発表した2024年以降の戦略的テクノロジ・トレンドのトップ5にもグリーン・ソフトウェア・エンジニアリングが含まれており、2027年までにグローバルな大企業の30%がソフトウェアのサステナビリティを非機能要件に含めるようになると予測されています。
2.Green Softwareという考え方
Green Softwareとは温室効果ガスの1つである二酸化炭素の効率が良い(炭素排出ができるだけ少ない)ソフトウェアのことを指します。その開発には運用時の炭素負荷も考慮したアーキテクチャ検討やソフトウェア開発など、幅広い知識が求められるのが特徴です。GSFではGreen Softwareに関する学習コンテンツや認定制度を提供(図1)。これらは今までシステム開発者が実践してきたノウハウを土台としています。「炭素排出量を減らすために採用すべきコンポーネント」や「データセンタの地域特性を活かしたデプロイ戦略」など、これまで重視されてきたコストやパフォーマンスに加えて、サステナビリティをシステム開発の軸としたときに必要となる要素を解説しています。
図1:GSF学習コンテンツと認定制度
これらを適用すればグリーンなソフトウェアができあがるのは間違いありません。しかし、検討コストや期間との兼ね合いで「もっと手軽に、簡単に自分たちのシステムをグリーンにしたい」というニーズがあるのも確かです。そこで、NTT DATAでは「Green FaaS」を提唱しています。
3.Green FaaS - 必要なとき、最もグリーンなところでプログラムを動かす
Green FaaSは「関数(アプリケーションロジック)をグリーンに動かすこと」と「消費エネルギーと炭素排出量について可観測性が保証されていること」の2つを特徴としたFunction as a Service(FaaS)です。Green FaaSはJavaでの開発をサポートしますが、利用にあたって開発者は専用ライブラリを使用する必要がありません。そのため、開発者はアプリケーションロジックだけを抜き出して、関数としてGreen FaaSにデプロイすることになります。ちなみに、関数はRESTアプリケーションのようにHTTPで呼び出すことができます。
Green FaaSの関数実行部は複数のデータセンタに配置できるため、関数が呼び出されると「どこで動かすのが一番グリーンか」を毎回評価し、最もグリーンなデータセンタに関数がデプロイされます。つまり、前回呼び出したときと今回動かすときとでデータセンタが異なる可能性があるのです。
また、関数を動かしたときに消費したエネルギー量と炭素排出量換算値をダッシュボードで確認できます(図2)。これにより、運用時の値はもちろんのこと、関数の改造や新機能追加をしたときの影響を視覚的に確認することが可能です。さらに、ソフトウェアの炭素負荷を数値化するISO標準であるSCI(Software Carbon Intensity)の算出にも対応しており、システムの炭素負荷を関数単位で把握することもできます。
図2:Greenダッシュボード
4.Green FaaSの適用効果
Green FaaSを適用することで、どの程度エネルギー消費量・炭素排出量に変化が生じるか見ていきます。今回はBase64形式(バイナリデータを文字列として扱う形式)で与えられた14.7メガピクセルのJPEG画像データを25倍に拡大し、かつセピア化する処理が1時間に1回発生することとします。これをWebアプリケーションとしてベアメタルサーバの上にデプロイしたときと、Green FaaSにデプロイしたときのエネルギー消費量と炭素排出量を比較します。
この処理はCPUバウンドであるため、消費エネルギーはBMC(Baseboard Management Controller:サーバの管理用コントローラ)で計測した筐体消費電力に、アプリケーションのCPU使用率を掛けて算出します。なお、使用する機器は同一構成のものであり、デプロイ方式によって機器由来の消費電力変化は無いものとします。
最初にベアメタルサーバでこのアプリケーションを動作させたときの消費エネルギーを算出します。ベアメタルサーバの場合、処理時はもちろんのこと、待機電力も消費することになります。これらを考慮すると1時間で約17100mWhのエネルギーを消費します。
次にGreen FaaSで動作させたときの消費エネルギーを考えます。Green FaaSのダッシュボードより処理実行時に193mWhのエネルギーを消費したことがわかりました。(クラウドプロバイダ含む)一般的なFaaSの大きな特徴である「アイドル状態では停止状態となる」点は、グリーン観点で大きな影響を及ぼします。アイドル状態においては完全にプロセスが停止するため、当然CPU使用率はゼロとなり、消費エネルギーもゼロとなります。
これらの算出結果より、Green FaaSはベアメタルに比べ98.8%もの消費エネルギーを削減できることがわかりました(図3)。
図3:消費エネルギー比較
Green FaaSを活用することで消費エネルギーの削減にも貢献できることがわかりました。ではここから、炭素排出量の観点でさらにシステムをグリーンに動作させることはできないのかを考えてみます。
同じ構成のハードウェアであればいつ・どこで動かしても同じだけのエネルギー(電気)を消費します。ただし、その電気を生成するのに排出した炭素量は変わります。たとえば石炭火力のみに頼っている地域と、再エネ率100%の地域、100%太陽光発電で電力を賄っている地域では、炭素排出量は大きく異なるでしょう。前述のとおりGreen FaaSは「どこで動かすのが一番グリーンか」を毎回評価するため、これらの状況を見ながら最適なアプリケーションを実行することになります。
先に示した例は1kWhの発電にかかる炭素排出量が0.373gの地域(地域A)で動かした場合を想定していました。これを再エネ率が高い地域(地域B)で動かすことができた場合を比較したものが図4です。処理にかかる炭素排出量は、消費エネルギーと発電時の炭素排出量の掛け算であるため、グリーンな地域・時間帯で動作させることによる環境観点でのアドバンテージがとても大きくなります。
図4:炭素排出量比較
FaaS自体はパブリッククラウドを中心に普及が進んできているアーキテクチャです。ここにグリーンを掛け合わせることでサステナビリティへの取り組みを促進し、かつエンドユーザーにもその効果をアピールすることができます。また、アプリケーションがグリーンソフトウェアとしてどのような状態なのかを具体的な数値として見えるため、評価基準として活用することも可能です。
近年、猛暑日の日数や最高気温などが毎年更新され、地球温暖化を肌で感じることも多くなりました。命の危険さえ感じる暑さもあり、昔のように子どもたちに「夏休みは外で遊んでおいで」と気軽に言えなくなりつつあります。ITシステムそのものの消費エネルギー・炭素排出量削減が貢献できることは小さいかもしれませんが、この技術がさまざまなところで活用され、少しでも地球環境の改善に貢献することを願っています。
Green Software Practitioner
https://learn.greensoftware.foundation/ja-JP/
実践者向けグリーン ソフトウェア(LFC131)
https://training.linuxfoundation.org/ja/training/green-software-for-practitioners-lfc131/
あわせて読みたい: