インフラのシステムエンジニアってどんな仕事?

Internet

私は前職インフラのシステムエンジニアを約5年ほどしていました。その時に苦労したのが自分はどんな仕事をしているか説明する時です。
よくシステムエンジニアというとjavaとかCとかのプログラマー系の人を想像するかと思います。しかし、私はインフラのSE。基本的なプログラムの知識はありますがjavaもCも書けません。
この記事ではインフラのシステムエンジニアというもの知ってもらうために、インフラ系のシステムエンジニアはどんな仕事をしているのか紹介します。

1.インフラとは

そもそもインフラは略語で正式名称はインフラストラクチャ(infrastructure)といいます。そう、英語です。これをgoo辞書で調べてみると以下の意味が出てきます。

  • (道路・鉄道などの)基幹施設, インフラストラクチャー;(経済)基盤
  • (団体・組織などの)下部構造, 下部組織.
  • 軍事施設[基地].

ニュースとかでたまにインフラって言葉が出てきますよね。つまりIT用語ではなく一般的な用語なのです。インフラ系SEもOSやRDBMS、WAS等の製品を扱う仕事なのでまさに基盤や下部構造というイメージです。

1-1.一般用語なの何故伝わらない?

この単語自体大学入試レベルらしいので多くの人が意味を知っている単語ではなさそうです。ですが、一番の原因は一般の人々には目の触れる事のない裏側の領域を担当しているからだと思います。逆に表側は皆さんご存知のショッピングサイトやブログサイト等のホームページです。
普通にショッピングサイトで買い物をしたり、ブログ見たりをしていると思いますが当然それは物理的なサーバー(業務用パソコン)にWEBサイトを見れるだけの装備がされています。でもそんな事を意識したりしませんし、実際に見る機会なんて普通に生きていたら絶対にないですよね?つまり、具体的なイメージとして想像できないため何をしているかよく分からないのです。
私は仕事で初めてデータセンター(サーバーがまとめて管理されている場所)にいった時はまるでメタルギアソリッド2のような施設だった事を今でも覚えています。

2.JAVAで構築されたショッピングサイトの例

というわけでその裏側はどんなふうになっているのか見てみましょう。下の図はJAVAで作られたショッピングサイトを例にその裏側を絵で表してたものとそれぞれの簡単な説明です。もちろん、すべてのショッピングサイトが同じ構成になっているわけでも他のタイプのサイトが同じ構成になっているわけでもありませんが大体は同じような感じだと思います。

システム構成図
パソコン
普段私達が使っているパソコンです。パソコンからインターネットに繋げてショッピングサイトを見たりしていますよね。関係ありませんが私はWindowsもMacも所持していますがやはりMacのデザインは見た目も機能も素晴しいと思います。
WEBページ
これが実際に皆さんが普段みているショッピングサイトです。中身はHTMLというプログラム言語で書かれたファイルです。WEBブラウザがHTMLの内容を解釈して私たちが見れるように画像や文字などを表示してくれます。HTMLをプログラム言語といってよいのかは少し疑問ですがあえてプログラム言語としています。
JAVA
ショッピングカート機能や検索機能などの見た目ではない部分を実現するためのプログラム言語です。よく動的コンテンツなんていいますよね(flashとかは違いますよ!)。ちなみにこの部分はphpで作られいるのが主流かと思いますがphpの場合はWEBサーバー上で動作するのでアプリケーションソフトを必要としません。アプリケーションソフトの説明も含めるためにJAVAにしています。
WEBソフト
このソフトがインストールされたサーバーをWEBサーバーなんて呼び方します。WEBブラウザからの要求に対してデータを処理します。Apache、IHS、IIS等が有名な製品です。
アプリケーションソフト
簡単にいうとJAVAを動かすためのソフトウェアです。このソフトがインストールされたサーバーをアプリケーションサーバーなんて呼び方します。プログラムを効率よく動かすために管理するための製品です。Tomcat、Weblogic、WebSphere等が有名な製品です。
データベースソフト
データを管理するためのソフトです。このソフトがインストールされたサーバーをデータベースサーバーなんて呼び方します。RDBMSという仕組みで顧客データや商品マスタなどのショッピングサイトに必要なデータの殆どを管理しています。MySQL、Oracle、DB2等が有名な製品です。

だいたいこんな感じでネットショッピングサイトは構築されます。しかし、このネットショッピングサイトとは別にネットショッピングサイトを長きにわたって運用するためのシステムも別に組まれます。それが次のようなものになります。

監視ソフト
各サーバーに異常が発生した場合に即座に通知するためのソフトウェアです。例えばメモリの使用率を随時監視していて高負荷の状態になるとメールや監視内容を見るためのパソコンにアラートとして上げてくれます。それを運用する人は見て原因を探ったり直したりします。
ジョブソフト
日次決済等の定期的なプログラムを自動で実行するためのソフトウェアです。例えばその日の決済をレポート化するプログラムを毎日午前0時に動かしたいという時にこのソフトにジョブとして登録しておくと、自動で毎日そのプログラムが決まった時間に処理されます。
バックアップソフト
顧客データ等の重要なデータをバックアップしてくれるソフトウェアです。ただそういったデータベースに格納されるような情報はデータベースソフトウェアに付属しているバックアップ機能で取得する事がほとんどです。ここではそのバックアップを別のディスクに移したり等といった補助的な意味が強いです。
セキュリティソフト
主に内部用のセキュリティ違反を管理するためのソフトウェアです。ネットショッピングを運用する人たちの操作ログや権限を管理したりします。

3.インフラの仕事の領域と内容

3-1.それぞれの仕事の領域

下の図はショッピングサイトを構築するにあたりどういった方々が登場するのかを絵にしたものです。WEBソフト、アプリケーションソフト、データベースソフトはグレーな位置にあるため場合よってプログラマのSEが担当する場合があります。インフラはやたら多いですね。。。もちろん一人ですべてをやるわけではなく、WEBソフトに特化した人、データベースソフトに特化した人がそれぞれ担当します。

担当範囲

3-2.インフラの仕事の内容

①要件定義

ショッピングサイトを作りたい企業の人やプログラムのSEの人とどういったシステムにしたいのかヒアリングを行います。具体的には

  • サービスの稼動時間
  • トランザクションの見積もり
  • データ破損時のリカバリの許容時間
  • 災害時のサービス提供
  • システム故障時の運用方法
  • 定期的に発生する作業

などといった項目を確認していきます。ぶっちゃけこの時期はかなり暇です。ですのでその後の基本設計も若干話しながら進めていきます。

②基本設計~詳細設計

要件が決まったらその要件を実現するために設計をします。このサーバーは冗長化したりやデータ破損時の復旧の方法など具体的なデザインをしていきます。そのデザインをシステムを作りたい企業の人と合意します。お客さんはITに詳しくない人が結構多いので上の図に書いたように絵をかいて説明したりします。

③導入・設定、プログラムの作成

机上の内容が決まったら実際に導入や設定をしたりします。実際の機器を運ぶのは私達ではなく搬入専門の人がやってくれます(これもインフラといえばインフラですね)。昔予算の関係で搬入はやるけど設置は自分でしてくれといわれ実際にサーバーにメモリを入れたり設置したりした事があります。手が命のこの職業にこんな事をさせるのかっ!!といえず20キロくらいあるサーバーを運んだりした経験もあります笑。設置後はOSのインストールやソフトウェアのインストール設計に基づいた設定をします。
この時にシェルスクリプトという簡単なプログラムをプログラミングしたりします。
この辺から結構忙しくなる時があります。ちゃんとインストールできなかったりするんですよね。。。

④テスト

導入・設定が終わったらそのとおりに動くかテストします。この辺はかなり忙しいですね。テストケースを作ってその基準を満たすかテストするんですが期待する結果にならないことが殆どです。設定ミスなんかもここで発覚しますし製品として内在的に持っているバグなんかにしょっちゅう出くわします。そのたびどう解決していこうかと考えたりしないといけないので非常に疲れます。

⑤引継ぎ

私は俗に構築という立場で入っているためこのショッピングサイトを未来永劫に渡ってみていくわけではありません。必ずそのシステムを運用ししていく人がいるのでその人達にこういうふうに運用してねーとか障害おきたらこうしてねーなどといった内容を引き継ぎます。これはテストケースに入っている場合も結構多いです。

⑥リリース

いよいよ本番稼動です。この日のために私達は肉体や精神を酷使していそいそ仕事をしてきました。本番稼動は基本的に立会いでトラブルがあったらその対応のために待機しています。私の経験上十数件ものシステムをリリースしてきましたが全体として問題がなかった案件は1件だけでした。それくらい準備いざの本番はトラブルが起こっていました。

これでもかなり簡単に説明していますがだいたいこんな感じの事を繰り返していました。

4.給料や労働環境、将来性について

4-1.自分の能力が給料

やはりモノ造りな職種だけあってできる事が多かったり、能力が高ければ給料はいい方だと思います。フリーランスとして活躍されてる方も沢山いらっしゃるので、自分に自身があってそれだけのキャリアを積んでる人は年俸1000万も夢ではないと思います。

4-2.周りの人や残業

私はお客様先で常駐して業務をするタイプでした。5年もやってると色々な案件を転々とするので様々な人に会いました。プログラマーは理系というイメージがありますがインフラは文系の人が多かったような気がします。客先常駐のため社員とは殆ど顔を合わせなかったです。たまに、あれ?自分はどの会社の人間だっけなと思うほどです。ですので、色々な人と知り合えて同じ仕事ができるのは勉強にもなりますしメリットだとは思います。
残業は波がありすぎでした。暇な時期は定時で普通に帰れますがプロジェクトの最終段階などの過渡期になると徹夜とかも沢山ありました。あくまで平均すがあえて言うなら月100時間くらいは残業していたと思います。ですのでプライベートを大切にしたい方はあまり向いてない職業かもしれませんね。

4-3.需要に対して供給は少ないので将来性はあり

以外と人は足りていないのが現状です。ですが求められる技術を持っている能力者が圧倒的に少ない業界だと思いました。仕事の同僚にプログラマはいましたが、案件がなくて自社待機している人は沢山いた中私は常にどこかの案件に入っていたので技術さえつけてしまえば仕事がなくなる事はないと思います。
ただし、近年仮想化の技術が流行っているので需要は長い目で見ると減っていくと思います。それでも10年20年のスパンでのお話ですし、能力が高ければやはり仕事が無くなる事はありません。ですので将来性はかなりあると思います。

5.最後に。。。

長々としたお話になってしまいましたがこの記事を読んで少しでもインフラのシステムエンジニアというものを分かってもらえると幸いです。
インターネットの業界は未だ成長を続けています。それはフロント側だけの話ではなくバックエンド側もです。次々と新しい技術やサービスが発表されその知識についていかないといけないです。この職業は生涯勉強な職業だと思いました。