SREに関して徹底解説!これまでのシステム運用との違いからDevOpsとの違いまで分かりやすく解説します。
近年なにかと話題になるSRE。Googleが提唱したエンジニアの役割であるSREは今までのシステム運用のやり方、そしてDevOpsとはどのような違いがあるのかについては、未だにわからない人も多いです。SREによってどのようなメリットを得られるのか、そしてどういうものなのかについて今回は解説していきます。
目次
SREってそもそもどんなもの?
Googleが提唱したエンジニアの役割
なにかと最近話題になるSRE。言葉では聞いたことがあるものの、果たして自分たちには関係があるのか、そう考えていませんか。実はSREを知っておくことで、システム運用において生産性と信頼性を良くすることができるのです。
SREというのはGoogleが提唱したエンジニアの役割です。サイト、信頼性、エンジニアリングの3つの頭文字をとってSREと名付けられています。現在ではGoogle以外にも様々な企業で採用されていますが、それでもまだ実際に採用している企業は少ないです。
開発者にとって理想的な運用チーム
SREと従来のシステム運用やDevOpsとどう違うのか、という疑問を持つ人も多いはずです。SREと従来のシステム運用の違いは、開発担当が運用チームを依頼するかどうかです。SREの場合は、開発担当が自分たちの理想を実現するために、自分たちで運用チームを設計しようという思想から生まれています。
これにより開発者の理想通りに運用が行われ、作業効率はもちろん、信頼性や運用面において確実で柔軟なシステム運用が実現できます。SREがどのようなことをするか、そしてSREによってどんなメリットが生まれるのかについては後ほど解説します。
従来のシステム運用の仕組み
開発担当と運用担当は別物
ではそもそも今までのシステム運用とはどのような仕組みだったのか、ということについて説明していきます。基本的にはシステムを開発する開発担当と、開発されたシステムを安定的に稼働させるための運用担当というチームが存在します。
そして、それぞれのチームというのは独立しています。つまり開発担当はひたすら開発を、運用担当はひたすら安定的なシステムの稼働に努めていたということになります。これが従来のシステム運用の仕組みなのです。
開発担当と運用担当の食い違い
しかしこの従来のシステム運用というのは、最近になって徐々に減ってきています。一体なぜなのでしょうか。その理由は開発担当と運用担当が異なるチームの場合、どうしても新機能の導入などの部分で不都合が起こってしまうためです。現代のような速いスピードで動く社会において、従来のようなシステム運用では遅れを取ってしまいます。
システムというのは日々新しくなっています。開発担当は日々新しい社会の流れに対応すべく、機能などを追加したりしています。しかし運用担当はあくまで安定した稼働に重点を置いています。そのためもしも新しい機能を実装するとなると、場合によっては不具合などが発生してしまいます。そうなってしまうと運用担当の負担も大きくなるため、どうしても開発担当と運用担当の間に亀裂が生じてしまいます。
DevOpsって何?
開発担当と運用担当が連携してソフトウェアを作ること
開発担当と運用担当の間に亀裂が生じてしまっては、システムの進化は到底不可能になってしまいます。そこで登場した手法がDevOpsです。こちらは開発の時点で開発担当と運用担当が連携して開発をする手法です。これによりシステム運用などの部分において、大幅な生産性の向上をすることができました。
開発担当はシステム開発をする時点から安定した運用に重点を置いたシステム開発をすることが可能になり、そして運用担当も実際に運用させた上での改善点などを伝えることが容易になりました。結果的にどうなるのかというと、システム運用などの部分において柔軟性が生まれ、新機能の実装なども容易に行うことができるようになります。
生産性向上と穏やかな人間関係
DevOpsによるメリットは柔軟性が生まれるだけではありません。DevOpsは密接な連携を実現させるために、様々なツールを用いて自動化を取り入れます。自動化を取り入れることによって、従来のシステム開発よりも大幅に作業効率が向上します。
また、開発担当と運用担当が連携するには、コミュニケーションも重要になります。お互いを尊重し、そして支え合うことをしなければ開発が進みません。そのためDevOpsで開発をすることにより、穏やかな人間関係を構築した状態で作業を進めることができます。
\ IT転職のプロが無料でサポート! /
SREの主な役割とメリット
インフラ整備とパフォーマンス向上のための改善
ではSREは具体的にどのようなことをするのか、ということについて説明していきます。基本的SREは運用担当であることには変わりません。開発は従来通り開発担当が行います。しかしその後の運用は基本的にSREの担当になります。
SREの役割としては、確実にシステムを動かすためのインフラ整備、そしてシステムのパフォーマンスを向上させるためのシステムの改善と信頼性の向上が主な役割です。従来のシステム運用などとは違い、システム改善のためのソースコードの修正や改変、さらにはネットワーク構築なども運用担当が行います。これがSREという役割の主な特徴です。
攻めのシステム運用
最初の部分でも説明したとおり、SREは基本的に開発担当が自ら運用担当などのチームを設計します。そのため開発担当が考える理想的な展開を実現しやすくなるということです。従来のシステム運用やDevOpsは、安定的な運用も視野に入れたシステム開発をしなければいけなかったため、どうしても守りの体制になってしまいます。
しかし運用チームも開発担当が決めることにより、DevOpsよりも柔軟な対応が可能になります。何より開発担当の考えが通りやすくなるため、システム運用の体制も守りから攻めの姿勢へと変化させることができます。
SREは今後広がる?
SREを取り入れている企業
開発担当が自ら設計した運用チームにより、攻めのシステム運用を実現できるSRE。Googleが提唱したこのエンジニアの役割は、現在他の企業でも取り入れられています。現在はまだSREを取り入れている企業は少ないのですが、今後はさらに多くの企業で取り入れるとされています。
現時点でGoogle以外でSREを取り入れている企業としては、Facebookやメルカリ、Netflixが有名です。いずれも信頼性を第一にしている企業であるため、そのような考えにおいてSREという役割は非常に重要なものとされています。
エンジニア不足とSRE
SREというのは従来の運用の他にもプログラムの改善やインフラ整備も行います。そうなるとSREの担当になるには、システム運用の知識の他にもプログラミングのスキルなども必要になってきます。ではSREによってエンジニア不足の問題は解決するのかということになりますが、残念ながらそうも行きません。
SREは確かにプログラミングなどのスキルも必要ですが、その動きがエンジニア不足を解消できるというわけでもありません。仮にプログラミングができたとしても、SREは従来通り運用の役割もあるため、幅広い知識とスキルが必須となります。そのためSREを取り入れようと検討しても、SREにふさわしい人材が少ないというのが現状です。
SREはこれからのシステム運用のスタンダード
今回は話題となっているSREとは何かについて、従来のシステム運用やDevOpsとの違いとともに解説しました。
SREに求められるスキルは?
先程の部分でも少し触れましたが、SREは運用とプログラミングに関するスキルが必要になります。運用についても攻めのシステム運用となるため、可用性などの知識も必要です。その上でプログラムを改善するために必要となるプログラミングのスキルなども必要です。
これからSREを取り入れている企業などに就職したり転職したりすることを検討している人は、最低限システム運用に関する知識とプログラミングのスキルは習得しておくようにしましょう。
信頼性と利益を求めるならSREがベスト
メルカリなどのエンドユーザーが多いシステムやアプリというのは、信頼性が最も重要になってきます。信頼性があればあるほど、ユーザーも使い続けたいと感じます。そしてそのようなシステムを実現させるには、開発担当の理想を実現させるための運用チームが重要です。
その最適解として登場したのがSREです。SREは開発担当の理想を実現するためのチームでもあり、同時にそのシステムやアプリを利用する私達ユーザーに信頼と価値を確実に提供してくれる存在なのです。
あわせて読みたい関連記事
この記事を読んでいる人におすすめの記事