近年、SRE(サイトリライアビリティエンジニアリング)という職種が注目を集め、多くの企業がSREチームを編成しています。しかし、一部の企業ではSREと従来のインフラエンジニアとの違いが明確でなく、SREの真価が発揮されていないケースも見受けられます。1、SREとインフラエンジニアの主な違いSREとインフラエンジニアでは、業務範囲も必要なスキルも異なります。本章では業務範囲とスキルの観点から、SREとインフラエンジニアの違いを解説いたします。(1)業務範囲SREとインフラエンジニアは、ITインフラの設計・構築・運用を担当する職種ですが、業務範囲と責任の範囲に違いがあります。インフラエンジニアは、ITインフラの設計・構築・運用に特化しており、アプリケーションの開発や運用には関与しません。一方、SREは、Webサービスやアプリケーションの信頼性向上に従事し、アプリケーションの開発や運用にも責任を負います。具体的には、インフラエンジニアは、アプリケーションが安定動作する環境を整えることに専念します。SREの場合は、アプリケーションの信頼性向上を目指し、インフラの設計・構築・運用に加えて、アプリケーションの開発・運用、障害対応、運用プロセスの改善など多岐にわたる活動を行うことが特徴です。(2)スキルSREとインフラエンジニアは、どちらもITインフラの設計・構築・運用を担当しますが、求められるスキルにも違いがあります。インフラエンジニアは、特にITインフラに関する知識や技術力が必要です。具体的には、サーバー、ネットワーク、ストレージなどの物理的なインフラや、仮想化技術、クラウドサービスなどのソフトウェア的なインフラに関する知識や技術力が求められます。一方、SREは、アプリケーションの信頼性を高める活動全般を担当するため、インフラエンジニアと同様にITインフラに関する知識や技術力はもちろん必要です。加えて、SREはアプリケーションの開発や運用にも責任を持つため、アプリケーション開発に関する知識やスキルも求められます。具体的には、アプリケーションの知識、アプリケーションの開発・運用のスキル、障害対応のスキル、運用プロセスの改善のスキルなどが必要です。SREは、「深さ」だけでなく「広さ」の技術も求められます。これは、SREがインフラエンジニアとアプリケーションエンジニアの両方の知識やスキルを必要とする職種であるためです。2、SREの主な業務内容とは本章ではSREの業務について、メインとなる3つを取り上げて解説いたします。(1)システムの自動化SREは、システムの信頼性を高めるための活動全般を担当する職種です。その中で、システムの自動化はSREの重要な業務の一つです。システムの自動化により、チームの手作業を軽減し、開発・運用効率の向上が期待されます。具体的には、ログの収集・分析、監視、運用プロセスの実行、障害対応などの業務の自動化に取り組みます。システムの自動化により、手作業によるミスの防止、業務の効率化、新たな業務・コア業務のリソース担保などの効果があるでしょう。ただし、システムの自動化を実施する際には、自動化に伴うリスクを検討し、自動化の維持・管理体制を整えることが必要です。(2)障害対応とその後SREは、システムの信頼性向上において、障害対応が迅速かつ適切に行われるようにする必要があるため、障害の原因調査や復旧計画策定、復旧作業のスキルを習得する必要があります。また、SREは障害の再発を防ぐ役割も担うため、障害の原因分析を実施し、その根本的な解決策を見つけることが必要です。「障害が発生したら対応する」だけでなく、障害対応を通じて「システムの信頼性向上」と「システム利用者の利便性向上」に貢献するのもSREの仕事です。(3)システム・クラウドの運用SREは、システムやAWSなどのクラウドインフラを安定して稼働させるための活動が必須です。下記、システムやクラウドの運用における重要な責務です。監視システムの稼働状況やパフォーマンスを定期的に監視し、問題を早期に発見します。障害対応障害が発生した場合、即座に対処してシステムを復旧させます。パフォーマンス向上システムのパフォーマンスを最適化し、安定して稼働させるための改善を行います。セキュリティ対策セキュリティの脅威からシステムやクラウドを保護するための対策を実施します。信頼性を高めるために、システム・クラウドの運用を適切に行うことが求められるため、「監視」「障害対応」「パフォーマンス向上」「セキュリティ対策」などのスキルを身につける必要があります。3、SREに求められるスキルや知識SREに求められる主なスキルや知識を4つ紹介します。(1)クラウドインフラの構築・運用スキル昨今、AWSやGCP、Azureといったクラウドインフラが普及してきました。その背景もあり、現在SREはクラウドインフラ環境を設計し、構築するスキルです。SREは、クラウドインフラの特徴やメリットを理解し、自社のシステムに適したクラウド環境を構築・運用する必要があります。クラウドに関して具体的には、以下のようなスキルが求められます。・基礎知識(IaaS、PaaS、SaaS)・構築手法(オンプレミスからクラウドへの移行、クラウドネイティブのアプリケーション開発など)・運用手法(監視、障害対応、パフォーマンス向上、セキュリティ対策)・自動化技術(IaC、CI/CD)これらのスキルを身につけることで、クラウド環境を安定して稼働させ、システムの信頼性を高めることができます。(2)Webアプリケーションの開発・運用スキルWebアプリケーションの開発は、Webブラウザで利用できるアプリケーションを構築するスキルです。SREは、Webアプリケーションの設計、開発、テスト、デプロイなどに関するスキルを習得する必要があります。また、Webアプリケーションの最新動向を常に把握し、最新の技術を必要に応じて活用する必要があります。一方、Webアプリケーションの運用は、Webアプリケーションを安定して稼働させる必要があるため、SREは、Webアプリケーションの監視、障害対応、パフォーマンス向上、セキュリティ対策などに関するスキルを身につけることも必要です。また、Webアプリケーションの運用を自動化するための技術も重要になります。具体的には、以下のようなWebアプリケーションのスキルが求められます。・基礎知識(HTML、CSS、JavaScript、サーバーサイド言語など)・開発手法(アジャイル開発、DevOpsなど)・運用手法(監視、障害対応、パフォーマンス向上、セキュリティ対策)・自動化技術(CI/CD)これらのスキルを身につけることで、Webアプリケーションを安定して稼働させ、システムの信頼性を高めることができます。(3)セキュリティに関する知識セキュリティとは、悪意のある第三者による侵入や不正アクセス、情報漏洩などの脅威からシステムを守るための対策です。SREは、セキュリティの基礎知識を身につけ、システムのセキュリティを高めるための活動を行う必要があります。具体的には、以下のようなセキュリティの知識が求められます。・基本概念(脆弱性、脅威、リスク、対策)・対策の種類(暗号化、認証、アクセス制御、侵入検知、ログ管理など)・監視の重要性・セキュリティインシデントの対応これらの知識を身につけることで、システムのセキュリティを高めることができるので信頼性向上に大きく寄与します。(4)ネットワークに関する知識ネットワークとは、コンピューターやネットワーク機器を相互に接続する仕組みです。SREは、ネットワークの基礎知識を身につけ、システムのネットワーク構成を理解し、ネットワーク障害の原因を特定し、適切な対策を講じる必要があります。具体的には、以下のようなネットワークの知識が求められます。・基本概念(ネットワークの種類、ネットワーク機器、ネットワークプロトコルなど)・構成(LAN、WAN、インターネットなど)・障害の原因(ハードウェアの故障、ソフトウェアの不具合、ネットワークの輻輳など)・障害への対策(冗長化、監視、自動復旧など)これらの知識を身につけることで、システムのネットワークを安定的に稼働させ、システムの信頼性を高めることができます。4、インフラエンジニアからSREエンジニアを目指すにはインフラエンジニアからSREエンジニアになるために必要なスキルは、「3.SREに求められるスキルや知識」で解説した通りとなります。本章では、開発チームとの対立を解消する目的で使われる必要な要素を3つ紹介します。SLI計測で現状把握と指標の設定クライアント視点での指標の設定(SLO)変更速度の最大化(1)SLI計測で現状把握と指標の設定SREとしてのステップアップの第一歩は、サービス品質を客観的に評価できる指標であるService Level Indicators(SLI)の計測です。SLIは、サービスの健全性を示す指標であり、サービスがクライアントや利用者にとってどれだけ信頼性があるかを測定します。これは、システムの稼働率、応答時間、エラー率などの具体的なパフォーマンスメトリクスを監視し、計測することで算出します。(2)クライアント視点での指標の設定(SLO)SREとしての次のステップは、Service Level Objectives(SLO)の設定です。SLOは、サービス品質に対する具体的な目標や基準を定めたもので、これを達成することがサービスの信頼性向上に繋がります。重要なポイントは、SLOを顧客の視点から設定することで、顧客がどのようなサービス品質を期待しているかを理解し、それに合致するSLOを設定します。(3)SLO範囲内で変更速度の効率化SREは高いサービス信頼性を維持しながら、新しい機能や変更を迅速に導入することも求められます。そのため、SLOの範囲内で変更速度を最大化することが重要で、変更管理プロセスを最適化し、バージョン管理やテスト戦略を、安全で効率的に変更できるような仕組みを導入する必要があります。まとめ肩書はインフラエンジニアだけど、実際SREの業務範囲をになっている方もも少なくありません。SREは、システムの信頼性向上に焦点を当てつつ、自動化、障害対応、運用などのスキルを必要とします。