インフラSEとアプリSE

読者の皆様、いつも読んで頂いてありがとうございます。





前に社内SEとSIerについて書きましたが、今回はインフラSEアプリSEについて書こうと思います。





インフラSEと言って学生の皆さんはどんなSEを思い浮かべるでしょうか?サーバールームにこもってサーバーの設置やネットワークの敷設を延々とやっているようなイメージでしょうか。私も学生時代はそんなイメージでした。でもちょっとそれは違いました。





「インフラ」という単語はコンテキストによって指す範囲が結構変わります。ハードウェアのみを指す場合もあれば、ソフトウェアも含めてインフラと読んだりします。今回は「インフラ」とはハードウェアのみではなく、様々なソフトウェアも含めて考えます。





そしてインフラSEとアプリSEの違いですが、インフラSEはユーザーから見えないところを作るSE、アプリSEはユーザーから見えるところを作るSEと考えて下さい。





Amebaブログに例えて言うと、このブログの画面レイアウト、記事の入力方式、ページの切り替わり方、ボタンの配置、ルームやフォト等の機能の作り込みは全てアプリSEの仕事です。かたやインフラSEの仕事はというと、深夜になるとアクセス数が増大することを見越してサーバーの性能を決めたり、サーバーが1台壊れたらシステムが使えなくなると困るので1台壊れても、もう1台用意しておいて瞬時に切り替わるようにしたり、Amebloのユーザーが1年後に増えたときに簡単にシステムを拡張できる作りにする、といったことが挙げられます。ちなみに私はインフラSEに属します。


以下それぞれについてもうちょっと詳しく説明します。





アプリSE


アプリSEは前述したように、ユーザーから見える部分を担当します。Amebloを使っている上で、本来必要なボタンがなかったら使いにくいですよね。なのでアプリSEはユーザーの立場に立ってプログラムの仕様を決めていく必要があります。ただ、ユーザーも「どんなプログラムが良いか」が明確に分かっていることは稀で、ユーザーにヒアリングを行った全てを作れば良いということにはなりません。Amebloを例に出すならば、一般的にブログにはどういう機能が必要で、こういう仕組みがあると喜ばれる、というITのハードウェアやソフトウェアについての知識というよりも、そのような「ユーザーにとって便利な機能とは何か」という知識が必要となります。こういう知識のことを業務知識といいます。






インフラSE


インフラSEにも大きく分けて2種類の人がいます。広く浅く知っている人と、深く狭く知っている人です。前者をアーキテクトと呼び、後者をスペシャリストと呼ぶことにします。アーキテクトもスペシャリストも、システムを作っているときには業務が具体的にどういう流れだとか(例えばブログの機能面)はあまり気にしません。気にするのは、


・どれだけのアクセスがあるのか


・どれだけのデータを保存する必要があるのか


・災害が発生したら何時間くらいで復旧しないとまずいのか


といったいわゆる非機能要件の部分です。インフラSEは、これを決定するためにアーキテクトがサーバー、ネットワーク、ミドルウェアの選定と構成を決め、スペシャリストの助けを借りながらそれが本当に正しいか精査していきます。システム開発のプロジェクトでは、アプリ部隊がインフラ部隊との連絡が不十分なまま走ってしまうことがよくあり、その結果として毎日深夜頃にアクセスが集中すると不安定になったりします。インフラSEは業務知識よりもシステムについての知識が深く求められます。





インフラSEにも業務の知識はある程度必要ですし、アプリSEにもシステムの知識はある程度必要です。片方を軸足にしつつもう片方もできるというのが理想ですが、それだけ広い範囲をカバーするのはなかなか難しいものです。