ネットワークエンジニアや、サーバーエンジニアの求人を見ていると、「インフラエンジニア」という職種を目にすることがあります。
今回は、インフラエンジニアとは何なのか、ネットワークエンジニアとサーバーエンジニアの違いなど、インフラエンジニアについて解説していきますので、インフラエンジニアに転職を考えている方や、興味のある方は是非参考にしてみてください。
目次
1.そもそも「インフラ」とは
そもそも「インフラ」とは、インフラストラクチャー(Infrastructure)の略語で、「基盤」、「下部構造」などの意味があります。
私たちが生活をするためには、電気やガス、水道などが必要です。毎日会社へ出勤するためには電車が必要ですし、移動をする時に車を使うこともあります。
しかしそれらは全て、そこにあるだけでは使うことができません。
生活に必要なモノやエネルギーも、それを送り届けるための道がなければ、私たちは使うことができないのです。
電気を使うためには、「電線」を通じて電気会社から供給を受けなければなりませんし、車を走らせるためには、「道路」が必要となってきます。
このような、電線や道路といった、生活に必要な物資を送り届けるための基盤となるものが「インフラ」と呼ばれています。
インターネットが普及した現在、PCやスマートフォンなどで誰でも簡単に必要な情報を手に入れることができるようになり、ITも生活には無くてはならないものとなりました。
普段はあまり意識をしたことがないかもしれませんが、私たちがインターネットのサイトを閲覧したり、メールを送受信する際、インターネット上では様々なデータの受け渡しが行われています。
この、様々なデータを受け渡すための基盤が「ITインフラ」と呼ばれています。
ITインフラには大きくわけて2つあり、
①ネットワーク、パソコン、サーバーなどのハードウェア
②そのハードウェア上で動くOS、ミドルウェアのソフトウェア
に分かれています。
いずれも、私たちが使っているメールやWebアプリケーションサービスが動くために必要となる「基盤」の部分を指しています。

2.インフラエンジニアとは
インフラエンジニアとは、ITエンジニアの職種の一つで、前述したITインフラの設計構築、および運用保守を担うエンジニアのことを言います。
2.1 ITエンジニア業界でのインフラエンジニア
ITエンジニアと言うと、プログラマー、Webエンジニアなどをまず思いつくかと思います。
ITサービスはITインフラがなければ使うことができません。
IT業界におけるインフラエンジニアは、「ITの縁の下の力持ち」としてITサービスを24時間365日動かし続けるために必要不可欠な存在です。
ITエンジニアの職種の詳細については、以下の記事に公開されています。
2.2 ネットワークエンジニアとサーバーエンジニア
ネットワークエンジニアとサーバーエンジニアを合わせてインフラエンジニアと呼ばれることもあります。
サーバーは構築しただけでは不十分で、実際に利用するためにはインターネットに公開する必要があるため、最低限はネットワークの知識がなければなりません。逆に、サーバーエンジニアの技術として有名なLinuxの技術は、ネットワーク機器にも通じる部分があります。
ネットワークエンジニアとサーバーエンジニアは、言葉こそ分かれてはいますが、インフラ部分を担うエンジニアという意味では同じであり、仕事内容にもよりますが、明確に分担をされていないというのが実際のところです。
【ネットワークエンジニア】
コンピュータやサーバを、ルーターやスイッチなどのネットワーク機器で接続し、データを正常に受け渡すネットワーク(回線)の業務を担うエンジニアのことを、ネットワークエンジニアと呼んでいます。
【サーバーエンジニア】
インターネット上には、メールを送受信するためのメールサーバ、Webサイトを表示させるために必要なWebサーバ、必要な情報が蓄積されているデータベースサーバーなど、私たちのリクエスト(要求)に合わせてデータを返す(応答)役割を果たす「サーバー」が存在します。
サーバーエンジニアとは、文字通りこれらのサーバーの業務を担うエンジニアのことを指しています。
2.3 インフラエンジニアの業務はITインフラの設計、構築、運用、保守、監視
インフラエンジニアは、ITインフラを設計・構築し、それらが問題なく動くための運用・保守を行います。
快適なIT環境を提供するための業務ですが、詳しく分類すると以下の通りとなります。
・要件定義
お客様の希望をヒアリングして、どのようなITインフラを作成するかを決定する。
・設計
どの機器を用いて、どのような構成および設定値にするかなどを決定する。
稼働した後にどのような取り決めで運用していくかも合わせて検討する。
・構築
機器を調達して実際に接続などの構築を行う。
・テスト
設計書通りに問題なく動作するかのチェックを行う。
・運用保守
正常に動作しているかを監視し、障害が発生した場合にはトラブルシューティングを行う。
2.4 インフラエンジニアが扱う機器
インフラエンジニアが実際に扱う主な機器としては、以下のようなものがあります。

・ルータ
ネットワーク同士を接続する機器。
データの最適な転送経路を決定(ルーティング)し、データの転送を行う。
・スイッチ
各機器の集約装置。
スイッチに直接接続された特定の機器に対してのみ通信を行う。
・サーバー
Webサーバー、DBサーバーなどユーザーに対してサービスを提供する機器。
・ロードバランサー
2台以上のサーバーに対して、通信を分散させる負荷分散機器。
・ファイアウォール
社内および、社外ネットワークの間などに設置し、特定のデータを通したり破棄するなどのアクセス制御をするシステム。
・ストレージ
ハードディスクなどのデータの保存場所。
2.5 インフラエンジニアに必要なスキル
インフラエンジニアに必要なスキルは、ネットワークとサーバーの幅広い知識と、コミュニケーションスキルが挙げられます。
・ネットワークとサーバーのスキル
ITインフラの設計、構築、運用保守といった、ITインフラ全般の業務を行うためには、ネットワークとサーバーの深いスキルが必要です。
様々な機器を相互接続してITインフラを構築するため、機器の機能やスペックの他、サーバーのOSや、Apacheなどのミドルウェアのインストールと設定方法、サブネットマスクやIPアドレス、サーバーのセキュリティ、冗長化や負荷分散を考慮した設計など、インフラ技術に幅広く精通する必要があります。
・コミュニケーションスキル
要件定義では顧客のニーズを的確に聞き取る必要がありますし、保守においては障害状況を端的に顧客へ伝える必要があります。
また、インフラ業務はチーム作業となることが一般的ため、チームメンバー間での適切なコミュニケーションも必須となります。
2.6 インフラエンジニアのキャリアパス
インフラエンジニアは、異業種からの転職例も多く、IT業界が未経験の方でもチャレンジできる可能性のある職種です。
具体的な求人としては、まずインフラの運用保守の案件からスタートし、設計構築などの業務へと段階を踏むことでキャリアアップしていくのが一般的となっています。
キャリアパスも様々で、サーバーエンジニアからネットワークエンジニアへの転職や、プロジェクトマネージャー、管理職を目指す、もしくは技術者としてスペシャリストを目指す、経験を積んでコンサルタントを目指すなど、企業によってもキャリアパスは多岐にわたっています。
3.インフラ、開発の違い
就職、転職において、開発系に進むかインフラ系に進むか、どちらにするかを迷う声がよく聞かれます。
開発の業務は、基幹系システム、パッケージソフトなど、実際にユーザーが利用するためのアプリケーションの設計から実装、リリースに至るまでを主な業務としています。
それに対してインフラの業務は、アプリケーションそのものをデプロイするためのサーバーや、複数の拠点間でサービスを利用するためのネットワークを構築するなどと言った、開発された基幹系システムやアプリケーションを入れるための「箱」を設計構築、運用する業務となります。
両者は求人として初めから分かれている場合もあれば、ITエンジニアとして入社した後、キャリアチェンジしてインフラ業務、もしくは開発へとシフトしていく場合などもあります。
4.インフラエンジニアが取得しておきたい資格
インフラエンジニアが取得しておきたい有名な資格としては、
ネットワークエンジニア向け:CCNA、CCNP、CCIE
サーバーエンジニア向け:LinuCレベル1~3
などが挙げられます。
インフラエンジニアの業務を行うにあたり、CCNAおよびLinuCレベル1は最低限取得しておきたい資格です。
これらは全てベンダー資格となり、詳しい内容は下記の記事にて公開されています。
関連記事:インフラエンジニアを目指すIT未経験者におすすめの資格と難易度
関連記事:CCNAとはどんな資格?難易度から気になる受験料までまとめました
関連記事:CCNPとはどんな資格?難易度、合格率から取得後の年収までまとめました
関連記事:CCIEとはどんな資格?難易度から受験料、取得後の年収までまとめました
関連記事:新資格「LinuC」とは?日本市場向けの新Linux技術者認定試験が開始
関連記事:LinuCの出題範囲が2020年4月より改定!難易度や、資格取得メリットについて、LPI-Japan鈴木理事長にインタビューしました
5.インフラエンジニアもプログラミングスキルが必要になっている
5.1 シェルスクリプト
インフラエンジニアが構築するサーバーのOSとしてはLinuxが有名です。
Linuxには処理を実行するための核となる「カーネル」がありますが、カーネルは0と1からなるコンピュータの言語しか理解できません。
ユーザーとカーネルの間で翻訳者としての役割を果たし、ユーザーからの指示をカーネルに伝えるためのプログラムとして「シェル」が存在します。
シェルは、ユーザからのコマンドを受け付けてカーネルに処理をさせ、結果を表示するためのプログラムです。
シェルスクリプトとは、シェルが理解できるコマンドを列挙したものとなります。

連番をふったフォルダを複数作成したい場合や、ファイル名を一括でリネームしたい場合など、従来のインフラエンジニアにおいては、シェルスクリプトによるプログラミングが一般的でした。
5.2 軽量プログラミング言語(LL言語)とインフラ構成管理ツール
しかし、クラウドの発展に伴い、インフラエンジニアの業務にも変化が表れています。
従来のオンプレミスと比べると、サーバーを構築・運用する手作業の部分が減り、今後はリリースまでのスピードが重視され、インフラエンジニアの需要もこの変化に合わせてこれからますます増加するものと思われます。
この流れでインフラエンジニアは、従来のシェルスクリプトだけではなく、他の軽量プログラミング言語(LL言語)の知識も必要になってきています。
軽量プログラミング言語とはLightweight Languageの略で、学習が比較的易しいと言われている言語のことで、Perl、Ruby、Python、PHPなどが挙げられます。
現在のインフラエンジニアの業務では、サーバーのセットアップなど手動で行っていた作業を、プログラミング言語でコード化して自動で実行する仕組みが導入され始めており、インフラの運用や構築を自動化するためのインフラ構成管理ツールが注目されています。
インフラ構成管理ツールとは、
①OSインストールなどを自動で行うもの
②OSやミドルウェアなどの定義ファイルを自動で作成するもの
③複数サーバの管理を自動化するもの
の3つに分類されます。
No. | 種類 | 主なツール |
---|---|---|
1 | OSの起動を自動化する(Bootstrapping) | Vagrant |
2 | OSやミドルウェアの設定を自動化する(Configuration) | Chef、Ansible |
3 | 複数サーバの管理を自動化する(Orchestration) | Capistrano |
ChefにはRubyが使われており、AnsibleはPythonで実装されています。
これまで手動で設定していた機器の設定値などを、Rubyなどの軽量プログラミング言語によってコードで記述する必要が出てきており、今後はインフラエンジニアにおいても、このようなプログラミング言語の知識も必要となってきています。
6.まとめ
インフラエンジニアとは、IT社会の基盤を支える、とても重要な職種です。
ATM、クレジットカードシステムなど、ITシステムは様々な分野で私たちの生活に密着しています。そのIT基盤を支えているのは、サーバーエンジニアやネットワークエンジニアなどの「インフラエンジニア」に他なりません。
是非、インフラエンジニアの求人にチャレンジしてみてください。