SRE、DevOps、プラットフォームエンジニアリングの違い

Observability Shanika Wickramasinghe

SRE、DevOps、プラットフォームエンジニアリングは、今日のソフトウェア開発の世界における重要な概念です。この3つの領域ごとに、その管理を担当する専任チームが置かれ、各チームがソフトウェア開発の異なる側面に注力しながら、一連の業務を遂行し、パフォーマンス要件を測定するためのツールとメトリクスを使用しています。

この記事では、SRE、DevOps、プラットフォームエンジニアリングについて、類似点と相違点などを説明します。そして特に重要な点として、最新ソフトウェアの開発、デリバリー、保守に関するプロセスを効率化するうえで各チームが果たす役割について触れます。

SREの概要

サイトリライアビリティエンジニアリング(SRE)は、ソフトウェアシステムの信頼性の向上と維持に焦点を当てたプラクティスです。そのための手段として、SREではソフトウェアツールを使用し、アプリケーション監視や信頼性確保のためのタスクを自動化します。

グーグル社は2003年、大規模で複雑な自社のソフトウェアシステムの管理に関連する課題の解決策としてSREを実装しました。SREは、チームのコラボレーション、生産性、カスタマーエクスペリエンスを向上させ、大きなメリットをもたらします。SREチームの業務には次のようなものがあります。

SREチームは、ライフサイクル全体を通じて開発チームと緊密に連携し、ソフトウェアパイプラインや自動化されたジョブのバグを修正するなど、基盤システムに関連する問題を解決します。また、定型的なタスクを自動化して、開発者が生産性を高められるよう支援します。

SREの概要

DevOpsの概要

多くの方にとって、DevOpsは組織における大きなカルチャーシフトの象徴なのではないでしょうか。従来、開発チームと運用チームは別々に機能していましたが、このようなサイロ化されたカルチャーは、ソフトウェアの品質の低下やソフトウェアデリバリーの遅延といった問題をたびたび引き起こしていました。DevOpsは、2つのチームのタスクを統合することで、開発チームと運用チームがサイロ化された状況を打破します。

DevOpsチームは、ソフトウェア開発プロセスの自動化と効率化に協力して取り組みます。また、コラボレーション、コミュニケーション、ソフトウェアデリバリーの速度と品質を向上させることで、チームに大きなメリットをもたらします。DevOpsエンジニアの業務には次のようなものがあります。

DevOpsの概要

プラットフォームエンジニアリングの概要

プラットフォームエンジニアリングは、クラウドネイティブ時代となった今、一躍注目されている手法です。プラットフォームエンジニアリングが目指すのは、ソフトウェア開発ライフサイクル全体の運用ニーズをカバーするツールチェーンとワークフローを構築し、インフラ機能のセルフサービス化を実現することです。

プラットフォームエンジニアとプラットフォームエンジニアリングチームは、ビルドツール、バージョン管理システム、テストフレームワークの自動化などの開発に注力します。また、CI/CD、アラート、デプロイのワークフローなど、一部のワークフローの構築にも携わります。こうした取り組みによって、ソフトウェア開発者はソフトウェアをより効率的に構築、デリバリーできるようになります。プラットフォームエンジニアの業務には次のようなものがあります。

SREとDevOpsのプラクティスが十分に浸透していないために生じている問題を解決すること、それがプラットフォームエンジニアリングの目的であるといってよいでしょう。

DevOps、SRE、プラットフォームエンジニアリングの違い

ここまで、この3つの概念について簡単に説明してきました。SREとDevOpsはもともと対照的な考え方ではありません。一方、プラットフォームエンジニアリングは、SREとDevOpsでよく見られる課題や不十分な実装による問題に対処するために生まれました。

ここからは、これらの概念についてもう少し詳しく見ていきます。

SREとDevOps:比較と違い

SREとDevOpsの類似点は何でしょうか?SREチームとDevOpsチームには共通点が多くあります。

DevOps自動化

その一方で、SREとDevOpsには次のような非常に明確な違いがあります。

主な焦点

両者の間には、もちろん大きな違いもいくつかあります。そのひとつは、焦点の幅広さの違いです。DevOpsがソフトウェアの開発プロセス全体に焦点を当てているのに対し、SREはシステムの信頼性とスケーラビリティにのみ焦点を当てています。システムの信頼性は多くの異なる領域に影響を与える可能性があるため、焦点の範囲が絞られているとはいえ、SREは実際には大きな役割を果たします。

作り出そうとしているカルチャー

DevOpsは、開発チームと運用チームのサイロ化を解消し、協力的でサイロのないカルチャーを築きます。他方、SREの主な焦点は、信頼性と説明責任のカルチャーを確立することにあります。

インシデント対応

DevOpsチームは、ソフトウェア開発やテストの自動化、プロアクティブな監視といったタスクを通じて、インシデントの発生を未然に防ぐことを重視します。一方、SREチームは、インシデントの根本原因を調査し、再発を防ぐための対策の実施に軸足を置きます。

メトリクス

DevOpsチームはデプロイの頻度、変更のリードタイム、平均解決時間(MTTR)、変更の失敗率などのDORAメトリクスを重視します。対照的に、SREチームはレイテンシー、トラフィック、アップタイム、エラー率、サービスレベル契約(SLA)などのメトリクスに重点を置きます。

メトリクス

DevOpsとプラットフォームエンジニアリング:類似点と相違点

プラットフォームエンジニアリングはDevOpsエンジニアリングの進化形であると主張する向きもありますが、両者は何よりも主な焦点が異なっており、日々のタスクを実行するために使用するツールも違います。

主な焦点

DevOpsチームは、タスクの自動化、コミュニケーション、コラボレーションを通じて、アプリケーションの技術的な機能をできるだけ早く高い品質でデリバリーすることを優先します。一方、プラットフォームエンジニアリングチームは、開発チームの運用ニーズを把握し、そうしたニーズに円滑に応えるためのプラットフォーム、ツールチェーン、ワークフローを構築することに重点を置いています。つまり、プラットフォームエンジニアリングでは開発そのものではなく、ソフトウェア開発に使うプラットフォームを構築して保守することに注力します。

ツール

DevOpsツールは、ソフトウェアの開発、デプロイ、管理を効率化しながら、監視とアラートを自動化するのに役立ちます。例としては、Jenkins、GitLabなどの継続的インテグレーションと継続的デリバリー(CI/CD)ツールや、Slack、JIRAといったコラボレーションおよびコミュニケーションのためのツールなどがあります。対して、プラットフォームエンジニアリングツールは、インフラリソースのプロビジョニング、デプロイ、管理を自動化します。たとえば、Kubernetes、Terraform、Ansible、AWS CodePipeline、gitStreamなどが挙げられます。

SREとプラットフォームエンジニアリングの比較

SREとプラットフォームエンジニアリングには、次のような類似点があります。

次に、違いについて見てみましょう。

主な焦点

SREチームは、監視、トラブルシューティング、インシデント対応などのタスクを通じて、主にシステムの信頼性とスケーラビリティに焦点を合わせています。一方、プラットフォームエンジニアリングチームは、ソフトウェア開発に必要なツールチェーンとワークフローの構築に優先的に取り組み、インフラ機能をセルフサービス化します。

ツール

SREチームは、New Relic、Prometheus、Grafanaなどの監視ツールやアラートツールと、PagerDutyなどのインシデント管理ツールを多用します。これに対し、プラットフォームエンジニアリングチームは、コンテナオーケストレーションツール、Crossplaneなどのインフラ管理ツール、インフラプロビジョニングツールといった、インフラツールの管理を担当します。

メトリクス

SREチームは、レイテンシー、トラフィック、アップタイム、エラー率に関連するメトリクスの監視に注力し、システムの信頼性と可用性の確保に努めます。対照的に、プラットフォームエンジニアリングチームは次のようなメトリクスを測定します。

SRE、DevOps、プラットフォームエンジニアリングの連携

これらの業務には、果たすべき独自の責任がそれぞれあるものの、確かに作業には重複するところがあります。ソフトウェアの開発やデリバリーをスムーズに進め、本番システムを問題なく稼動させるために現在では、SRE、DevOps、プラットフォームエンジニアリングはいずれも相互に関連するようになっています。

これら3つの職務ではいずれも、開発者、運用チーム、ステークホルダー間の緊密なコラボレーションとコミュニケーションを促進し、相互のニーズに対応することで、全員がビジネス要件、目標、問題について認識を合わせられるようにします。

まとめ

現在のペースの速いソフトウェア開発環境では、よりスムーズな開発とデプロイ、本番システムの改善のためのさまざまな要件を満たすために、SREチーム、DevOpsチーム、プラットフォームエンジニアリングチーム間のコラボレーションが求められます。SREチームの主な焦点はソフトウェアシステムの信頼性の向上にあるのに対し、DevOpsチームは運用チームとの緊密なコラボレーションを通じてソフトウェアの開発とデプロイを効率化します。

他方、プラットフォームエンジニアリングチームは、開発チームに必要なツールチェーンとワークフローを提供することで、インフラを円滑に利用できるようにします。自動化と監視は、3つの職務すべてに共通するタスクであり、使用するツールも似ています。

したがって、3者の役割は明確に分かれているものの、その責任は状況によって重複する、といえるでしょう。

このブログはこちらの英語ブログの翻訳です。

関連記事

サイトリライアビリティエンジニア(SRE)の面接を準備する方法
オブザーバビリティ
5 分程度

サイトリライアビリティエンジニア(SRE)の面接を準備する方法

SREの面接に備えましょう。この記事では、サイトリライアビリティエンジニアの面接で予想される主要な質問と答え方について解説します。
Splunk Database Monitoringでデータベースパフォーマンスの問題をより迅速に解決
オブザーバビリティ
5 分程度

Splunk Database Monitoringでデータベースパフォーマンスの問題をより迅速に解決

Splunk Database Monitoringをご紹介します。Splunk Database Monitoringは、時間のかかる非効率なクエリーの検出と対処、アプリケーションの問題と特定のクエリーとの相関付けによる根本原因分析の迅速化、AIからの提案を活用した修復作業の効率化に役立ちます。
GigaOmレポートで明らかに:APMとオブザーバビリティのリーダーであり続けるSplunk
オブザーバビリティ
3 分程度

GigaOmレポートで明らかに:APMとオブザーバビリティのリーダーであり続けるSplunk

GigaOmレーダーで初となるアプリケーションパフォーマンス監視(APM)レポートの2021年版において、Splunkはリーダーおよびファストムーバー(Fast Movers)に選出されました。ファストムーバーに選ばれたのはSplunkのほかに1社のみです。