コンテンツに移動
DevOps & SRE

SRE 式プロジェクト管理: プロジェクトと本番環境のニーズをうまく満たす方法

2024年10月10日
Karan Anand

Technical Program Manager, Site Reliability Engineering

※この投稿は米国時間 2024 年 9 月 28 日に、Google Cloud blog に投稿されたものの抄訳です。

おそらく皆さんも、定められた期限にプロジェクトが間に合わず、イライラした経験があることでしょう。プロジェクトのスタッフやコンピューティング リソースが優先順位の高いプロジェクトに再配分されたこともあるかもしれません。こうした不確実性の中でプロジェクトを期限内に終わらせることは至難の業です。

サイト信頼性エンジニアリング(SRE)チームの場合、これは特に当てはまります。プロジェクト管理の原則は役に立ちますが、IT 分野の多くのプロジェクト管理フレームワークは、ソフトウェア開発チームのような重点が一つのみのチームを対象としています。

Google SRE チームの場合は違います。彼らは、インフラストラクチャ プロジェクトの遂行と、主要な役割である本番環境のサポートを同時に担っています。大まかに言うと、SRE の作業時間の半分は本番環境のサポート、もう半分はプロダクトに注力することに充てられています。

一般的な問題

最近、Google SRE チームは、Google のクラウド サービスの信頼性、セキュリティ、コンプライアンスを強化するため、インフラストラクチャのリージョン化プロジェクトに取り組んでいました。このプロジェクトには、お客様に対するコミットメントと地域規制の遵守のために、明確に定められたタイムラインが割り当てられました。テクニカル プログラム マネージャー(TPM)として、私は包括的な目標を小さなマイルストーンに分解し、進捗状況を常に把握できるよう、リーダーシップ チームに伝えました。

しかし、プロジェクトの実行フェーズ全体を通じて、本番環境でプロジェクトに関係ないインシデントが多数発生しました。Spanner キューが長くなり、メッセージが蓄積されたことで、デベロッパー ビルドのコンパイルに時間がかかるようになり、不良ビルドのリリースにつながりました。その上、非同期タスクも期待どおりに実行されませんでした。不良ビルドがロールバックされると、未処理の非同期タスクがすべて一度に実行されたのです。こうした予期せぬ問題のため、一部のエンジニアがリージョン化プロジェクトから一時的に配置転換され、本番環境インフラストラクチャに関連する運用上の制約に対処しました。当然のことながら、スタッフの割り当てを変更して本番環境でのインシデント対応に回したことで、プロジェクト作業が遅延する結果となりました。

SRE を活用して計画策定を改善

本番環境サービスを管理する SRE のようなチームは、難しい問題を解決する方法を多数用意しています。その秘訣は、エンジニアが対処しなければならない煩雑な手続きを最小限に抑え、最速で仕事を完了できるソリューションを選択することです。

私たちの組織では、プロジェクト開始時に計画を強化することで、問題解決に対してプロアクティブなアプローチを取っています。TPM である私の、プロジェクトを予定どおりに終わらせる最大のコツは、エンジニアリングの時間をある程度確保しておき、プロジェクトを開始する際に慎重に計画することです。

では、厳密にどれくらいリソースを確保しておくとよいでしょうか?私たちは、過去に発生した本番環境に関する問題を深く掘り下げ、リソースをどのように使ってきたかを調べました。この調査結果を踏まえ、SRE プロジェクトを計画する際は、本番環境作業のために作業時間の 25% を確保しておくことにしました。もちろんこの 25% というバッファの数字は組織によって異なりますが、重要なビジネスニーズを考慮したこの新しいアプローチは、プロジェクトをスケジュールどおりに進めながら、ビジネスの最優先事項である本番環境インシデントに SRE が集中することを可能にする、とても画期的なものでした。

重要ポイント

簡単に言うと、SRE プロジェクトの計画策定は、開発組織におけるプロジェクトの計画策定とは異なります。なぜなら、開発組織はプロジェクトに作業時間の大半を費やすからです。幸いなことに SRE のプログラム管理は、複雑な状況、特に大規模なプログラムへの対応に適しています。

リソースを確保する以外に、TPM SRE プロジェクトを計画する際に採用しているその他のベスト プラクティスや構成をいくつかご紹介します。

  • 重要なプログラムを成功させるためのスタッフを確保する

  • TPM がサービスの枠を越えて活動できるようにし、標準化されたソリューション間の相互作用を促進して、作業が重複しないようにする

  • サイト信頼性マネージャーと SRE に、早期に TPM とやり取りすることの価値について理解してもらい、サービスでより早く問題を提起できるようにすることを奨励する

  • TPM のスキルを活かして外部依存関係を管理し、エンジニアリング、インフラストラクチャ変更管理、技術インフラストラクチャなど、他のパートナー組織との連携を図る

  • 普段はプログラム管理をあまり必要としないサービスを、必要とされたときにカバーする

  • 一貫した業績評価を可能にし、TPM コミュニティにキャリア開発の機会をもたらす

SRE における TPM の役割は、SRE の使命を果たすための核となります。その使命とは、ワークフローをより高速で信頼性の高いものにし、Google のインフラストラクチャが継続的に成長できるよう備えることです。TPM は、料金、可用性、スケジュールなどの複数の可変要素を考慮しながら常に全体像を念頭に置き、システムやサービスを慎重に計画してデプロイする必要があります。TPM と関連する役割によるプロジェクト管理について詳しく知りたい方は、こちらのコースにご登録ください。また、以下のリソースもご確認ください。

  1. プログラム管理の実践

  2. 進化する SRE エンゲージメント モデル

  3. パート 3. 実践

-サイト信頼性エンジニアリング、テクニカル プログラム マネージャー Karan Anand

投稿先