SREって大規模な組織の話?開発と運用をチームにするメリットとは?
システム運用に関する話題の中でもたびたび目にする機会が増えてきた「SRE」。これは、「サイトリライアビリティエンジニアリング Site Reliability Engineering」という、Googleが自社で蓄積してきた経験を元に提唱し、実践している、システム運用の新しい概念です。
Reliability とは「信頼性」。SREの考え方を一言でまとめると、「ITシステムの信頼性を維持するために、ソフトウェアエンジニアリングの考え方で、チームとしてシステム運用を設計すること」です。
Google – Site Reliability Engineering
https://landing.google.com/sre/book/chapters/introduction.html
『SRE サイトリライアビリティエンジニアリング―Googleの信頼性を支えるエンジニアリングチーム』(オライリー・ジャパン刊)
https://www.oreilly.co.jp/books/9784873117911/
そもそも、システム運用と開発は同じ流れ
ITシステムは、開発して完成ではなく、そこが本格的なスタートだともいえます。まず、システムを稼働させるためのサーバやネットワークなどのインフラを準備し、環境を設定する必要があります。ソフトウェアが安定して稼働するための設定をし、処理に負荷が掛かっていないか、障害が発生しないかを監視します。プログラムに不具合や更新があれば、タイミングを見てそれを反映させます。ユーザがストレスなく使うには、データのバックアップやセキュリティ対策も不可欠です。障害が発生した場合には、サーバやネットワーク、アプリケーションなど、どこに問題があるのか、発生箇所と原因を突き止め、応急処置や根本的な対策を取る必要があります。
つまり、「ソフトウェアエンジニアの考え方をベースに、システム運用を設計する」SREの考え方は、システム開発から運用までを、同じ一連の流れの中で捉えるということに他なりません。
一般的なシステム運用のデメリット
一般的なITシステム運用では、オンプレミスやクラウドなど、システムが大型化・複雑化すればするほど、作業量も増加し、その内容も複雑になっていきます。自動化できる範囲が限られていれば、人が手作業で処理しなければならない業務も増え、必然的に人的エラーも起きやすくなります。また、システムを利用するユーザが増えれば、利用頻度やニーズも増え、機能追加や変更に伴って、障害が発生するリスクも上がります。結果として、開発エンジニアや、運用管理担当者も増やす必要が出てきます。
そもそも、開発と運用とでは、志向する方向が正反対です。開発は、ユーザの要望を実現したり、新しい技術トレンドに合わせながら、サービスをリリースしたりアップデートを繰り返していきます。一方、運用は、システムを安定して稼働させ続けるために、変更や更新はできる限り減らしたいと考えます。そのため、利害や目標が対立してしまうこともあります。
<PR>ITシステムは多様化する一方で、システム運用業務の負担も段々と大きくなってませんか?SaaS型の統合運用管理サービス「UOM」は、費用対効果の高さにも自信あり!詳しくはこちらへ
デメリットを、SREでどう解決できるか?
では、一般的なシステム運用のデメリットを解消できるSREとは、どのような点が新しく、どうやって解決しているのでしょうか?まず、SREでは、エンジニアリングの手法で、システム運用に関する作業を可能な限り自動化します。自動化することによって、特定の人に依存する属人性を排し、人為的なミスを回避できます。また、限られた人的リソースを最適化することで、多様化・複雑化するシステムへも柔軟に対応できます。
また、SREでは、運用時に発生するエラーを「予算を消費してしまうコスト」として捉えています。発生したエラーは、「エラーバジェット(エラー予算)」として管理され、エラーが発生するたびに予算から減額されていきます。予算が枯渇しそうになると、システム全体の安定稼働という共通の目的のために、次の新しいリリースよりもエラー対策や運用が優先されます。
このように、SREは一般的なシステム運用を否定したり、完全に置き換える新しい概念ではなく、今までのスタイルでは対応できなかった問題を解決するための、一歩進んだ考え方といえます。
SREを取り入れるメリットとは?
SREについてはいろいろな意見があるでしょう。『Googleのような世界的巨大企業の真似をしても無駄』、『理想的ではあるが、開発と運用の間に見えない壁がある我が社では、きっと無理』、『具体的に、何からやればいいのか?』、『以前やってはみたが、十分な効率化・自動化につながらなかった』などの声も聞かれます。
そもそも、SREの考え方を取り入れ、実践することで得られるメリットやデメリットは、現場ごとに異なるはずです。ソフトウェアエンジニアの考え方で運用を設計するSREは、組織やチームの大小とは関係しません。禅問答のようですが、『メリットはあるか?』『何がメリットか?』という問いの答えは、『そもそも、何をメリットとするのか?』次第です。
中途半端な合意形成の元で新しいことを始めるのは、大きなリスクが伴います。それが目に見えない「概念」や「考え方」の場合は、さらに丁寧なコミュニケーションが不可欠です。もちろん、ここにもコストが発生します。開発と運用の間に限らず、プロジェクト全体にメリットをもたらすには、どうしたらいいか?自分の会社やチームが、SREという考え方を導入するにあたり、何をゴールとして設定するべきか?得られる具体的なメリット・デメリットはどのようなものがあるか?組織内で十分に理解や意識を共有することが非常に重要です。
<PR>開発と運用が相互協力するSREは、理想の環境。それを実現するには、多様化したシステム運用の効率化が不可欠です。プロが開発した「UOM」は、費用対効果の高いSaaS型の統合運用管理サービスです。詳しくはこちらへ