ITインフラ運用の要!インフラエンジニアが行う仕事内容とは
皆さんが、何気なく使用しているスマホゲームや便利アプリなどのWebサービスはアプリケーション単体で動作している訳ではなく、インターネットの先にあるITシステムと通信してその便利さを実現しており、そういったさまざまなITインフラの下支えをしているのがインフラエンジニアです。
今回は、そんなインフラエンジニアが担う仕事内容を包括的に解説していきます。インフラエンジニアの仕事内容に興味のある方や仕事内容を見直したい方は是非、参考にしてみてください。
目次
インフラエンジニアが行う3つの中核的な仕事内容
インフラ設計
インフラ設計とは、アプリケーション側の要求から適切なシステム構成、ネットワーク構成を導き出す仕事です。ITシステムでは、設計していたものが意図した通り動かないということもよくあり、そのようなケースを回避するためにインフラエンジニアは多くの経験を積む必要があります。インフラ設計で行う主な業務は、要件定義と設計です。
要件定義
対クライアントでのインフラ構築の場合、要望をヒアリングし、実現するためにはどんな機材が必要か、どんな設定が必要になるかを要件定義します。 自社の場合は、インフラ上の問題をインフラエンジニア自身が問題提起したり、他のメンバーから要望を受けたりして、問題解決のために要件定義を行います。 要件定義で必要なのは、どこに改善の余地があるのか、どのようなフローで改善していくのがよいのかを、機材の機能面からコスト面までを含めて整理できる論理的思考力です。
設計資料の作成
要件定義でまとまった方向性を、設計資料に落とし込んでいきます。企業によりますが、小規模なインフラ構築では資料にせず、知識と経験で取り組む場合もあります。 設計は非常に重要で、その後の構築業務でタイムロスやトラブルを回避するためには、設計段階での具体的な構成や設定値などをあらかじめ決めておく必要があります。 それこそ、大規模な構築の場合は、1人ですべて行うのは難しいです。その場合、他の作業者に依頼することになるため、丁寧な設計書や仕様書、手順書といった資料に落とし込まれていれば、他者を巻き込んだ構築でもスムーズに進めていくことができます。
インフラ構築
インフラ構築とは、あるシステムが問題なく動作するための基盤(インフラストラクチャ)を構築することです。主な業務としては、インフラ設計に基づいた機材の調達、設置や配線といった物理セットアップから電源管理などです。
物理セットアップ
物理セットアップの仕事内容は、調達した機材を箱から出してラッキングする作業ですが、電源効率、排熱効率、ネットワークケーブルの配線など考えなければならないことが多くあります。ここを疎かにするとささいなトラブルでシステム障害などの問題が発生する場合があります。ここでは几帳面さが特に必要になるでしょう。扱う機材はサーバー、スイッチ、ロードバランサーといったネットワーク機器が中心となります。
インフラ機材のサーバーやスイッチなどは、海外からの取り寄せとなったりする場合が多く、納品まで数ヵ月かかる場合も珍しくありません。そのため、インフラエンジニアには構築日までに必要な機材がすべてそろっているよう、発注管理もできる必要があります。
電源管理
電源管理はいまいちピンとこないかもしれませんが、インフラエンジニアにとって必要な仕事です。サーバーラック1本でラックに引き込める電源の容量は限られており、これを超えるとサーバーは停止してしまいます。そうならないためにも、インフラエンジニアはラックの排熱効率と電源容量のバランスを見ながら、機器を設置していく必要があるのです。ここでは、経験が必要になってきます。
インフラ運用
インフラ運用は基本的に24時間の作業になります。もちろん、1人の人間で行うことは不可能なので、交代制になるのが一般的です。インフラ運用の主な業務は障害対応から、キャパシティ管理、負荷分散などです。
障害対応
障害対応は、障害を検知する一次対応から問題の切り分け、復旧作業などが仕事内容としてあります。機器の故障などであれば、機器の交換で対応します。アプリケーション不具合の場合などは、インフラエンジニアだけ対応するのではなくアプリケーション開発チームを巻き込んでの対応になります。
なお、実際に起こりうる運用上のトラブルについては、本記事下部の「インフラエンジニアが知っておくべき運用トラブルとその復旧について」の見出しでも紹介しています。
キャパシティ管理
SNSなどで自社サービスやプロダクトが一度注目されると、瞬時に膨大なアクセスが発生します。そのため、キャパシティ管理はインフラエンジニアにとって欠かせません。
主な業務内容としては、あらかじめ、そのITシステムがどの程度の負荷まで耐えうるかを事前に想定・検証しておく作業です。システム開発会社とアプリケーション開発会社が別開発などの場合は、この作業がシステム会社側のコミットと取られる場合もあり、障害時の責任の所在を追求された場合の重要な数値となることがあります。
原因の切り分けに関してはあらかじめ切り分けがしやすいように、システム監視を仕掛けて置くことが一般的です。システム監視はポイントごとに仕掛けられており、どこのポイントからアラートが検出されたかによって切り分けを行います。
負荷分散(ロードバランシング)
サーバーの負荷対策も運用するうえで重要な業務です。ユーザーからのアクセスなどサーバーに対する負荷を複数のサーバーに分散させるため、ロードバランサーを設置したり、データベースサーバーのデータベース使用量に応じたバッファの設定に関しても考慮します。インフラエンジニアはネットワーク、サーバーの管理・監視を行ううえで管理能力が問われ、経験と幅広い知識でシステムの障害率を低下し、メンテナンス性の向上を図ります。
専門性が発揮されるインフラエンジニアの業務連携
企業によっては担当領域の違いから、インフラエンジニアをサーバーエンジニア、ネットワークエンジニアと呼ぶ場合もあります。サーバーエンジニアはサーバー構築が中心業務であり、ネットワークエンジニアはネットワーク機器の設定が中心業務です。それぞれの業務は厳密に分けられていない場合もありますが、基本的な仕事内容としては、いずれもITインフラの構築・保守・運用に関わるミドルウェアの設定やチューニングとなります。
インフラエンジニアという職種については、「インフラエンジニアとは - 業務内容や人材市場価値まで詳細解説」という記事でも解説していますので、是非こちらもご覧ください。
インフラエンジニアとして連携が多いそれぞれのエンジニア
ここでは、インフラエンジニアとして互いに繋がりのある職種について紹介します。一緒に関わることの多いネットワークエンジニア、サーバーエンジニア、データベースエンジニアについても軽く触れておきましょう。
ネットワークエンジニア
スイッチ・ルーターなどといったネットワーク機器のスペシャリストで、IPv4・IPv6など、ネットワークのプロトコルを熟知した通信の専門家と言えます。近年のクラウド化によってネットワークエンジニアにはクラウドに関する知識も求められるようになってきました。
サーバーエンジニア
Linuxサーバーを構築するスペシャリストです。Linux以外のサーバーを構築することもありますが、現在最も主流であるLinuxサーバーに限定してお話したいと思います。クラウド化が進んで、Linuxサーバーを構築する機会は激増していますが、結果的に1台のサーバーに丹念に作りこんでいくような仕事の仕方は難しくなっています。「Infrastructure as Code」のようにサーバー構築のコード化などがエンジニアに求める場合があります。 サーバーエンジニアの仕事内容とは、サーバーの環境構築ですが、サーバープログラマーが兼任する場合もあります。
データベースエンジニア
MySQL・Oracle・PostgreSQLといったリレーショナルデータベースのスペシャリストです。
近年、メモリ、ハードディスクといったハードウェアの進化により、多少、設計に無理があるデータベースでも動くようになってきているので、データベースエンジニアにとってはよい時代となりつつあるかもしれません。データベースエンジニアは、コンピュータ内の情報を管理する専門家と言えます。
ITシステムの状態により、インフラエンジニアの関わり方も変わってきます。ここでは、以下の3つのフェーズについて見ていきましょう。
ITインフラ設計から構築・運用までのフェーズ
インフラエンジニアが携わることになるITシステムにはライフサイクルがあります。このような場面をフェーズと呼び、携わるエンジニアの仕事内容や求められるスキルやモチベーションなども異なってきます。自分がどのフェーズに携わるのに向いているのかも職種を選ぶ際の重要な要素になります。
設計フェーズ
システム設計、ネットワーク設計を行います。多くの知識と経験が必要なフェーズなので、インフラエンジニアとしてすぐに担当することは難しいでしょう。
アプリケーションの要求を聞き出したり、コストを考慮したりなどITスキルとは異なる部分も要求されるフェーズです。
構築フェーズ
設計を基にして実際にサーバーやミドルウェアのインストール・アプリケーションのデプロイメント環境を作っていくフェーズです。多くの作業が発生するフェーズなので、インフラエンジニアがメンバーとして参加できる可能性は大きいです。
運用フェーズ
できあがったシステムを運用していくフェーズです。数年間・24時間、長丁場になるので、設計・構築とは異なるモチベーションで臨む必要があります。運用・保守を専門に行う会社もあります。
どのフェーズにどの仕事で関わるかによって、仕事内容が変わってきます。
ここでは、エンジニアのポジションをひと目でわかるように、職種×フェーズのマトリックス図を用意しました。
インフラエンジニアとして、システム保守を専門で謳っているような企業に就職すれば、仕事内容として保守業務を専門に行うことは可能かもしれませんが、システム企画や構築などを謳っているような企業では、システム業務の全般を行っていることが多く、必ずしも自分のやりたいポジションにつけるかどうかもわかりません。チームの人数の関係で掛け持ちせざるを得ない場合もありますし、まず自社の空気に慣れてもらうために、敢えて保守部門を担当させられることもあります。構築チームのリーダーやITアーキテクトなど、より上位のポジションを目指したい方はまずは会社に与えられたミッションで頭角を現して、会社に認めてもらう必要がある場合が多いです。
構築チームの仕事内容としては、システム開発会社などに所属する人間で、インフラエンジニアの多くがあたるでしょう。近年はクラウドを利用することも多く、システム構築の際、ネットワークに関する深い知識はあまり必要なくなってきています。かわりにデータベースのパフォーマンスチューニングなど、アプリケーション開発チームからの要望に応えるため、データベースの知識を要求される場合が多いです。
システム保守の仕事内容は、システム保守会社などに属する人間で、出来上がったシステムを監視、運用することを専門にしています。24時間体制で、システムに関わることが多く、交代制の勤務となる場合もあります。障害検知後の対応は、構築チームに引き渡しする場合などが多く、システムやその上で動いているアプリケーションに関する深い知識は不要な場合が多いです。
インフラエンジニアが知っておくべき運用トラブルとその復旧について
ITシステムは万全ではなく、消耗パーツなどもあるため、当然故障します。また、クラウド業者・電力会社・公衆回線キャリアなど外的要因によってシステムトラブルを発生することも考えられます。ここでは、インフラエンジニアの仕事内容に深く関係するITシステムの運用トラブルについて見ていきましょう。
ハードウェアのトラブル
ハードウェアは機械なので、不具合は度々発生します。ハードウェアの不具合は、導入から最初の1、2ヵ月程度に発生が集中します。いわゆる初期不良です。
この期間を切り抜ければ、2、3年程度安定して動作します。この2、3年が過ぎてしまうと、今度は経年劣化で故障が増え始めます。この故障発生の流れがお風呂のバスタブと形が似ているので、バスタブ曲線と業界では呼ばれています。
メーカーの通常保守が3〜5年で切れるので、このタイミングで機種の交換をするのが望ましいとされています。
ソフトウェアのトラブル
ソフトウェアの不具合は、いわゆるバグで発生します。
- 永続的にメモリを確保しつづけて、開放しないプログラム
- 実行に数10秒〜数100秒かかってしまうSQL
など、開発者のPCでは気がつけなかったが、実際にITシステムに投入して、数千人、数万人のデータが投入されてから発見されるバグなどもあります。
組み合わせによるトラブル
非常にまれですが、ハードウェアバグなのか、ソフトウェアのバグなのか、見分けがつかない場合があります。
たとえば、ハードウェアの冗長化機構が激しく切り替わりを繰り返すので、ハードウェアの故障かと思って調査をしてみたら、ソフトウェアがハードウェアの冗長化プロトコルに干渉しているが原因だった、など。
これらの障害に対応するために、インフラエンジニアには、ハードウェア、ソフトウェアの両方の知識を必要とする場合があります。あらかじめ、どんなトラブルシューティングがあるか把握しておけば迅速な対応に繋がります。また、最低限のコマンドを押さえておけば、障害がどこで起こっているのか、システム処理の流れを追って原因調査ができるでしょう。
インフラエンジニアに対して求められる能力とは
システム構築、特に運用となってくると、1つのシステムに数年単位で関わることがあるため、インフラエンジニアには精神面と体力面でも忍耐力が必要になります。物事をロジカルに把握し、曖昧なまま業務を進めない(もちろんですが、報告・連絡・相談といった基礎が当たり前に行える)、判断力もインフラエンジニアには求められます。
また、上でも述べましたが、いくら高度なITインフラを構築・運用できる人でも、トラブルが発生することはあります。重要となるのは、そのトラブルに対してそのままにせず、失敗から学び、より高度な構築を行えるよう学習する姿勢が大切です。トラブル対応もインフラエンジニアの重要な業務の1つなので、トラブル発生時の対応力も身に付けておくことが重要です。
まとめ
いかがでしたでしょうか?インフラエンジニアの仕事内容は他のIT関連エンジニアと比べても表に出る仕事が少ない分、目立つ仕事ではないと感じるかもしれません。反面、ITシステムを下支えする重要な仕事なので、インフラエンジニアでの経験はその後のキャリアにおいてとても価値のあるものとなるでしょう。
ITインフラと表裏一体の職種なため、依然需要の高い仕事なので、給料やキャリアの面でも今後期待ができる職業になります。是非、インフラエンジニアのキャリアを考えるうえでの参考にしてみてください。