ホーム
Topics
SRE(サイト・リライアビリティ・エンジニアリング)とは
サイト信頼性エンジニアリング(SRE)では、ソフトウェア・エンジニアリングを使用することで、他の方法ではシステム管理者(sysadmins)が手動で行っているIT運用作業(実動システム管理、変更管理、インシデント対応、緊急対応など)を自動化します。
SREの背後にある原則は、ソフトウェア・コードを使用して大規模なソフトウェア・システム監視を自動化することが、手動操作による介入よりも拡張性が高く持続可能な戦略であるということです(特に、このようなシステムがクラウドに拡張または移行される場合)。
SREはまた、新規ソフトウェアや更新を継続的に実動へリリースしたい開発チームと、動作の停止やその他運用上の問題が絶対に起こらないという確信がない限りはどんなタイプの更新や新規ソフトウェアもリリースしたくない運用チームとの間に、当然起こりうる軋轢の大部分を減らす、あるいはなくすことも可能です。結果として、DevOpsに絶対に必要というわけではありませんが、SREはDevOps原則に密接に合致し、DevOpsの成功において重要な役割を担います。
SREという概念は、GoogleのVPoEであるBen Treynor Sloss氏によるもので、「SREは、ソフトウェア・エンジニアに運用チームの設計を依頼した時にできあがるものです。(SRE is what happens when you ask a software engineer to design an operations team.)」という説明がよく知られています。
サイト信頼性エンジニアは、IT 運用の経験を持つソフトウェア開発者で、コーディングに関する知識を持ち、大規模なIT環境で「ダウンタイムなく稼働させる」方法を理解している人物です。
サイト信頼性エンジニアは、ログ分析、パフォーマンス・チューニング、パッチ適用、本番環境のテスト、インシデントへの対応、事後検証など、手動のIT運用とシステム管理タスクの実行に時間の半分を費やし、残りの時間で、それらのタスクを自動化するコードを開発しています。このチームは、前者に費やす時間を減らし、後者に費やす時間を増やしたいと考えています。
その理由は、SREチームは開発チームと運用チームの間の橋渡しとして機能し、開発チームが新しいソフトウェアや新機能をできるだけ早く本番環境に導入できるようにすることを目的としているためです。これを実行すると同時に、組織が顧客と締結したサービス・レベル契約(SLA)に従い、IT運用のパフォーマンスとエラー・リスクが合意された許容範囲内となるようにしています。SREチームは、豊富な経験と運用データに基づいて、開発チームと運用チームが以下を開発または確立できるようにサポートしています。
エラー・バジェットは、サイト信頼性エンジニアリング・チームが企業のイノベーションのペースとサービスの信頼性を自動的に調整するために使用する実用的なツールです。
例えば、ある会社のSLAが年間99.99%の稼働率(一般的な可用性目標)を義務付けているとします。つまり、月間エラー・バジェット(特定の月において契約上の義務を違反せず許容されるダウンタイムの合計時間)は約4分23秒になります。
ここで、開発チームがいくつかの新しい主要機能やシステムの改善を展開したいとします。システムがエラー・バジェット内で動作している場合、チームは新しい機能をリリースできますが、そうでない場合、チームは運用チームと協力してこれらのエラーや停止を許容レベルまで改善するまで、新しい機能を投入することはできません。
このように、エラー・バジェットは、開発チームと運用チームが以下の行動をするよう働きかけます。
DevOpsは、ソフトウェア配信ライフサイクルを自動化し、開発チームと運用チームに責任を共有させ、お互いの作業に役立つインプットを増やすことで、より高品質のアプリケーションをより迅速に提供できるようにする最新の方法です。
SREと同様、DevOpsは、より多くのアプリケーションと変更をより迅速にリリースする必要性と、本番環境の「停止」を回避する必要性のバランスをとることで、ビジネス・アジリティーを高めます。また、サイト信頼性エンジニアリングと同様、DevOpsの許容可能なエラー・リスクを明確にすることで、このバランスの均衡を保つようにします。実際、サイト信頼性エンジニアリングとDevOpsは非常に似ているため、これらを同じものだと主張する専門家もいますが、ほとんどの専門家は、サイト信頼性エンジニアリングがDevOps原則を実行する優れた方法だと考えています。例:
DevOpsの原則:ツールとオートメーションを活用して組織のサイロ化を排除します。
SREの実践:開発者がソフトウェアの開発と改善に使用するのと同じツールを使用して、運用を自動化および改善します。
DevOpsの原則:失敗を正常なものとして受け入れ、段階的に変更を適用します。
SREの実践:エラー・バジェットに基づき、許容レベル内で新機能を継続的にデプロイします。
DevOpsの原則:すべてを測定します。
SREの実践:SLAに記載されるメトリクスに基づき、新しいソフトウェアをリリースするかどうかを決定します。
サイト信頼性エンジニアリングはDevOpsの成功をサポートするだけではなく、企業が次のことを行えるようにします。
平均的なエンタープライズが毎年、運用データを2倍から3倍生成している主な理由の1つには、従来のITおよびオンプレミスのデータ・センターからハイブリッドクラウド環境へのマイグレーションがあります。SREは次第に、このデータを活用して、システムの管理、運用、およびインシデント対応を自動化するために、またIT環境がより複雑になっても企業の信頼性を向上させるために重要なものと見なされるようになってきています。
クラウドネイティブ開発手法(特にマイクロサービスとしてのアプリケーションの構築およびコンテナへのデプロイ)により、アプリケーションの開発、デプロイメント、および拡張性を簡素化することができます。ただし、クラウドネイティブ開発は、管理、運用、およびマネジメントを複雑化し、ますます分散された環境を作り上げることにもなります。SREチームは、クラウドネイティブ手法によって可能になる急速なイノベーションをサポートでき、またこれ以上の運用上のプレッシャーをDevOpsチームに与えることなく、システム信頼性を保証し、向上させます。
また、重要なアクションをリアルタイムかつ人間の介入なしで継続的に自動化し、スタックのあらゆる層でコンピューティング、ストレージ、ネットワークのリソースを最も効率的な形でアプリケーションに事前に割り振ります。
アプリケーションのパフォーマンス監視を強化して、誤動作をより迅速に解決するために必要なコンテキストを提供します。
IBM Consulting Platform Engineering Servicesは、開発者によるインフラストラクチャー・オートメーションのセルフサービスを可能にすることで、ソフトウェア配信チームの生産性を向上させます。
AIとオートメーションをIT運用に適用することで、SREが企業向けアプリケーションの回復力と堅牢性を確保しながら、従業員の貴重な時間をイノベーションにより多く費やせるようサポートする方法について説明します。
IBMのプロフェッショナル向けトレーニングと認定資格を取得して、SREスキルを高めましょう。IBM Cloud環境とツールに関する知識を習得し、バーチャル・ラボで演習を行っていきます。
DevOps は、ソフトウェア開発チームと IT 運用チームの作業を組み合わせて自動化することで、高品質のソフトウェアの提供を迅速化します。
クラウドネイティブ・アプリケーションはマイクロサービスで構成され、コンテナにパッケージ化された上でデプロイされ、あらゆるクラウド環境で実行できるように設計されています。
Kubernetesは、アプリケーションのデプロイ、管理、拡張を自動化するオープンソースのコンテナ・オーケストレーション・プラットフォームです。