チームは毎スプリントで技術的負債について話し合います。彼らはコードの臭い、リファクタリングの必要性、モジュールの複雑さ、ビルドの肥大化を追跡します。しかし、システムに組み込まれたエネルギー消費を追跡している人はほとんどおらず、これが盲点を現実のものにしています。
\ コード内の非効率性(余分なループ、冗長なデータベースフェッチ、アイドル状態のバックグラウンドタスクなど)はすべて電力使用に変換されます。1日に何千回または何百万回実行されると、些細に感じることが測定可能な排出量になります。研究者たちはこれを定量化し始めています:例えば、Green Algorithmsフレームワークは、計算時間、メモリ使用量、データセンターの効率が、あらゆる計算タスクの炭素等価推定値に変換できることを示しています。
\ データセンターの規模では、非効率性が増幅します。あるホワイトペーパーでは、サーバーはアイドル状態でもピーク電力の60%から90%を消費する可能性があることがわかりました。それを数十台のサーバーに掛け合わせると、数週間の無駄なサイクルが数十キログラムのCO2等価物になります。
\ 現在、すべてのプロダクトチームは、複雑さと共に炭素を記録する目に見えない貸借対照表で運営されています。
カーボンデットという用語は環境会計に由来し、システムや事業体が将来の予算に対して「借りた」累積排出量を、十分なオフセットなしで説明するものです。(これはより広範な生態学的または気候債務の概念に根ざしています。)現在、技術者たちはこのフレーズを借用して、時間とともに隠れたエネルギーコストを蓄積する非効率なソフトウェアシステムを説明しています。
\ ソフトウェアでは、冗長なコードの層、過剰にプロビジョニングされたインフラストラクチャ、重いフレームワークが未チェックのまま存続すると、カーボンデットが増加します。不要なバックグラウンドジョブを生成するモジュール、またはデータを過剰に取得するサービスは、CPUサイクルを消費し、それが電力を消費します。
\ インフラストラクチャが「念のため」に余裕を持ってサイズ設定されている場合、そのスラックは多くの場合、十分に活用されないままですが、それでもベースライン電力を消費します。サーバーとサービスは、軽負荷の下でもピーク電力の27%から36%を消費することがよくあります。
\ システムがより多くのユーザー、より多くのサービス、より多くのレプリカで進化するにつれて、各非効率性が乗算されます。かつては単一の無駄なサイクルだったものが、1秒あたり数千になります。このエネルギーの無駄は、対処されない限り続き、目に見えない残高に対する利息のように複利で増加します。
\ 次に、コードが排出量をどのように蓄積するかを追跡して、負債が実際にどこから来るのかを確認します。
ソフトウェアのエネルギーフットプリントは、そのロジックの最も小さな詳細に隠れていることがよくあります。一歩長く実行されるループや、効率的に終了しない再帰関数は、必要以上にプロセッサをアクティブに保つことができます。計算の余分なミリ秒ごとに電力を消費し、何千人ものユーザーが同時に同じ機能をトリガーすると、その効果は倍増します。
モバイルソフトウェアに関する研究では、エネルギーコードの臭いが消費量を劇的に増加させる可能性があり、場合によっては、クリーンなバージョンよりも最大87倍多くのエネルギーを消費する可能性があることが示されています。フォローアップ作業では、これらのパターンを修正することで、実際に4%から30%の効率向上が達成されることがわかりました。これらの結果は、より広範なポイントを強化します:繰り返しの、一見些細なパターンが時間とともに実際の電力消費を蓄積します。
\ 同様の無駄は日常的なエンジニアリング習慣にも現れます:冗長なデータベースクエリ、不要なフロントエンドの再レンダリング、休眠状態のAPIエンドポイントはすべて、パフォーマンスを向上させることなく電力を消費しながらプロセッサをアクティブに保ちます。
\ サイズの大きすぎるビルドアーティファクトとアイドル状態のバックグラウンドタスクは、有用でなくなった後も長くメモリとストレージリソースをアクティブに保つことで、影響を深めます。これらのパターンが毎日何百万もの取引にわたって実行されると、排出量はグラムからキログラムのCO2にスケールアップします。そのフットプリントを定量化することが次の課題であり、それを正確に行うツールを持つチームはまだほとんどありません。
ソフトウェアが実際にどれだけのエネルギーを使用しているかを追跡することは、聞こえるよりも難しいです。Green Software Foundationのソフトウェアカーボン強度(SCI)フレームワークは、計算時間、メモリ使用量、データ転送を実際のエネルギーデータと照合するなど、それを測定可能にする最初の本格的な試みの一つです。
\ Cloud Carbon FootprintやCodeCarbonなどのツールは現在、このフォーミュラをさらに一歩進め、エネルギー推定値をビルドパイプラインとダッシュボードに直接組み込み、開発者がパフォーマンスメトリクスと並んで環境への影響を確認できるようにしています。これは、DevOpsコミュニティ内のより広範な会話と一致しており、チームはビルドとデプロイメントワークフローに持続可能性を組み込む実用的な方法を探り始めています。
\ 課題は、コード実行を物理的な用語に変換することです。消費される各ワットは、プロセッサのタイプ、冷却効率、データセンターに電力を供給するグリッドの炭素強度に依存します。同じワークロードでも、化石燃料を使用したグリッドと比較して、再生可能エネルギーが豊富なインフラストラクチャでは排出量が一部に過ぎない場合があります。
\ これらのツールの背後にあるロジックは、予測分析が他の産業で隠れた運用コストを明らかにするために使用されている方法からそれほど遠くありません。推測を測定可能な洞察に変えています。この種の可視性が開発者環境で標準になるまで、ほとんどのチームはパフォーマンスを最適化し続けながら、その背後にあるエネルギーに対して盲目のままです。
持続可能性はまだほとんどのエンジニアリングワークフローの外に位置しています。多くの企業では、炭素報告はコードを書いたりデプロイしたりする人々ではなく、施設や運用チームと共にあります。
\ その結果、リリースのエネルギーコストがスプリント計画やポストモーテムで議論されることはほとんどありません。アジャイルセレモニーは速度、ストーリーポイント、エラー率を追跡しますが、排出量は追跡しません。
アップタイムやレイテンシと同じ方法で追跡できるにもかかわらず、「カーボンスプリント」やカーボン予算を含むDevOps環境はほとんどありません。2,000人以上のソフトウェア実践者からの回答に基づくレポートでは、ほとんどの組織がソフトウェア関連の排出量の測定の初期段階にあることがわかりました。他の人々もこれに同意し、持続可能性メトリクスは継続的インテグレーションおよびデリバリーパイプラインからほとんど欠如していると指摘しています。
\ そのギャップは閉じ始めています。一部のオープンソースコミュニティは、エネルギー効率の良い変更にタグを付ける「グリーンコミット」の実験を開始し、エンタープライズダッシュボードはパフォーマンスKPIの隣に持続可能性データを表示し始めています。この可視性が向上するにつれて、設計の優先順位は、減速、縮小、または完全にシャットダウンするタイミングを知るシステムを構築することによって、減衰と抑制に向かってシフトしています。
長寿命システムに関心のあるアーキテクトは、意図された構造とランタイム現実の間の徐々の乖離のような、アーキテクチャの浸食や設計の減衰についてよく話します。アーキテクチャの浸食は、機能が蓄積し、ショートカットが増殖するシステムでよく知られたリスクです。そのドリフトに対抗する一つの方法は、自己最適化するか、未使用のプロセスを自動的に廃止するシステムを構築し、実際の使用シグナルに基づいて非アクティブなモジュールを剪定したり、十分に活用されていないサービスをトリミングしたりすることです。
コードの減衰を機能として扱うことは、定期的なクリーンアップを実行するルーチンを組み込むことを意味します:古いAPIのアーカイブ、休眠モジュールの廃止、または依存関係の衛生の強制。フレームワークは、X回のリリースで使用されていないライブラリにフラグを立てるか、削除することを要求する場合があります


