ITエンジニアの職種の1つであるインフラエンジニア。

仕事内容や他のITエンジニアとの違いは、複雑で分かりにくいですよね。

そこでこの記事では、インフラエンジニアについて知りたい方へ以下の内容を解説していきます。
この記事の内容
- ITにおけるインフラとインフラエンジニア
- システムエンジニアやプログラマーとの違い
- インフラエンジニアの仕事内容
- インフラエンジニアの職種の分類
この記事を読み終えると、次のような状態になっているでしょう。
目指す状態
- ITにおけるインフラの意味とインフラエンジニアの概要を理解できる
- インフラエンジニアの仕事内容を理解できる
- インフラエンジニアの職種の詳細について理解できる
それではまず、インフラエンジニアの概要について確認していきましょう。
1.インフラエンジニアとは?
インフラエンジニアとは、どんな職業なのでしょうか?
ここでは、ITにおけるインフラの意味を確認し、システムエンジニアやプログラマーとの違いについて解説していきます。
1-1.そもそもITにおけるインフラとは?
インフラとは、情報システムを構成する要素の中で、サーバーやネットワーク等のシステムの土台となる部分を指します。
ここでは、一般的なインフラの意味と比較してご説明します。

図1:一般的なインフラとITインフラの意味の対比
図1のように、一般的にインフラとはインフラストラクチャー(Infrastructure)の略で、社会の人々が生活する上で必須となる「水道・電気・ガス・交通機関・行政サービス」などを指します。
これと同様に、情報システムにおけるインフラとは「サーバーやネットワーク等のシステムを構築する上で必須となる土台の部分」を意味します。

図2:システムの構成要素とITインフラの位置付け
図2のように、情報システムは、サーバーやネットワーク等で構成される土台の上に、アプリケーションが乗ることで構成されています。
このインフラの土台が無ければアプリケーションを使うことができません。
その意味で、インフラとは、情報システムを構築する上で不可欠な土台となるものと言えるでしょう。
1-2.インフラエンジニアとは?
前項で解説したITにおけるインフラの意味を踏まえると、
重要
インフラエンジニアとは、情報システムの土台となるインフラ(サーバーやネットワーク等)を設計・構築・運用・保守をするエンジニア
と言えます。
1-3.システムエンジニアやプログラマーとの違いは?
ここではインフラエンジニアについて、システムエンジニアやプログラマーとの違いを確認していきましょう。

図4:インフラエンジニアとシステムエンジニアやプログラマーとの違い
インフラエンジニアは、システム開発の領域をインフラとアプリケーションに分けた時に、インフラの設計・構築を担当するエンジニアです。
つまり、インフラエンジニアという名称は、システム開発における開発領域に着目してエンジニアを分類した呼び方と言えます。
一方、システムエンジニアやプログラマーは、システム開発のフェーズ(段階)を「企画/提案、要件定義、設計、構築、運用・保守」に分類した時に、システムエンジニアは「設計」、プログラマーは「構築」を担当するエンジニアを指す言葉です。
つまり、システムエンジニアやプログラマーという名称は、システム開発の開発フェーズに着目してエンジニアを分類した呼び方です。
そのため、インフラエンジニアという職種の中に、「設計」を担当するシステムエンジニア、「構築」を担当するプログラマーがいるという関係となります。
もっとも、インフラエンジニアが実際の構築過程において、プログラミングをする機会は多くありません。
したがって、プログラマーは、アプリケーション開発における構築(コーディング)を担当するエンジニアを指すことがほとんどです。
2.インフラエンジニアの仕事内容は大きく分けて4つ
次に、インフラエンジニアの仕事内容について説明していきます。
以下のとおり、仕事内容は大きく分けて、要件定義、設計、構築、運用・保守に分けることができます。

図5:インフラエンジニアの仕事内容の4段階
それでは、1つ1つ確認していきましょう。
2-1.要件定義
インフラエンジニアの仕事内容の第1ステップは、要件定義です。
2-1-1.要件定義とは?
要件定義とは、ITシステムのインフラを構築するにあたり、クライアントにヒアリングを行い、インフラの仕様を取り決めることを指します。
具体的には、以下の3つを取り決めます。
要件定義の3つの取り決め
- 機能要件と非機能要件
- インフラの構成
- 見積りと調達
以下で確認していきましょう。
2-1-1-1.機能要件と非機能要件
まず、機能要件と非機能要件を検討します。
メモ
- 機能要件:ユーザーが行う具体的な処理を行うための要件
- 非機能要件:サービス提供のレベルを表す要件(「可用性」、「性能・拡張性」等)
機能要件とは、クライアントが「システムを使ってこの作業をしたい」という目的を実現するための「具体的な処理」と言い換えることができます。
例えば、金融システムであれば、顧客の預金残高を管理する機能や、残高や融資の金額から利息を計算する機能などです。
こういった機能要件は、アプリケーション側で実現する場合が多くなりますが、インフラ側で担当する処理もありその点を取り決めていきます。
一方で、非機能要件とは、機能(=具体的な処理)を質の高い安定した状態で提供するための要件を指します。
例えば、非機能要件の一つとして、「可用性」というものがあります。可用性とは、システムやサービスを安定して継続的に利用するために取り決める項目です。
具体的には、定期的なメンテナンスの作業を含めて、どのようにシステムを運用していくかという運用スケジュールを計画します。
また、もしシステムが停止してしまった場合に、どのくらいの時間でどのように復旧させるかを取り決めます。
2-1-1-2.インフラの構成
次に、インフラの構成を取り決めます。
インフラは、サーバー、ストレージ、ルーターなどの「ハードウェア」、OSやミドルウェアなどの「ソフトウェア」で構成されています。
前項で定めた機能要件と非機能要件を実現するために、「どのくらいの処理速度が出るサーバーが必要か」、「ネットワークの回線速度はどれくらい出ればいいのか」など、
全体として必要な処理能力から個々のサーバー等のハードウェアのスペックとその構成を決めていきます。
2-1-1-3.見積りと調達
最後に、見積りと調達を行います。
検討したインフラの構成図をもとに、使用するサーバーやストレージなどの「ハードウェア」、データベースや運用管理ソフトなどの「ミドルウェア」について、どのくらいの費用がかかるか見積もりを行います。
見積りのあとは、それぞれの製品を扱うメーカーへ調達を実施していきます。
2-1-2.要件定義のポイント
要件定義のポイントは、アプリケーション開発側と綿密なコミュニケーションを取ることです。
具体的にはインフラ側でも、アプリケーション開発側の業務要件や機能要件(先述したクライアントが行う操作または処理のこと)を、把握しておくことが重要となってきます。
そうすることで、システムの全体の方向性が一致し、インフラとアプリケーションで整合性のある要件定義を行うことができます。
もし意思の疎通が不十分ですと、「この部分の機能が欠けている」、「このスペックは多すぎる」といった認識の相違から生じる問題が後から出てきます。
このような状況避けるために、インフラ側とアプリケーション側で常にコミュニケーションを取っていくことが肝要と言えるでしょう。
2-2.設計
インフラエンジニアの仕事内容の第2ステップは、設計です。
2-2-1.設計とは?
設計とは、文字通り、システムのインフラを構築する上での設計書を作る工程です。
要件定義で作成した要件定義書をもとに設計書を作成します。
2-2-2.設計の段階は2つある
設計は、基本設計と詳細設計の2つの段階で構成されています。
基本設計では、システム構築する時の大きな方針を検討・設計します。
具体的には、サーバーはオンプレミスかクラウドか、OSはどれにするのか等、もっとも土台となる部分を決定します。
詳細設計では、基本設計をもとに、使用するハードウェアやソフトウェアのパラメータ設定(数値設定)を行なっていきます。
次の段階である構築をスムーズに行うために、抜けや漏れがないようパラメーターの設定を詳細に取り決め、設計書に起こしていきます。
2-3.構築
インフラエンジニアの仕事内容の第3ステップは、構築です。
2-3-1.構築とは?
構築とは、設計の工程で作成した設計書に基づき、サーバーやネットワークの設定を行う作業を指します。
構築するシステムは、「〇〇環境」と呼ばれることがあり、実際に稼働する本番環境の他に、開発環境、検証環境の構築も行います・
メモ
- 本番環境:実際にユーザーが使用するシステム環境
- 開発環境:本番環境で使用するプログラムを組むための環境
- 検証環境:開発環境で作成したプログラムを検証(テスト)する環境
担当するのはシステムエンジニアやプログラマーです。構築後のテストでは、構築したシステムが設計書に記載された仕様通りかを検証します。
テスト計画書とテスト仕様書を作成して、テスターと呼ばれる人が仕様書をもとにテストを実施していきます。
2-3-2.構築時に注意するポイント
構築時に注意するポイントは以下の2点となります。
構築時に注意するポイント
- 障害対応を考慮したサーバーやネットワークの設定
- 災害や事故に備えたバックアップシステム
1つ目は、障害対応を考慮した設定です。サーバーやネットワークの一部に障害が起きても、全体や他の部分に影響が出ないように、構築を行なっていきます。
例えば、サーバーが複数台で運用されている場合、ある1台が障害で停止してしまった場合に、その1台分の処理(負荷)を残りのサーバーに分散させるようにします。
その間に、障害が起きている1台を復旧させる作業を行います。
2つ目は、災害や事故に備えてバックアップシステムです。
特に金融システム等、システムの停止が短時間でも許されないような社会的に重要なシステムでは、先述した本番環境の他に、別の離れた立地の場所にバックアップの環境を構築します。
万が一、本番環境に障害が発生しシステムが停止してしまった場合、その復旧までの間バックアップ環境に切り替えて、システムを継続させていくようにします。
2-4.運用・保守
インフラエンジニアの仕事内容の第4ステップは、運用・保守です。
ここでは、運用・保守の概要と、代表的な業務である障害対応、キャパシティ管理について解説します。
2-4-1.運用・保守とは?
運用・保守とは、システムをリリースしてから(稼働が開始してから)、システムを安定した状態で稼働させるために行う仕事です。
運用では、稼働しているシステムに異常がないか、日々監視します。
保守では、ハードウェアやソフトウェアに関して、定期的なメンテナンスやアップデートを行います。
2-4-2.障害対応
障害対応は、システムに障害が発生した時に行う業務です。
障害が起きた時に早急に、以下のステップで対処します。
障害対応の3ステップ
- ログ(統計情報)を取得し、影響範囲の特定と原因の調査
- 緊急の対処の実施
- 再発防止策の実施
まず、ログ(統計情報)を取得し、障害がどこで発生していてどこまで影響しているか、その原因はどこにあるのかを特定します。
ログ(統計情報)とは、サーバーのCPUの使用率、ネットワークの回線の使用率など、稼働中のハードウェアやソフトウェアの数値を定期的に記録したものです。
次に、発生している障害の影響を最小限に留めるために、緊急の対策を実施します。
サーバーのCPUの使用率で言えば、CPUの容量を過度に消費しているタスク(サーバーが行っている処理や業務)を停止しします。
それにより、CPUの使用率を一時的に下げて、サーバーがダウンしないように対処を行います。
最後に、再び同じことが起こさないよう、再発防止策を実施します。
ここでもサーバーのCPUの使用率で言えば、サーバーで常時動いているタスクのリソースの配分(CPUの使用率の割り当て)を変更したり、そもそものサーバーのCPUを増設したりします。
いくつある防止策の中で、費用対効果や安定性などの様々な観点を踏まえ、クライアントと検討を重ねて最善の方法を決定します。
2-4-3.キャパシティ管理
キャパシティ管理では、データ容量や処理速度などの数値を適性な状態に維持します。
サーバーのCPU利用率やストレージ使用率が設計書で定めた基準値を超過すると、サーバーのダウン、ひいてはシステムの稼働停止になる恐れがあります。
それを防ぐために、キャパシティに関わる数値を常に観測・収集していく必要があります。
システムの種類にもよりますが、運用監視の現場では24時間の交代制で監視員が常駐して、システムのキャパシティが適性な状態であるかを監視しています。
3.インフラエンジニアの4つの分類
インフラエンジニアは、仕事内容や管理する機器に応じて、大きく以下の4つの職種に分類することができます。

図3:インフラエンジニアの4つの分類
参考:ナビナビ|エンジニア 仕事内容【適性がわかる】ITエンジニア20種類の仕事内容・年収・将来性をわかりやすく解説!(公開日:2022年3月22日)より作成
以下、それぞれ詳しく見ていきましょう。
3-1.サーバーエンジニア
サーバーエンジニアは、システムのインフラにおいて、サーバーの設計、構築、運用・保守を担当するエンジニアを指します。
サーバーは、ユーザーからの顧客情報の出し入れなどのリクエストに応じて、その結果のレスポンス(要求された顧客情報)を返す役割を果たします。
単純に考えると、皆さんが普段使用しているパソコンが何十倍、何百倍もの規模になったものと考えても良いでしょう。
設計の段階では、クライアントとのヒアリングを通じて、要望を満たすシステムを実現するために、サーバーのスペック(メモリ等)や使用するOSを検討します。
構築の段階では、物理的なサーバーのラッキング(サーバーをサーバー専用のラックに設置すること)、OSやソフトフェアのインストール、各種パラメーター(数値)の設定を行います。
運用・保守の段階では、メモリやストレージなどの容量が規定値に収まっているか監視し、必要であれば負荷を分散させたりパラメーターの設定を変更します。
また、OSやソフトウェアの定期的なアップデートも大事な業務です。
3-2.ネットワークエンジニア
ネットワークエンジニアは、システムのインフラにおいて、ネットワークの設計、構築、運用・保守を担当するエンジニアを指します。
非常に単純に言うと、家でインターネットを始める時に行う一連の作業を、さらに複雑したのがネットワークエンジニアの仕事です。
設計の段階では、要件定義書をもとにネットワークの構成やそれに応じたネットワーク機器(ルーターやスイッチ等)の選定を行います。
構築の段階では、設計段階で策定したスケジュールと設計書に基づき、ルーターやスイッチの設置・設定を行なっていきます。
運用・保守の段階では、システムが稼働し続けるための業務を行います。具体的には、日々のネットワークの回線の使用量を観察して、必要であれば機器の設定の変更を行います。
また、トラブルが発生した場合は、運用監視ツールなどを利用して原因箇所を特定して、設定の変更やネットワーク機器の交換をします。
さらに、トラブルに備えて予備のネットワーク機器を用意しておいたり、トラブル発生時の対応プランを考えます。
3-3.セキュリティエンジニア
セキュリティエンジニアは、システムのインフラに関わるセキュリティの設計、構築、運用・保守を担当するエンジニアを指します。
企業における個人情報等の情報漏洩問題が取り沙汰にされることがありますが、それらの脅威から企業や個人を守るのもセキュリティエンジニアの仕事です。
企画/提案の段階では、クライアントのITシステムを把握し、発生しうるリスクを想定し、必要なセキュリティの施策を検討します。
設計の段階では、要件定義の段階で取り決めたセキュリティ対策の方針にしたがって、それをどう実現するか具体的な方法を決定します。
構築の段階では、サーバーやネットワーク機器、OS等に対して、適切なセキュリティの設定と対策を行います。
構築後には、脆弱性診断と呼ばれる検査を行い、設計書で取り決めた内容を満たしているかどうかを確認します。
運用・保守の段階では、システムのセキュリティが危険にさらされないように日々システムの状況を監視します。
具体的には、サイバー攻撃を受けた時に対象機器の設定を変更するなどして、サイバー攻撃の被害を最小限に食い止めるようにします。
3-4.データベースエンジニア
データベースエンジニアは、システムのインフラにおいて、データベースの設計、構築、運用・保守を担当するエンジニアを指します。
設計の段階では、要件定義書で定めた仕様を満たすように、テーブルやカラム(データを収める箱のこと)を設計します。
その際には、システムの特性に応じて最適なデータベース製品を選定します。代表的な製品としては「Oracle」や「Microsoft SQL Server」がメジャーです。
構築の段階では、設計書にもとづきテーブルやカラム等の各種パラメーターを設定します。主要データベース製品では、GUIで直感的に操作して設定を行なっていきます。
運用・保守の段階では、データベースを扱う言語である「SQL」を使用して、データベースのチューニング(数値の調整)を行います。
データベースのインプットとアウトプットが滞りなく進むように、適性な状態を維持していきます。
また、データベースには個人情報等の機密情報を扱う場合がほとんどであるため、セキュリティの対策も必須となります。
具体的には、不性アクセスを防ぐためにアクセス権限の管理を行なったり、万が一のデータの紛失に備えるために定期的なデータのバックアップも行なっていきます。
4.まとめ
この記事では、インフラの説明から始まり、インフラエンジニアの実際の仕事内容について解説してきました。
インフラエンジニアは、システム開発をインフラとアプリケーションの2つの領域に分けた時に、システムの土台となるインフラを担当するエンジニアを指します。
そして、そのインフラを構成するハードウェアやソフトウェアの管理対象によって、サーバーエンジニア、ネットワークエンジニア、セキュリティエンジニア、データベースエンジニアの4つの職種に分類できます。
それぞれの職種で扱う機器や製品は違えど、システム開発における大枠の流れは同じとなります。
この記事を通して、一人でも多くの方がインフラエンジニアという職種について理解を深めていただけますと幸いです。
※この記事を読んでインフラエンジニアという仕事に興味を持った方は、以下の記事をぜひご覧ください。