「SRE」が「インフラエンジニア×開発」で実現する高信頼性サービス
2018.02.26
「SRE」はGoogleが提唱。多くのWebサービス企業が取り入れる
昨今、インフラやサーバーをクラウドサービスに委ねることが多くなってきました。それに伴い、オンプレミスの場合はエンジニアが手作業でコツコツと取り組んでいたインフラの設定や管理などの業務を、ツール、コード、APIなどで平易に行えるようになってきました。これが、インフラをコード化する「Infrastructure as Code(IaC)」と呼ばれるものです。
IaCの時代になり、インフラの管理やシステムの運用を行っていたインフラエンジニアの業務にも変化が訪れます。
インフラ管理だけでなく、積極的にコードを記述し、システム全体の性能を上げるという方向に業務をシフトする流れが進みつつあるのです。そしてそういう役割を果たすエンジニアは「SRE(Site Reliability Engineer)」と呼ばれています。ちなみに、そのようなエンジニアリングを「SRE(Site Reliability Engineering)」と呼ぶこともあります。
Googleが最初に提唱し稼働したといわれるSREですが、海外の企業はもちろんのこと日本でも、ネットオークション、クラウドソーシング、グルメ口コミサービス、オンライン経理など、さまざまなWebサービスを提供する企業がSREに取り組んでいます。
SREを活用する企業はエンジニアも閉鎖性が低く、自社のエンジニアブログやエンジニアリングのノウハウ共有サービスへ記事が投稿されたりしているので、SREに興味のある方は探してみるとよいでしょう。
SREでは何を行うのか
「SREに明確な定義はない」といわれていますが、先にも紹介したように「SRE」という単語は
・サイト
・信頼性
・エンジニア(エンジニアリング)
という言葉の集合で、その文字通りサイトの信頼性を高めるためにできることはなんでもやるということになります。
インフラエンジニアの本来の業務である障害対応や、システムの安定稼働のための運用・保守、サーバーをはじめとしたインフラの管理、ログ管理・分析だけでなく、コードに手を入れてパフォーマンスの改善を図るような業務も行い、システム全体の改善を行っていくのです。
「現実的には多くの業務を抱える中で、そのような時間は取れない」と考えがちですが、その時間を獲得するキーワードが、先に紹介したIaCがもたらす「自動化」です。
インフラがクラウドで展開されていれば、管理作業の多くを自動化できる可能性があるのが現代のコンピューティングの特徴です。自動化により捻出できた時間を使って開発や次の自動化作業に取り組んだり、システムに応じた冗長化やスケール対応などを順次行っていくことが可能になるというわけです。
その結果、SREのチームとアプリケーションのエンジニアが手を携えてシステム全体の改善に取り組むという流れにもなります。SREチームはシステムの可用性の確保を中心とした保守的な発想だけではなく、サービスの改善という目標のために、積極的な問題解決を図る考え方に変わっていくのです。
開発チームと運用チームが連携してシステム運用をする、という考え方はよくDevOpsという言葉の説明に出てきますが、その「Ops」側の理想形の一つとして見る考え方もあるかもしれません。
SREの利点とは何か
SREの利点はいくつかあります。まずコストの点では、SREは人間が行っていた作業を自動化できるという点で、インフラ担当者が自分でコードを記述する運用コストの削減を狙うことができます。またアプリケーションの開発担当者とSREが連携を図ることで、開発担当者は本来行うべきサービス部分に集中できるようにもなり、システムの品質向上につながります。
ところでSREチームが行っている作業として「マイクロサービス化」が取り上げられる例が多くあります。情報システムをマイクロサービス化することによって個々のサービスを独立化できますが、それには下記のようなメリットがあります。
・ボトルネックが判断しやすくなり、スケーリングを検討しやすい
・サービスごとに有効な技術を導入しやすい
・障害が発生した際に、サービス単位でのチェックをしやすい
優秀なジェネラリストを育てSREチームを結成する
SREのエンジニアは「コードを書けるようになったインフラエンジニア」というわけではありません。マインドを考えると保守よりも革新であり、また「部分」よりも「全体」を見る目が求められることになるでしょう。
一見スペシャリストのようでありながら、総合的に一通りのエンジニアリング業務ができ、また新しい技術の習得に熱心なエンジニアが求められるようになるのです。インフラエンジニアを擁している企業であれば、インフラエンジニアの成長ステージとしてSREを意識するのも、エンジニアに向けたよい目標設定の一つとなるのではないでしょうか。
お客様に、よいサービスをスピーディーに提供するという情報システムの最終的なゴールを考えると、インフラエンジニアであっても積極的な改善活動に寄与するという思想には大きな意義があります。SREという言葉にこだわらなくても構いません。まずはインフラエンジニアの「可動域」を広げてみるところから試みてみるとよいのではないでしょうか。
photo:Thinkstock / Getty Images