Introduction
タイトルの内容について、定期的に良く周りから聞かれるので、私個人の見解で書いてみました。
あくまで個人の意見(※)ですが、何か参考になれば幸いです。
※筆者は元SIerでAWS Solution Architectをやっており、1年前にWeb系に転職して、SREエンジニアに鞄替えした人間でして、お世話になっている各種SREの勉強会や日々の業務から学んだ内容に基づいた見解となります。
インフラエンジニアとSREエンジニアは何故混同されるのか
混同されがちなのは、現状のムーブメントでは、技術スタックや業務内容の多くが被っているからだと思ってます。特にインフラエンジニアの中でも、クラウドエンジニアの分類の方たちと多くが類似しているからだと感じてます。
改めて、SRE(Site Reliability Engineering)とは、DevOpsの思想を実践する為のプラクティス集が土台にあり、その多くは運用をソフトウェアエンジニアリングの力で解決する目的の為に存在します。
例えば、
-
人的ミスや再現性を高める為のアプローチであるIaC
- e.g. TerraformやCDK
-
インフラの故障時間短縮を目的とする自律型Platformの構築
- e.g. ECSやk8sなどのコンテナベースの基盤など
-
秘伝のタレ(属人化された特定の人間しか再現出来ない状況)を解消すべく、CI/CDの構築
- e.g. GiHubActionsやAWS Code3兄弟シリースなど
などが、具体的なアプローチ例として分かりやすいかと思います。
そして、これらの内容はクラウドインフラエンジニアの人達の業務内容でもあると思います。
(クラウドネイティブにインフラ構築などしていたら必然的にこれらの技術を使うことになると思います)
SREエンジニアとインフラエンジニアの違い
SREエンジニアは以下の内容に多くの関心事を置いてることだと思います。
- DevOpsを実践していく為の組織の文化を醸成
- サイトの信頼性を高めるアプローチを確立するため運用業務の改善
例えば、
- SLI/SLOの選定、エラーバジェットの運用
- プレモーテム/ポストモーテムの実施
- トイル削減の取り組み
などが代表例かと思います。
インフラエンジニアもオンコール業務の改善やシステムの安定稼働に関心を置いてる人は多いと思うので、似通ってる部分はあるかもしれませんが、それでもSLI/SLOやポストモーテムの取り組みなど、 「どう実現するのか?」というHowの部分 を追求しているのは、SRE特有な部分かと思っております。
SREのイベントで、組織の文化などにフォーカスされることが多いのは、こういった事情から来るのかなーと思ってます。そして、組織によってSREのプラクティスを実践していく形が異なることが、SREという言葉がバズワードで誤解されがちであったり、難しく感じるのですかね。
上記に挙げた内容以外でSREエンジニアならではという部分を考えると、(SLI/SLOに限らず)あらゆる事柄を測定して、数値に基づく意思決定アプローチをするOODAループなどが特徴的なのかなと感じております。
「 you can't manage what you can't measure 」と昔、有名な人間が謳ってました(※)が、この考え方に私は多くの影響を受けてます。
※ピーター・ドラッガーや、トム・デマルコの名言など諸説あるようです。
おわり
冒頭にも説明した通り、あくまで私個人の見解となりますので、そこだけご了承頂けたらと!
また、組織の数だけSREエンジニアの形があり、必ずしもGoogleのSRE本だけが正しいわけではないとも思います。
そして、DevOpsエンジニアとかCustomer Reliability EngineerはどういうRole何だ?とか、はたまたDevSecOpsとかBizDevOpsって何だ?とか、考えるとキリが無く、言霊は難しいですね。
SREについて、更に詳しく知りたいという方は、各種勉強会に足を運んでみてはいかがでしょうか!!
Happy Site Reliability Engineering!!
2022/05/22 追記:
(記事のViewerさんから、早速良きfeedbackを頂いたので追記)
①SREエンジニアの技術スタックはクラウドインフラ領域に留まらず、例えばモバイルやフロント側のCore Web Vitalsをベースに信頼性を追ってる事例なども最近はあり、今後はより増えていくであろうと...!
これこそがまさに大きな違いで、そのうちSREエンジニア=インフラエンジニアという印象を持たれる事が無くなる日も近くなりそうですね💡
②インフラエンジニアと混同されやすい理由をあげるとしたら、「昔インフラエンジニアと呼ばれてた人は、プログラミング以外のすべてを担当してただけなんじゃないのって奴(DBAもやるし、契約周りや、キャパプラもやるし)」という意見を頂き、これの方が混同している理由の真理に近いなと感じました💡 またSREは目的なので、技術スタックで区分けするのはセグが違うという意見もまさにその通りであると(大事なことを書いてなかった)...!! 感謝っ!!