インフラエンジニアはSE全体で見ると非常に割合が多く、特にサーバ・ネットワークエンジニアはよほどスペシャルな人材でない限り、替えの効く立場にあるのが現状です。
派遣社員などは特に入れ替わりが激しく、数が多く替えが効きやすい証拠だと思います。
アプリ経験者がUNIXでの操作経験があるという理由だけでインフラの案件に行かされてしまうケースもかなり増えており、参入する壁も業界としてはかなり緩いと思います。
では前述のスペシャルなSEになる事で、給料も大幅に上げていくことも出来ます。
私の経験則からスペシャルなインフラエンジニアになるために身に着けていた方が良いスキルを書いていきたいと思います。
フルスタックになる必要はない
OSSの構築が出来る
一つ目は此れに尽きます。
インフラの業務範囲としては、ミドルウェアのインストールまでであったりしますが、例えばPostfixやSendmailでメールサーバを構築する際は、インフラエンジニアの業務範囲になります。
普段、OSやストレージ、NW機器のレベルでしか業務していない人間にとっては、名前は知っていても、商用サービスの構築には自信がないと思います。
また、DNSにしても公開サーバではBindが使用されているケースが多いです。そのため、オープンリゾルバ対策を実施しつつ権威DNS、キャッシュDNSなど構築できる知識は単なるインフラエンジニアより貴重です。
私はApache HTTP webserverとTomcatのチューニングなどの経験値があるため、OSSで商用環境を運用しているサービスのインフラ案件は成約率が非常に高いです。
せめて1つか2つ、OSSで自信を持って扱えるものを身に着けていく必要があります。
特殊な製品への特化
これは市場が狭いものの、そこに合致したときに大幅に報酬が得られるケースが多いです。
例えば、NoSQLです。
Apache Cassandraの案件など月単価120万など存在します。これもOSSであはりますが、特殊な製品のため初めて聞く人などもいると思いますが、より多くの人が知っている製品よりはニッチな製品に特化すると需要にマッチしたときに、希少価値から最初から評価が高いです。
私はOracleの資格を持っておりますが、OracleDB自体はそれなりに供給されている製品ですが、経験値としては、Oracle Real Application Cluster環境での解析・チューニングを行ってきました。
Oracle製品はご存知の通り、ライセンス費用が尋常じゃなく高いので、OracleDBは扱っていても、RACまでは導入していない企業も多いので、RACを導入している企業=お金のある企業です。
お金のある企業と契約出来る、つまり報酬もある程度期待が出来るという事です。
IBM製品のWASやMQに関しても、特化した場合はIBMのパートナー会社など多く存在するため、そういった企業には評価されるでしょう。
OSSと似たような内容ですが、こちらはライセンス費のかかる製品を前提に考えて頂ければと思います。
スクリプトが書ける
個人的にはこれが最も重要です。
インフラエンジニアですので、プログラミング言語が書ける必要はないと思います。
※書けるに越したことはありません
ただし、インタプリタ型の言語などは1つ以上は習得しておくべきです。
Unix/Linuxのエンジニアであれば、当然のごとくシェルスクリプトは使えて当然です。
作業の自動化や日常業の簡略化が図れるエンジニアは非常に重宝されます。
個人的におすすめは下記になります。
- シェルスクリプト
- Teratermマクロ
- VBA
- Perl/Ruby/Python
バッチがないのは、私としてはVBAはあくまで日常業務の効率化に必要だけれども、Windows Serverでバッチを使うため覚えても、他のディストリビューションで活きない知識だからです。
この中で、3つ以上は扱えると評価が全然違います。
実際、フリーランスの商談の際は、扱えるスクリプトについてはよく質問されます。
隣接している分野の知識もある
エンジニアは二つの専門分野を持っておくべき、とよく言われます。
私はその通りだと思います。
むしろ、三つは持っておいた方が良いと思います。分野でなくても製品としては絶対に持っておくべき要素です。
インフラエンジニア向けに今回は書いているので、サーバとネットワーク、両方の知識を有しておくべきだと思います。
ネットワークエンジニアであれば、サーバの知識は絶対的に持っておきましょう。最近ではOpenSwanでのIPSecを使ったVPNを使用するケースもあります。
サーバエンジニアは、HW寄りの対応が多いエンジニアは、ネットワークの知識を持っておきましょう。
ブレードサーバなど扱う場合、内部スイッチがありますし、VLANなどを構成する場合やルーティングに関してトラブルシューティングする場合は必須です。
アプリケーション寄りのサーバエンジニア、私のようにデータベースを扱う場合はミドルウェアについて知識を持っておく必要があります。
コネクションプールやJavaのヒープサイズなどアプリの動作に影響するミドルウェアの設定については最低限押さえておきましょう。
まとめ
これまで書いた内容で、全てを満たせば確実に報酬は上がっていきます。
上がらずとも、給料の良い会社や案件へ入り込んでいけると思います。
決してすべてをこなせるフルスタックエンジニアにならなくとも、専門性の高い領域を増やすことで評価はかなり変わります。
サーバだけ扱える人よりは、ネットワークも構築できる人。
サーバとネットワークが構築できる人より、Ansibleで構成管理もできる人。
サーバとネットワークをAnsibleで管理でき、Postgres、Oracleのミドルウェアも構築できる人。
このように、満たせる条件が多い方が、どんな会社にとっても魅力的です。
私も日々精進していきたいと思います。