SREとは、ソフトウェアエンジニアに運用チームの設計を依頼したときに起こること

SRE誕生の経緯

歴史的に、企業は複雑なコンピューティング システムを実行するためにシステム管理者を雇用してきました。 シスアドとも呼ばれるこの役職は、サービスを運用し、イベントが発生したり、イベントに応じてアップデートが必要になるたびに対処します。

システム管理者の役割には、製品の開発者に求められるスキル セットとは著しく異なるスキル セットが求められるため、開発者とシステム管理者は「開発」と「運用」または「ops」という別々のチームに分割されている状態です。

しかし、この開発者とシステム管理者という役割分担は、大きな問題があります。

一つは、システム管理者は手作業が中心となっていたため、システムが大きくなるにつれて、必要となる人数も増えていたということです。 もう一つは、開発者とシステム管理者の間に発生する心理的/技術的な溝です。

  • 開発者は「いつでも、支障なく何でもリリースしたい」という要求を持っています
  • システム管理者は「「いったんシステムが機能したら、絶対に何も変更したくない」という要求を持っています

ほとんどの障害は、新しい構成、新機能のリリース、新しいタイプのユーザー トラフィックなど、何らかの変更によって発生するため、2 つのチームの目標は根本的に対立してしまうのです。

Googleはどのようにこの問題に対応したのか?

SRE とは、ソフトウェアエンジニアに運用チームの設計を依頼したときに起こることです。

GOogleの運用チームは、以下の割合で構成されていました。

  • 50~60% は Google ソフトウェア エンジニア、より正確には Google ソフトウェア エンジニアの標準手順で採用された人々です。
  • 40~50% は、Google ソフトウェア エンジニアリングの資格 (必要なスキル セットの 85~99%) に非常に近い候補者であり、さらにSRE には役立つもののほとんどのソフトウェア エンジニアには珍しい技術スキル セットも持っています。(UNIXシステムの内部とネットワークの詳細)

SRE に共通するのは、複雑な問題を解決するソフトウェア システムを開発するという信念と適性です。

SRE の採用に対する当社のアプローチの結果、(a) 手作業でタスクを実行することにすぐに飽きてしまい、(b) 複雑なソリューションであっても、以前の手作業に代わるソフトウェアを作成するために必要なスキルセットを持つ人々で構成されるチームが誕生しました。

SREは何をしているのか?

  • すべての SRE の「運用」作業 (チケット、オンコール、手動タスクなど) の合計に 50% の上限を設けています。この上限により、SRE チームはサービスを安定して運用可能にするのに十分な時間をスケジュールに確保できます。
  • SRE チームは残りの 50% の時間を実際の開発に費やす必要があります。

このように、SREチームは運用作業を実行しつつ、運用を自動化するための開発を行うことで、サービスが拡大した場合でも人数を増やさずに対応ができるのです。

参考 : https://sre.google/sre-book/table-of-contents/

page:https://minegishirei.hatenablog.com/entry/2025/01/06/075315