ビジネス/開発/運用のサイロ化を防ぐ、イノベーションと信頼性を両立させる
SREとは? Google Cloudがその基本を説明、JCBも導入/実践経験を紹介
グーグル・クラウド・ジャパン(Google Cloud)は2022年8月29日、グーグルが提唱する「SRE(Site Reliability Engineering、サイト信頼性エンジニアリング)」に関する記者説明会を開催した。グーグルからSREの基本な考え方が説明されたほか、ゲストとして実際にSREチームを組成しているジェーシービー(JCB)も出席し、SRE導入と実践の経験を紹介した。
SREとは? システム運用チームとSREチームとはどう違うのか?
グーグル シニアデベロッパーリレーションズ エンジニアの山口能迪氏はまず、SREとは「本番システムを信頼性高く開発/運用するための一連のプラクティスと心構え、および職務を指す」言葉だと説明する。現在のような変化の多い時代においては、頻繁なサービス開発/リリースや、ユーザーニーズの変動に応じた急なスケール変更などが求められる。ただし、それらはすべてサービスの信頼性に大きな影響を及ぼす。そこで、信頼性を確保しながら運用していくSREの考え方、取り組みが必要となっている。
上述したSREの定義に、運用だけでなく「開発」という言葉も含まれている点は非常に重要だ。
一般に、開発チーム側が新しい機能やサービスをなるべく早くリリースしたいと考える一方で、運用チーム側はリスクを嫌ってなるべくリリースのスピードを下げようと考える。それぞれ異なる動機(インセンティブ)を持つために協調的な働き方が難しく、チーム間の分断=サイロ化も生じてしまう。SREはこうした分断の“壁”を取り払うためにも重要であり、その考え方や取り組みは運用チームだけでなく開発チームでも(さらには開発チームに新製品開発を要求するビジネスチームでも)共有しておくべきものとなる。
チーム間のサイロ化、壁を解消することを目的として、ビジネスチーム/開発チーム間では「アジャイル」、また開発チーム/運用チーム間では「DevOps」という概念も提唱されてきた。山口氏は「DevOpsはグーグル社内でSREが提唱されたのと同時期に広まった」と述べ、両者の違いを「DevOpsはチーム間の壁を取り除くための文化的なプラクティス(経験則)やガイドライン、SREはそれを実践するための具体的な方法と職務」だと定義する。
SREでは意思決定にデータを活用し、運用をソフトウェアエンジニアリングの問題として扱う。そのため、ソフトウェア開発のスキルを持つ人材が携わり運用の自動化を進めること、システムそのものも開発完了後に改修するのではなく、初めから信頼性が高くなるように設計を行うことが必要となる。SREチームはこうした役割も担うことになる。
「簡単に言うと、SREチームはソフトウェアを書いて、システムをスケールして、信頼性が高く効果的なかたちで設計する、ということになる。したがって、SREチームには『人間(人材)』『哲学とマインドセット』『エンジニアリングの実践とツール』という3つすべてが必要になる」(山口氏)