みなさんこんにちは。ヒロウミです。
去年から新米インフラエンジニアとして働き始め、「働くにあたって必要なこと」をなんとなく感じたのでまとめてみます。
インフラエンジニアと言いつつ、それらしいことはほとんどやっていなんですが。。。まぁ、1年間やってみて実際に起こったことと感じたこをを中心にまとめたいと思います。
これからインフラエンジニアになるという方に少しでも力になればなぁと思います。これから書く内容を要約すると「基礎・基本」がないといけないねということです。
ネットワークに関する知識
- これがないとお話にならないと感じた。アプリケーションを構築するにしろネットワークによる制約を意識する必要がある(クロスドメイン?的なやつとか)。これを知っていなかったために、1日を無駄にした。
- サーバを構築するにあたり、セキュリティやトラフィックを考慮する必要があるがある。しかし、セグメントをどう区切るかわからないとそもそもサーバを立てても意味がない。。。。
- アプリケーションで思うよな結果を得られなかった時に、それがネットワークの問題なのか、アプリケーションの問題なのかを切り分ける知識がない。
- tcpdumpコマンドなどで、通信が来ていることぐらいはわかるが出力結果を読み取ることができない。(状況を詳細に把握することができない)
- プロダクトを俯瞰する能力が欠ける。設計を行う際にネットワークに関する知識がないとトンチンカンな設計をしてしまう。
OSやハードに関する知識
- これもないとお話にならないと感じた。ある時、急にアプリケーションが停止しどこをみてもバグらしいものはなかった。どうしてだろうと悩んであれこれしていると原因はログが溢れログのディスク領域を使い切っていたためだった。これにも、ログを吐き出す場所のディスク領域が少なすぎる問題に気付いていなかった。そもそも、/var/runにログを吐くってどうゆうことだろう?(この辺の常識的なやつがないから分からぬ)
- アプリケーションが動いている仕組みを理解する必要がある。OS上でserviceコマンドなどで起動・停止を行うがそれが内部的に何をしているのか分からなかったがために、プロセスのサービス化を行う際に細かな設定を行えなかった(serviceスクリプトの中に環境変数を読み込む設定ができることなど)
- ある時、サーバにログインするとコマンドのコンソールが固まりコマンドの操作を行うことができなくなった。コンソール上に表示されたエラー文から”ファイルディスクプリタ”を上限まで使っている?(未だにわかっていない。。。)というエラーが表示され再起動するしか方法がなかった。原因として、cronで定期実行していコマンドがファイルを閉じることなくそのまま上限に達していたというものだった。
コミュ力(相談するタイミング)
- 自分でなんとかしろ。的な体育会的な雰囲気の職場では、問題が発生しても上司は知らんぷりしてとりあえず「お前がやれ」となってしまう。一人で考えてやっていてはどうしても時間がかかってしまい、あくせくしているとトロイやつという認識になってしまう。(実際トロいのだが。。。)なので、ある程度メンドクサがられても食らいつく度胸が必要だと思った。
まぁ、こんな感じです。結局「基礎・基本」がないと安易な判断をしてしまい、手戻りや、障害発生の対応時間など大幅に時間を持っていかれるという感じでしょうか。こんな風に時間を取られていては定時に帰るなんて夢のまた夢という感じです。(職場の体質や、本人の能力にも原因はあるでしょうが)
私が1年間やって来て感じたことはこんなとこです。OS系はLPICを勉強する中で多少は身につけてこれたかなと思いますが、まだまだ足りません。それにLinuxはネットワークと深く結びつきがあると感じているのでより深くLinuxやOSについて理解するには、”ネットワークをまず学ばねば!!”という結論に至りました。
低いレイヤの知識を身につけている人には尊敬できるエンジニアが多い印象があります。将来私もそういう立場になりたいと思います。