SREエンジニアのSREとは「サイトリライアビリティエンジニアリング(Site Reliability Engineering)」の略称で、Googleが提唱する「システムの運用・管理方法とそれに対するエンジニアの役割」を指しています。
すなわちWebアプリケーションを最適に運用するためのエンジニアです。
実際にSREチームを設置してアプリケーション開発している企業も増えてきました。クラウドサービスが最早一般的になってきているからこそ、その役割は重要視され、ニーズも上昇し続けることは間違いないと言えるでしょう。
そこで今回はSREの仕事内容や役割、混同されやすいインフラエンジニアとの違いについて解説します。
■□■□プログラマーなどITエンジニアを目指しているならIT業界専門転職サイト「Javaキャリ」が最適!完全無料の会員登録はこちらから■□■□
Contents
SREエンジニアとは
SREとは、サイト・リライアビリティ・エンジニアの略称で、Googleが提唱するシステムの運用と管理方法とそれに対するエンジニアの役割を指します。SREの目的は、サービスやプロダクトの信頼性の向上です。
システム運用作業をエンジニアリングによって自動化・効率化し、企業の課題を解決する役割を担っています。Webサイトやサービスの価値を向上するための取り組みを行うSREエンジニアは、近年のIT業界には必須のエンジニア職だと言えるでしょう。
インフラエンジニアとの違いは?
SREエンジニアとインフラエンジニアの違いには、2点あります。
業務範囲
インフラエンジニアは業務反映がインフラのみであるのに対して、SREは信頼性を高める活動全てが業務範囲です。インフラエンジニアは、アプリケーション開発チームが開発したサービスが高いパフォーマンスで安定的に稼働するための環境を構築することが役割です。そのため、インフラの構築や運用、改善は行いますが、アプリケーション側には責任を持ちません。
一方で、SREはサービスの信頼性を高めるための活動をします。インフラだけではなく、アプリケーション側も業務範囲です。アプリケーションのプログラムの修正までSREエンジニアによって担当する場合もあります。また、開発や運用のみならず、組織や文化の醸成といった部分まで責任を持って取り組まれる例が多いです。
スキルセット
インフラエンジニアとSREエンジニアの違いは、スキルセットもあります。これは、業務範囲の違いからきています。インフラエンジニアはITインフラに関する知識や技術力が求められますが、SREはインフラエンジニアが持つ知見に加えてアプリケーション開発を行う技術力や当該アプリケーションに関する深い知見が求められます。
SREエンジニアの方でも、SREを提唱したGoogleは「SREチームの約半分はGoogleの正規のエンジニアで構成される」と宣言しています。これは、SREチームの半数はアプリケーションエンジニアにより構成されるべきとしています。残りの半数は、「Googleの正規エンジニア予備軍だが、他のメンバーが持っていないスキルがある」ことを条件としています。ここで示されている他のメンバーが持っていないスキルとは、UNIXシステムの内部構造やネットワークの専門知識であることが多いです。
一般的なインフラエンジニアの多くは、アプリケーション開発チームに異動したとしてもスキルがマッチしないため、業務遂行が難しいことを考えるとSREエンジなは、技術力の深さだけではなく知識の広さも求められます。
SREエンジニアの仕事内容とは
SREエンジニアの仕事内容について解説します。
SREは、主にチームを組んで仕事に取り組むことが多いでしょう。SREの主な仕事内容は以下があります。
障害対策、課題解決
SREエンジニは、システムリリース前のバグやエラーの対処などシステム障害対策も業務の一つです。完成したWebサイトやサービスを公開する前に、その時点で想定されるトラブルを解消する必要があります。例えば、アクセスの集中によりサービスが応答できなくなる可能性があれば、サーキットブレーカーを取り入れて代理で応答させる仕組みを作るなどの対応をします。不具合発生によるシステムリリース遅延の芽を、SREエンジニアが未然に取り除くことで、開発チームは安心してシステム開発に注力できるようになり、後のシステムの安定運用へとつながります。
システムの自動化
SREエンジニアの業務範囲はアプリケーション側も含まれます。そのため、システム開発工程の自動化も仕事内容に含まれます。自動化の一例として、ログの自動解析ツールやスプレッドシートの自動更新ツールなど、各種ツールの作成が挙げられます。システム開発工程の自動化は、開発チームの業務の円滑化や人的ミスの削減に清、より安全性の高いシステム開発と運用の実現をもたらします。
システム、クラウドサービスの運用
安定したシステムやクラウドの開発、運用をすることもSREエンジニアの業務の一つです。SREエンジニアがシステムやクラウド周りを運用することにより、開発担当者も安定した開発環境を利用できるようになります。サーバー環境の整備や構築・整備に伴うセキュリティ向上、ミドルウェアのパフォーマンス向上なども担います。
SREエンジニアに求められる知識やスキル
SREエンジニアは、開発と運用についての幅広い経験と知識が必要です。
クラウドサービスの構築や保守、運用
最近では、システム開発にクラウドサービスを導入する企業が増えています。AWSやGCP、Microsoft Azureなどのクラウドサーバーを活用している企業も見られます。そのため、SREエンジニアにもクラウドサーバーの構築や運用スキルが必要だといえます。クラウドサーバーを適切に利用することにより、品質の高いWebサービスを開発することにもつながります。AWSやGCPなどの実務経験を2〜3年以上求める企業もあります。
Webアプリケーションの開発や保守、運用
SREエンジニアの業務には、WebサービスやWebアプリケーションなどのシステム運用を最適化することも含まれます。そのため、SREエンジニアには、Webサービスの開発と運用スキルが必要になります。少なくとも1年以上のWebサービスの開発と運用経験が必要になるでしょう。Linux OSやPHP、MySQL、Pythonなどを用いた開発ができるレベルのスキルを求められる傾向にあります。
Webサービスに分類されるものは多岐に渡りますが、それらの共通点としては、顧客が触れて利用することで初めてサービスが成立する点が挙げられます。ユーザーが利用した際に、ユーザーが嫌な体験をしてしまうと、サービスそのものだけではなく企業のイメージに対しても悪影響を及ぼす可能性があります。そのため、企業にとってWebサービスの質や安定性を高めることは重要課題の一つです。
セキュリティ関連の知識
SREエンジニアの業務領域にはWebサービスの保守は含まれていません。しかし、Webサービスを提供するにはネットワークを利用することになります。そのため、SREエンジニアは最低限のセキュリティに関する知識も習得する必要があります。
ネットワークに関する知識
SREエンジニアは、システムの土台部分に関わる業務を行うケースが多いです。そのため、ネットワークやデータベースなどのITインフラに関する知識が必要になります。例を挙げると、ネットワークプロトコルに関する知識やミドルウェアに関する知識、パフォーマンス改善などの知識を身につけておく必要があるでしょう。
SREエンジニアにおすすめの資格
SREエンジニアを目指す場合は、資格取得がおすすめです。SREエンジニアは業務範囲が広いため、業務に関連した資格勉強を行うことで、SREエンジニアに必要な知識を身につけることができるでしょう。
Cisco Certified DevNet Associate認定
Cisco Certified DevNet Associate認定とは、シスコ技術者認定が提供しているソフトウェア開発者やDevOpsエンジニアを対象したソフトウェアを対象としたソフトウェアプロフェッショナルのスキルを認定する資格です。シスコ技術者認定はネットワーク関連の資格となっておりますが、Cisco Certified DevNet Associate認定を取得するためには、ネットワークだけではなくソフトウェアの知識も必要とされます。
AWS認定
AWS認定とは、AWSの利用スキルを認定するベンダー資格です。レベルには4つあります。AWSはクラウドサービスの中でも最もシェア率が高く、AWSが利用できるようになれば、他のクラウドサービスでも応用が効くでしょう。
インフラエンジニアからSREというキャリアパス
SREエンジニアになるためのキャリアパスには、インフラエンジニアからSREエンジニアを目指すルートがあります。SREエンジニアの業務はインフラエンジニアよりも広範囲であるため、クラウド関連の知識や開発知識などの専門性を高めることによってインフラエンジニアからSREエンジニアを目指せるでしょう。
まとめ
Webシステムの開発を円滑に進めるためにも、SREエンジニアの需要は拡大し、現在とても注目されている職種です。
まだまだ、SREエンジニアの人数は少なく、企業からの需要が高い即戦力人材を採用できるケースは少なく、転職市場では市場価値も高いようです。
これからもニーズが高く、将来性もあるSREエンジニアを目指してみてはいかがでしょうか。