そこで質問なのですが、バックエンドエンジニアとして働く上でLINUXののコマンドとファイル構造ってどこまで知っているべきでしょうか?
ごく短期的(というかローカルで開発するだけなら)に言うと、Dockerと実際に構築するアプリケーションで使う範囲のコマンドだけ知ってれば何とかなります。
webアプリケーションにおけるバックエンドアプリケーションエンジニア
に最も必要な能力はアプリケーション構築能力なので、それさえ出来ればOSや環境の知見は後からでも追いつきます。(もちろんOSの基礎が出来ている方が良いのは確実なのですが)
ただ、
技術書等で、一通りCPUの仕組みだったり、OSの仕組みだったりといったことを勉強してきました。
ですがLinuxという特定の技術について掘り下げた勉強はまだしていません。
という事ですから、基礎的なところからしっかり学習したいのだと思います。
その場合、コマンドとファイル構造というよりは、それらを含めたLinuxの動作原理や定石を把握するのが良いかと思いますよ。
具体的には以下の様な事が思いつきます。
(基礎的な事から順にやるのが得意であれば上から順に、具体的な事を切り口にして基礎を深めるのが得意なら下から順にやってみるといいでしょう)
体系的にLinuxの操作や仕組みを学習することが出来ますので、一通りやっておくと環境構築やアプリケーションのデプロイ時、トラブルシューティング時にとても役に立ちます
どこまでやるかは難しいところですが、実運用無しで完全に理解するのも難しいので、スムーズに学習が進むところまでやってみて、後述の環境構築等をしてみたり、戻ってきたりで範囲を広げていくと良いです。
教材は豊富にあるので、新しいものをいくつか買ってみるなり、大きめの書店で読んでみるなりしてご自身に合いそうなものを選んでください。
バックエンドと言うからには、ネットワーク環境を前提としたアプリケーションの構築を想定されていると思います。であれば、TCP/IPについては一通り学習しておいて損はありません。
最低限だと基本情報処理技術者試験の範囲くらいは把握しておくと良いです。
Linuxのネットワーク設定項目の各単語と役割、設定値の持つ意味辺りは理解しましょう。
書籍だと定番のマスタリングTCP/IP
の入門編を理解するだけでも大分違います
-
webアプリケーションにおいて必要なサービス(Apache,Nginx,MariaDB等々)のインストールや設定、パッケージ管理について理解する
-
一通りやったところで、Linux(メジャーなディストリビューションを選択)上にwebアプリケーションを構築してみる
この辺りを把握したら、
(最近のLinuxによるバックエンド環境は仮想環境と切っても切り離せない状態になっているので、)
仮想環境上でLinuxを扱う練習をしてみるのも良いです。
- VMWareやVirtualBoxと言った古典的なホスト型仮想環境構築
- それらのフロントエンドとなるVagrantによる仮想環境
- DockerやLXCと言ったコンテナ型の仮想環境の構築
あたりを試したり学習してみると良いかなと思います。(最近のアプリケーションの開発環境はDockerで構築するのが一番楽なケースが多いです)
実運用においては、
これらの基礎の上で動く各種アプリケーションや設定、セキュリティ関係等を適切に設定する必要がある訳ですが、
教師も実務経験も無しに学習するのは中々ハードルが高いので、
まずは上記のような基礎的なところを進めてみてはいかがでしょうか?