インフラエンジニアとは - 業務内容や人材市場価値まで詳細解説

IT業界に関わる方なら、一度はインフラエンジニアという名前を聞いたことがある方もいらっしゃるのではないでしょうか。エンジニアという名前のつく職種はさまざまな種類が存在していますが、現在においてもインフラエンジニアは重要な役割を担うポジションとして存在しています。

今までインフラエンジニアは、IT業界での業務がメインであり、ゲーム業界(特にネットワークを介さないコンシューマゲームや、PCゲーム等)の場合、そこまで必要とされるポジションではありませんでしたが、昨今ではネットワーク通信を前提としたMMORPG、ネット対戦・共闘、ネットでのランキング、フレンド機能等々、ソーシャルゲームはもちろん、コンシューマゲームにおいてもネットワーク環境が必須となってきており、ゲーム業界でもインフラエンジニアの需要は確実に増大しています。

今回、インフラエンジニアのという職種をより詳しくご理解いただくために、インフラエンジニアの概要から業務内容、市場的価値、インフラエンジニアになるためのキャリアパスを幅広く解説していきます。

インフラエンジニアとは?

インフラエンジニアとは、ITインフラの構築・保守・運用を担うエンジニアです。さらに言えば、ミドルウェアの設定やチューニングが主な業務です。インフラエンジニアが最適な設定・チューニングを施していれば、サーバーエンジニアなどのITインフラが必須となる職種は、より高いパフォーマンスを発揮することができます。

そもそもインフラとは?

インフラとは、「インフラストラクチャー」の略であり、「土台」や「下部構造」という、裏側でそれぞれが円滑に機能するための設備のことを指します。元々は、道路、水道などの産業基盤となる設備のことを指す言葉ですが、IT分野においては「ITインフラ」という名称で、「ソフトウェア・データ・ネットワークが円滑に作用するための設備」を指します。

サーバーエンジニアとの違いとは?

サーバーエンジニアは、ユーザーのアクションに対してサーバーと通信を行うためのプログラムを作成・担当します。一方、インフラエンジニアは、システムの裏側から土台となるインフラ(サーバーやネットワークなど)を設計することで、サーバーエンジニアなどが円滑に仕事を行えるようにサポートします。インフラエンジニアは表に出にくい業務が主ではありますが、「縁の下の力持ち」としてITインフラを下支えし、そのうえでサーバーエンジニアが業務を行っているのです。

インフラエンジニアの業務内容

前項にて少し触れたように、インフラエンジニアの主な業務内容としては、サーバーエンジニアがパフォーマンスを発揮するために、その環境を用意・調整することとなります。そのため、インフラエンジニアはサーバーエンジニアの業務内容に関しても把握していることが必要となってきます。

サーバーエンジニアは、主に「PHP」「JAVA」「Ruby」といった言語を用い、「API」(アプリケーションインターフェイス)や「クエリ」の生成(クライアントから送られてきたリザルトをデータベースに保存したり、データベースからクライアントにデータを送るといった処理)など上位レイヤーに関しての業務を担当します。

それに対しインフラエンジニアは、上位レイヤーであるサーバーエンジニアの業務を把握したうえで、「ネットワーク全体の設計」「パフォーマンスチューニング」「ネットワークの管理・監視」「負荷分散」(ロードバランシング)、「サーバー・データベースの構築、仮想環境の構築」、「サーバートラブルへの対応」といった、下位レイヤーにおいての非常に多岐にわたる業務を求められます。

以下にてそれぞれの業務に関し、説明していきます。

ネットワークの設計

ネットワークの設計では、ゲームなどを運営していく際、ユーザー数や平均売上金額、ゲームの規模に応じて、インフラエンジニアがサーバーのスペック選定や、ミドルウェア選定、クラウドコンピューティング(「IaaS」...Infrastructure as a Service、「SaaS」...Software as a Service、「PaaS」...Platform as a Service等)選定等を行わなければなりません。

この選定によって、ユーザーのプレイ環境が快適かどうかが左右されます。ネットワークの設計には経験が必要になりますが、インフラエンジニアの腕の見せ所といったところでしょうか。

IaaS 「Infrastructure as a Service」の略で、ITインフラをインターネット経由で提供すること
SaaS 「Software as a Service」の略で、パッケージ版として販売されていたものを、ダウンロードコンテンツとして提供すること
PaaS 「Platform as a Service」の略で、ソフトウェアの動作環境(プラットフォーム)を、インターネットを経由で提供すること

パフォーマンスチューニング

設計したネットワークのリソースを100%近くまで使い切るようにメモリやCPUの使用率の設定や、ネットワークのタイムアウト、ミドルウェアが使用するリソースのバッファ設定といった、ミドルウェア、OS等のより詳細な部分の設定を行うのもインフラエンジニアの担当となります。

これらの作業を総称してパフォーマンスチューニングと言います。OS、ミドルウェア、ネットワークの詳細な設定を行うために、ここでもそれぞれに対して専門的な知識が必要となります。またサーバーのパフォーマンス向上により、サーバーの台数を減らすことも可能で、ランニングコストの削減(費用対効果)にもひと役買うことができます。

ネットワークの管理・監視

インフラエンジニアが設計したネットワークは当然インフラエンジニアが管理・監視しなければなりません。永久に障害が起こらないようなネットワークを構築できるのであれば、もちろんそれに越したことはないのですが、それは難しいので「MRTG」「Munin」「Cacti」等リソースを監視するツールや「Mackerel」「Zabbix」等の障害を監視するツールを駆使して、障害の早期発見に努めることが重要となってきます。

ネットワークの管理・監視では、グラフからボトルネックや障害を事前に読み取る能力が求められます。病気になる前に発見する、ネットワーク・サーバーの医者というような業務となります。

リソース監視 「MRTG」「Munin」「Cacti」等
障害監視 「Mackerel」「Zabbix」等

負荷分散(ロードバランシング)

負荷分散では、サーバーへのアクセス・負荷などを予測し、サーバーを何台立てるのか、その負荷をどのように分散するのか、同じくデータベースサーバーのデータベース使用量に応じたバッファの設定に関しても考慮しなければなりません。

また負荷の分散に必要なロードバランサー(ユーザーからのアクセスに対して通信負荷を複数のサーバーに分散させるしくみ)ですが、その設置台数に関してはネットワーク、サーバーの管理・監視を行ううえで考慮し決定していく必要があり、管理能力が問われます。インフラエンジニアが適切な台数のロードバランサーを設置することで障害率の低下、メンテナンス性の向上を図ることができます。

サーバー・データベース・仮想環境の構築

ネットワークの設計を建物の設計段階とするならば、サーバー・データベースの構築では実際に建物を建築していく段階と言えます。サーバーOSの選定、サーバーエンジニアと協力してのデータベースの選定、ミドルウェアの選定等に関しては、基本的に当該インフラエンジニアの造詣の深いものを選定していくことが一般的ですが、クライアントによってはOSやミドルウェアを指定されるケースもあるので、インフラエンジニアは幅広いOSの知識を身に着けておくほうが望ましいと言えます。

仮想環境は構築することにより1つのサーバー上に複数のOSを構築することが可能となります。例えるのであれば1つの土地の上に複数の建物を建てることができるようなものです。また、「VMWare」等の仮想化ソフトウェアを使用することにより、複数の仮想サーバーの一元管理が可能というメリットや他サーバーへのOSの移行が容易になる等のメリットもあり、耐障害性の向上にも繋がります。

サーバーの障害対応

インフラエンジニアの業務として、サーバーにトラブルがないように適切なネットワークの設計や負荷分散等の調整を行うことはもちろん大切ですが、万が一サーバーダウン等のサーバー障害が起こった際に障害の対応を行うこともまた大切な業務の1つであり、迅速且つ正確な障害対応が求められます。

障害対応時間という言葉もあり、障害が起こってから復旧までの時間単位での損失額に応じて算出される指標も存在するほど重要視されています。また、障害に対する報告もインフラエンジニアの大切な業務の1つで、原因の追究をし、ノウハウを蓄積することにより再発の防止に努めることも大切です。

大まかな説明でもインフラエンジニアにはこれだけの業務があり、それぞれ一つひとつの業務に関しての専門書が出ている程、学ばなければいけないことは多いです。

インフラエンジニアに必要な作業環境とは

インフラエンジニアの作業においてよく使われる環境として「LAMP環境」という言葉があります。LAMPとは単語の頭文字をとったもので、「Linux」、「Apache」、「MySQL」、「PHP(Perl、Python等)」となります。

まず「Linux」はOSの種類、「Apache」はウェブサーバーの一種、「MySQL」はデータベース、「PHP」はプログラミング言語の一種......つまり「LAMP環境」とはインフラエンジニアの世界において一般的によく使われる環境を指しています。

インフラエンジニアは上記においても調整できる知識が必要です。しかしながら、ウェブサーバーには「TOMCAT」「Nginx」等、他のウェブサーバーも存在しますし、データベースでは「PostgreSQL」「Oracle」、OSに至っては「CentOS」「RedHat」「Debian Linux」等々......多数の種類が存在します。

すべてのOS、ウェブサーバー、データベース、言語等に精通することは非常に困難ですが、さまざまな環境のうちの1つでよく使われているLAMP環境に関してはインフラエンジニアとして最低限の知識は必要であると言えるでしょう。

インフラエンジニアとしての価値・将来性

昨今のゲーム開発においては、前述の通りインフラエンジニアは必須ですが、専門的知識・経験が必要なため、インフラエンジニアになるためのハードルは高く、且つインフラエンジニアになるためには多くの時間を必要とします。そのため、インフラエンジニアの数は絶対的に不足しています。

従って人事・採用の市場おいてインフラエンジニアは希少により人月単価が高騰しやすいにも関わらず、今後も需要は高いと考えられます。またインフラエンジニアはゲーム業界だけでなく、ITシステムなど他業界においても需要が高く、不足しがちなためIT業界全体において、知識・経験等が無駄になりにくい、いわゆるつぶしがきく職種と言えます。前述の通り、学ぶことは非常に多岐に渡り、恒常的に学ぶことも必要ですが、それだけのリターン(価値)がある引く手あまたな職種であるということは明確です。

現在、さまざまなソーシャルゲームアプリがリリースされていますが、一度タイトルがリリースされるとそのタイトルにはサービスが継続されている限りインフラエンジニアが必要となります。そのため、インフラエンジニアがプロジェクトにアサインされている期間は長くなる傾向があり、多額の予算が投じられることからも重要なポジションであるため、多くのビジネスチャンスがあります。

インフラエンジニアになるためのキャリアパス

ではインフラエンジニアになるためにはどうしたらよいのでしょうか、本項ではキャリアパスについて説明をしたいと思います。インフラエンジニアは業務内容が多岐に渡り、サーバーエンジニアの業務への理解もある程度必要なため、キャリアパスとしてはフロントエンジニア、サーバーエンジニアとしての業務を経験してからインフラエンジニアに就く方が多いようです。

インフラエンジニアの業務では、それぞれサーバーの構築を行うサーバーエンジニア、ネットワークを構築するネットワークエンジニア、データベース内のデータの最適化を行うデータベースエンジニア、ログの管理、障害対応を行う運用管理・保守エンジニア等多くの業務に触れる必要があります。インフラエンジニアとは上記それぞれの業務を総合的に行うことが求められます。

言わばインフラエンジニアとは上記それぞれのエンジニアの総称とも言えます。それぞれの業務の1つから学ぶことを始め、インフラエンジニアとしての経験を積み、そのうえでプロジェクトにアサインされるエンジニアを束ねるリードエンジニア、PL(プロジェクトリーダー)を目指し、最終的には社内全体の技術的方向性を決定するCTO(Chief Technology Officer=最高技術責任者)という最上位へのキャリアパスが一例として挙げられます。

まとめ

昨今のゲーム開発においては、フロントエンジニアに加えサーバーエンジニア・インフラエンジニアのネットワーク開発、運用が必須となりつつあります。インフラエンジニアがいることで、他のエンジニアの業務が成り立つといっても過言ではないでしょう。

また、本文中で述べたようにサーバーのパフォーマンスにはサーバーエンジニアの努力も必要ですがインフラエンジニアの力によってそのパフォーマンスを最大限に生かすことができます。そのため、以前よりもインフラエンジニアの重要度が増していることは間違いありません。ぜひこの記事を読んだことをキッカケにして、インフラエンジニアについて興味を持ってみてはいかがでしょうか。

サービスに関するお問い合わせ

マイナビクリエイター事務局
受付時間 9:15〜17:45

サービスに関してご不明な点がありましたら、マイナビクリエイター事務局までご連絡ください。