こんにちは、28歳の時に未経験からITエンジニアを目指したniyuta(@niyuta)です。

この記事は、下記の記事の続き的な内容です
今回は、インフラエンジニアについて、特にサーバーエンジニアの仕事内容について書きます。
サーバーエンジニアの話をする為には、まずインフラエンジニアにはだいたい2つの種類があるという話をします。


どちらに進んでいくかで学ぶべき分野も大きく違うんで、最初に少しはイメージしてた方がいいですよ
インフラエンジニアのインフラとはどういう意味か?
まず、インフラエンジニアのインフラとは何なのかについて説明をします。
インフラエンジニアのインフラとはインフラストラクチャー(infrastructure)の略で日本語では、基盤のことを指します。
あなたが日常で利用している「電気」「ガス」「水道」といったものもインフラと呼ばれており、インフラエンジニアが構築する、情報ネットワークは、電気・ガス・水道に次ぐ第4のインフラと呼ばれています。
情報の受け渡しや保管を行うための「サーバー」と、ユーザーとサーバー(もしくは、サーバー同士やユーザー同士)が情報のやり取りを行うための道である「ネットワーク」で構成されているものをITインフラと呼びます。


インフラについてはイメージが湧きましたでしょうか?
インフラエンジニアには2種類ある
情報の受け渡しや保管を行う「サーバー」を設計、構築(導入)、運用保守をするのが、サーバーエンジニアです。
ユーザーとサーバー(もしくは、サーバー同士やユーザー同士)が情報のやり取りを行うための道である「ネットワーク」を取り扱うのがネットワークエンジニアです。


今回はサーバーエンジニアについて深掘りしていきます
サーバーエンジニアのお仕事とは?
サーバーエンジニアは、サーバー機の設計・構築(導入)・運用保守をしますが、なかなかに経験値が必要になってくる職種と言えます。
最初に行うシステム(サーバー機)の設計……この設計というのがクセモノです。
システム設計
まず、顧客が何がしたいのか、聞くところから始まります。
顧客がしたいことを確認したら、そこからサーバー(システム)の構成を決める訳です。
例えば、顧客が望むものが業務システムで、顧客企業の社員が部品の在庫状況を確認出来るシステムが欲しい と言っているとします。
顧客から具体的な構成例がでることは、まずありません。
ただ、在庫状況が確認できるシステムが欲しい と……ただそれだけ言われることが多いです。


そしたらば……
社員さんが使うインターフェースをどうするか、社員さんはどのような状況で在庫を確認するのか? というところから聞いていきます。
社員さんが自分のパソコンで在庫確認をするならWebブラウザで確認できるのが一番良いですが、ブラウザだけで難しいような機能を付加するならVBのようなプログラムでインターフェースを作ることになります。
在庫を管理するとなると必要になるのがDBサーバーです。
大規模なものになるならOracleなどを使った方が良いでしょうが、小規模で費用をかけたくないなら、MySQLのようなDBを使います。
無料のDB(ツール)を使う場合、しっかりとリスクの担保を取らなければいけません。
システム全体のイメージが固まったら、次は各サーバーの構成を考えなければいけません。
きっと、サーバーエンジニアとして自分が所属している会社に得意なメーカーというのがありますので、そのメーカーで構成を組むことが多くなると思います。
私がインフラエンジニアをしている時の会社はHP(ヒューレットパッカード)が得意な会社でしたので、ずっとHP(ヒューレットパッカード)ばかりで構成を組んでおりました。
たまにNECやIBM、DELLなどの指定で発注が来るとドキドキしてました。
(日頃触らないメーカーなので……)
サーバーの構成まで決まったら顧客向けに見積もりを作ります。


ここで頭が痛いのがライセンスです
これは本当にかなり気を使います。
見落としてはいけませんし、利用するソフトウェアによってライセンス形態はいろいろです。
サーバー1台につき、1ライセンスのものや、サーバーのCPUの数によってライセンス数の変わるものや……
あと、Windowsサーバーのクライアントにもライセンス料がかかったりします。(逆に特殊なケースだとかからなかったり……)
顧客のところに納品したシステムが数年後、ライセンス違反だったと発覚したりすると、大変なことになります。
自分一人では背負いきれません。


と言う訳で、結局はなんでもかんでもメーカーに問い合わせます
そして構成が全て決まり、見積もりが完成したら顧客に提出をします。
がっ!
高いと言われて見積もりを作り直すこともしばしばです。
すると、サーバーのスペックをワンランク下げてみたり、アプリサーバーとDBサーバーを同居させてみたり……
そしたら、また……


ライセンス料、計算し直しやないかーい
と、なったりします。
そして、見積もりがOKもらえて、発注をしてもらったら、サーバーの設定内容を決めます。(先に決める場合もありますが、見積もりに文句が出て、サーバー構成が変わると設定内容も変わりますので、最初にガッツリと決めない方が良いです)
構築・導入
一つのシステムでサーバー機を何台構築して導入することになるかはまちまちです。
サーバーの台数がとんでもない数だった場合は他のサーバーエンジニアの助けを借ります。
しかし、例えば台数は多いけど、全てのサーバーが同じ構成の場合は、手順書を作成して、サーバーエンジニア一歩手前ぐらいの人にお願いすることもあります。
一人前のサーバーエンジニアを使うと単価が高いので……
サーバー1台の基本設定だけでも下記ぐらいの作業量があります。
→メモリを増設したり、ネットワークカードを増やしたりです
・ファームウェアを最新までアップデート
・ServerOSをインストール
・ウィルス対策ソフトをインストール
・UPS管理ソフトをインストール
そして各サーバーを役割別に設定します。
それがWebサーバーの役割を持つならApacheとか。DBサーバーならOracleなどをインストールして設定をします。
難しい構成だと、設計の段階で事前に検証をしたりもします。
このOSのこのバージョンに、このアプリのこのバージョンはインストール出来ない と言う仕様があったり、このアプリのこのバージョンとこのアプリのこのバージョンの連携は動作しないなど、とんでもないことがたまに起こります。
冗談抜きでこの辺は


勘です。勘で、怪しいな……と思って検証したりします
だいたいは、自分に経験があるソフトウェアで勝負をしますが、どうしても経験の無いアプリケーションを導入しないといけない時もあります。
そんな時はネットから必死で事例を探したり、結局はメーカーに問い合わせです。
そして、社内で構築し終わった機器を顧客企業に導入します。
ここも案外、大仕事です。
だいたいのサーバーエンジニアは導入じたいにも手順書やチェック表を作ります。
顧客のところで動作テストが終われば、構築・導入フェーズは終了です。
運用保守
システムの運用は実際にシステムを利用する企業のすることですが、大規模なシステムを導入すると、導入した企業が保守契約を結ぶ事が多いです。
トラブルや不具合が出たら、全部対応しないといけません。
会社によっては、サーバーを設計、構築・導入するエンジニアと運用保守するエンジニアが分かれていたりします。
運用保守を担当するエンジニアの意見としては……


当たり外れの差が半端ないっす!
いや、本当に!
やっぱりサーバーエンジニアの中にも設計が上手な人と、下手な人がいる訳ですが、とんでもない(下手くそな)設計のシステムの運用保守を担当すると、どうしようもなく手がかかります。
ここからは愚痴になるかもですが、新しい技術を試したがるサーバーエンジニア!


ヤバいっす
新しい技術に挑戦することはいいことですよ。エンジニアなんだから。
新しい技術をどんどん吸収しないといけません。
でも……未知じゃないっすか?
もっと検証しろよ!! と言いたくなります。
費用的にそこまで検証が無理なら、自分の経験のある堅実な方法で設計しなさいよ!


てな感じです
最近はクラウドの発達により、自社で物理サーバーを持つ企業が少なくなってきました。
そのため、サーバーエンジニアは、クラウドに関するスキルも身に付けないといけないと思います。


私はとりあえず、AWSを扱えるように頑張っております
↓
この記事に書いてあるサーバーエンジニアの仕事内容は、今後、どんどん変わっていくと思います。
物理サーバー → クラウド
と言うように。
しかし大きくは変わらないでしょう。
サーバーエンジニアが構築するのはサーバーです。
要はそこに物理的な筐体があるか無いかだけの差のような気がします。


この記事があなたのITエンジニア人生の助けになれば幸いです
コメント