SREs vs DevOps – SREとDevOpsの違いとは

SREとは

Google で生まれ、他の企業にも広まりつつある Site Reliability Engineering(SRE)とは、サイト・リライアビリティ・エンジニアリング」の頭文字を取った略称で、Webサイトやサービスの信頼性向上に向けた取り組みを行い、価値の向上を進める考え方および方法論です。

SREの基本

次の 3 つは SRE の基本原則ですが、本番システムに対して責任を負うチームであれば、名前がどうであれ、SRE チームを作る前から、あるいは SRE チームへの転換と並行して、広く採用しているプラクティスでもあります。

  • 何らかのサービス レベル目標(SLO)を決め(開発、事業部門の一部でない場合は、これらの部門のメンバーと共同で)、ほぼ毎月目標を達成していること。
  • 非難を伴わない障害報告書を記録するカルチャーがあること。
  • 本番環境におけるインシデントの管理プロセスが作られていること(これは全社的であることが望ましい)

DevOpsとは

DevOps(デブオプス[1])は、ソフトウェア開発手法の一つ。開発 (Development) と運用 (Operations) を組み合わせたかばん語であり、開発担当者と運用担当者が連携して協力する(さらに両担当者の境目もあいまいにする)開発手法をさす。[1]厳密な定義は存在しておらず、抽象的な概念に留まっている。[2]ソフトウェアのビルド、テスト、そしてリリースの文化と環境を以前よりも迅速に、頻繁に、確実に発生する確立を目指している(Wikipedia)


それらは具体的なプラクティスではなく思想・方針なのでプログラミングにおけるいわゆるinterfaceとも見なせます。

DevOpsが扱う5つの領域

  • Reduce organizational silos(組織のサイロを削減する)
  • Accept failure as normal(エラーが発生するのを前提とする)
  • Implement gradual change(段階的に変更する)
  • Leverage tooling and automation(ツールと自動化を活用する)
  • Measure everything(全てを計測する)

DevOpsとSREの違いは

そのような中でSREの草分け的存在であるGoogleが新たに class SRE implements DevOps というメッセージを発信し始めました。これは「SREはDevOpsというinterfaceの実装である」という意味で、いわゆるプログラミング言語の抽象化機能であるinterfaceを想像してもらえれば良いと思います。

SREの本

英語版は、オンラインで無料で公開されています。Google – Site Reliability Engineering
日本語版は、オライリー・ジャパンより出版されています。『SRE サイトリライアビリティエンジニアリング――Googleの信頼性を支えるエンジニアリングチーム