SRE、DevOps、プラットフォームエンジニアリングは、今日のソフトウェア開発の世界における重要な概念です。この3つの領域ごとに、その管理を担当する専任チームが置かれ、各チームがソフトウェア開発の異なる側面に注力しながら、一連の業務を遂行し、パフォーマンス要件を測定するためのツールとメトリクスを使用しています。
この記事では、SRE、DevOps、プラットフォームエンジニアリングについて、類似点と相違点などを説明します。そして特に重要な点として、最新ソフトウェアの開発、デリバリー、保守に関するプロセスを効率化するうえで各チームが果たす役割について触れます。
サイトリライアビリティエンジニアリング(SRE)は、ソフトウェアシステムの信頼性の向上と維持に焦点を当てたプラクティスです。そのための手段として、SREではソフトウェアツールを使用し、アプリケーション監視や信頼性確保のためのタスクを自動化します。
グーグル社は2003年、大規模で複雑な自社のソフトウェアシステムの管理に関連する課題の解決策としてSREを実装しました。SREは、チームのコラボレーション、生産性、カスタマーエクスペリエンスを向上させ、大きなメリットをもたらします。SREチームの業務には次のようなものがあります。
SREチームは、ライフサイクル全体を通じて開発チームと緊密に連携し、ソフトウェアパイプラインや自動化されたジョブのバグを修正するなど、基盤システムに関連する問題を解決します。また、定型的なタスクを自動化して、開発者が生産性を高められるよう支援します。
多くの方にとって、DevOpsは組織における大きなカルチャーシフトの象徴なのではないでしょうか。従来、開発チームと運用チームは別々に機能していましたが、このようなサイロ化されたカルチャーは、ソフトウェアの品質の低下やソフトウェアデリバリーの遅延といった問題をたびたび引き起こしていました。DevOpsは、2つのチームのタスクを統合することで、開発チームと運用チームがサイロ化された状況を打破します。
DevOpsチームは、ソフトウェア開発プロセスの自動化と効率化に協力して取り組みます。また、コラボレーション、コミュニケーション、ソフトウェアデリバリーの速度と品質を向上させることで、チームに大きなメリットをもたらします。DevOpsエンジニアの業務には次のようなものがあります。
プラットフォームエンジニアリングは、クラウドネイティブ時代となった今、一躍注目されている手法です。プラットフォームエンジニアリングが目指すのは、ソフトウェア開発ライフサイクル全体の運用ニーズをカバーするツールチェーンとワークフローを構築し、インフラ機能のセルフサービス化を実現することです。
プラットフォームエンジニアとプラットフォームエンジニアリングチームは、ビルドツール、バージョン管理システム、テストフレームワークの自動化などの開発に注力します。また、CI/CD、アラート、デプロイのワークフローなど、一部のワークフローの構築にも携わります。こうした取り組みによって、ソフトウェア開発者はソフトウェアをより効率的に構築、デリバリーできるようになります。プラットフォームエンジニアの業務には次のようなものがあります。
SREとDevOpsのプラクティスが十分に浸透していないために生じている問題を解決すること、それがプラットフォームエンジニアリングの目的であるといってよいでしょう。
ここまで、この3つの概念について簡単に説明してきました。SREとDevOpsはもともと対照的な考え方ではありません。一方、プラットフォームエンジニアリングは、SREとDevOpsでよく見られる課題や不十分な実装による問題に対処するために生まれました。
ここからは、これらの概念についてもう少し詳しく見ていきます。
SREとDevOpsの類似点は何でしょうか?SREチームとDevOpsチームには共通点が多くあります。
その一方で、SREとDevOpsには次のような非常に明確な違いがあります。
両者の間には、もちろん大きな違いもいくつかあります。そのひとつは、焦点の幅広さの違いです。DevOpsがソフトウェアの開発プロセス全体に焦点を当てているのに対し、SREはシステムの信頼性とスケーラビリティにのみ焦点を当てています。システムの信頼性は多くの異なる領域に影響を与える可能性があるため、焦点の範囲が絞られているとはいえ、SREは実際には大きな役割を果たします。
DevOpsは、開発チームと運用チームのサイロ化を解消し、協力的でサイロのないカルチャーを築きます。他方、SREの主な焦点は、信頼性と説明責任のカルチャーを確立することにあります。
DevOpsチームは、ソフトウェア開発やテストの自動化、プロアクティブな監視といったタスクを通じて、インシデントの発生を未然に防ぐことを重視します。一方、SREチームは、インシデントの根本原因を調査し、再発を防ぐための対策の実施に軸足を置きます。
DevOpsチームはデプロイの頻度、変更のリードタイム、平均解決時間(MTTR)、変更の失敗率などのDORAメトリクスを重視します。対照的に、SREチームはレイテンシー、トラフィック、アップタイム、エラー率、サービスレベル契約(SLA)などのメトリクスに重点を置きます。
プラットフォームエンジニアリングはDevOpsエンジニアリングの進化形であると主張する向きもありますが、両者は何よりも主な焦点が異なっており、日々のタスクを実行するために使用するツールも違います。
DevOpsチームは、タスクの自動化、コミュニケーション、コラボレーションを通じて、アプリケーションの技術的な機能をできるだけ早く高い品質でデリバリーすることを優先します。一方、プラットフォームエンジニアリングチームは、開発チームの運用ニーズを把握し、そうしたニーズに円滑に応えるためのプラットフォーム、ツールチェーン、ワークフローを構築することに重点を置いています。つまり、プラットフォームエンジニアリングでは開発そのものではなく、ソフトウェア開発に使うプラットフォームを構築して保守することに注力します。
DevOpsツールは、ソフトウェアの開発、デプロイ、管理を効率化しながら、監視とアラートを自動化するのに役立ちます。例としては、Jenkins、GitLabなどの継続的インテグレーションと継続的デリバリー(CI/CD)ツールや、Slack、JIRAといったコラボレーションおよびコミュニケーションのためのツールなどがあります。対して、プラットフォームエンジニアリングツールは、インフラリソースのプロビジョニング、デプロイ、管理を自動化します。たとえば、Kubernetes、Terraform、Ansible、AWS CodePipeline、gitStreamなどが挙げられます。
SREとプラットフォームエンジニアリングには、次のような類似点があります。
次に、違いについて見てみましょう。
SREチームは、監視、トラブルシューティング、インシデント対応などのタスクを通じて、主にシステムの信頼性とスケーラビリティに焦点を合わせています。一方、プラットフォームエンジニアリングチームは、ソフトウェア開発に必要なツールチェーンとワークフローの構築に優先的に取り組み、インフラ機能をセルフサービス化します。
SREチームは、New Relic、Prometheus、Grafanaなどの監視ツールやアラートツールと、PagerDutyなどのインシデント管理ツールを多用します。これに対し、プラットフォームエンジニアリングチームは、コンテナオーケストレーションツール、Crossplaneなどのインフラ管理ツール、インフラプロビジョニングツールといった、インフラツールの管理を担当します。
SREチームは、レイテンシー、トラフィック、アップタイム、エラー率に関連するメトリクスの監視に注力し、システムの信頼性と可用性の確保に努めます。対照的に、プラットフォームエンジニアリングチームは次のようなメトリクスを測定します。
これらの業務には、果たすべき独自の責任がそれぞれあるものの、確かに作業には重複するところがあります。ソフトウェアの開発やデリバリーをスムーズに進め、本番システムを問題なく稼動させるために現在では、SRE、DevOps、プラットフォームエンジニアリングはいずれも相互に関連するようになっています。
これら3つの職務ではいずれも、開発者、運用チーム、ステークホルダー間の緊密なコラボレーションとコミュニケーションを促進し、相互のニーズに対応することで、全員がビジネス要件、目標、問題について認識を合わせられるようにします。
現在のペースの速いソフトウェア開発環境では、よりスムーズな開発とデプロイ、本番システムの改善のためのさまざまな要件を満たすために、SREチーム、DevOpsチーム、プラットフォームエンジニアリングチーム間のコラボレーションが求められます。SREチームの主な焦点はソフトウェアシステムの信頼性の向上にあるのに対し、DevOpsチームは運用チームとの緊密なコラボレーションを通じてソフトウェアの開発とデプロイを効率化します。
他方、プラットフォームエンジニアリングチームは、開発チームに必要なツールチェーンとワークフローを提供することで、インフラを円滑に利用できるようにします。自動化と監視は、3つの職務すべてに共通するタスクであり、使用するツールも似ています。
したがって、3者の役割は明確に分かれているものの、その責任は状況によって重複する、といえるでしょう。
このブログはこちらの英語ブログの翻訳です。
この記事について誤りがある場合やご提案がございましたら、ssg-blogs@splunk.comまでメールでお知らせください。
この記事は必ずしもSplunkの姿勢、戦略、見解を代弁するものではなく、いただいたご連絡に必ず返信をさせていただくものではございません。
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。