こんにちは。 ニフクラエンジニアミートアップ事務局の鮫島です。
2022年4月27日(水)に第47回ニフクラエンジニアミートアップを開催しました。
タイミング的にも、新人エンジニアが入ってきたばかりの連休前ということでたくさんの方にお越しいただきました。 ありがとうございます!
昨今、テレワークの急速な普及により、新人やトレーナーから学習・教育に関する悩みの声をよく聞くようになりました。
何気ない日常会話や交流から得られた情報の減少、ハンズオンでの教育が物理的に不可能になったことで、新人の自主的な学習への依存度が高まっているといえるでしょう。
そんな状況下でも「学びたい」「エンジニアとして成長したい」という意欲を持った新人を対象に、テクニカルライター&エンジニアとして幅広く活躍中の大澤文孝氏を講師にお招きして、特別にインフラエンジニアにフォーカスして勉強法や学ぶべき技術マップに関するお話をしていただきました。
インフラエンジニアの仕事とゴール
インフラエンジニアの仕事というと、物理的な配線から設置、機器設定、OSインストール、ソフトウェアのインストールなど思いつくだけでも多岐に渡りますが、必ずしもすべてを担当するとは限りません。
つまり、インフラ全体において自分が設定する範囲は押さえつつ、自分は設定できないが権限を持っている「誰か」を把握して「スムーズにやりとりができる」というスキルが必要です。
汎用的な思考法
一方、個々の機器の設定などは実際に触って覚える実践的な知識ですが、機器が変わると応用が効かない場合もあります。
そこで、理論が身についていれば、個々の機器の設定・コマンドの意味が理解できますし、分からなくても自分で調べることが出来ます。
「マニュアルから探せるならば暗記は不要」という割り切りは、今回の大澤氏の勉強法では何度も出てきます。
ネットワークを知る
インフラエンジニアにとってネットワークは不可分の領域ですが、覚えることが多岐に渡るため苦手と感じる人も多いようです。
インフラエンジニアにとってネットワークを理解することは極めて重要なスキルなのはよく言われることですが、インターネットの構造を認識していると、より「ネットワークがつながる仕組み」の理解が早まるそうです。
TCP/IPや、ポート番号とファイアウォールといったものはサーバー構築で避けて通れないですし、ドメイン名で接続するためのDNSもWebサーバーでは必要になります。ドメインの取得とか管理は、インフラエンジニアの仕事ではないケースもありそうですが、冒頭で出てきた「自分は設定できないが権限を持っている「誰か」を把握していることが重要になります。 何となくつながってきました。
サーバーを知る
ようやくインフラエンジニアにとって本丸ともいえるサーバーの話です。
サーバーでは、OSの基礎はもちろんセキュアに遠隔ログインするためのSSHやサーバーの各種操作に必須のシェルと基本的なコマンドに加えて、Linuxの標準エディターであるviエディターは、最低限の基本操作を覚えておくと緊急時には便利だそうです。
パッケージのインストールに必要な「apt-get」「yum install」といった基本コマンドは嫌でも覚えるはずです。
勉強の仕方と資格
いよいよ、インフラエンジニアの勉強法そのものです。 どういう順序で勉強するのが良いか?というと、「ネットワーク」「コマンド」「ネットワーク理論」「サーバー」といったものを順番に学習してもそれぞれの関連性が判りづらいので、並列に勉強したほうが良いとのこと。
座学よりは、サーバーの実機を触って試しながら勉強するのが理解が早いと言われていますが、最近はより手軽にクラウドを利用する方が一般的になっています。
各クラウドベンダーは、各種無料枠を提供しているので、それを利用するのもいいでしょう。 FJcloud-Vの無料枠を使って学習してみたい!と思った方は、ぜひお試しください。 personal.clouddirect.jp.fujitsu.com
資格試験
もうひとつ、有効な学習方法として資格試験の活用があります。
インフラエンジニア向けの資格といえば、ネットワーク方面ならCCNA(Cisco Certified Network Associate)とかIPAのネットワークスペシャリストなどがありますし、サーバー向け・Linux技術者向けの資格としてLiniuC(レベル1)やLPIC-1などがあるようです。
これらは、習熟度・達成度のマイルストーンとして資格認定試験があるため、どこまで勉強すればいいか?どこまで覚えたらいいのか?という目安が明確というメリットがあります。
また、資格試験によって得られる網羅的な知識が必須かというとそうでもなく、大量の機器の設定を行うためのコマンドを知っているだけでも仕事になる場合もある(とはいえ減少傾向)とのこと。
コンテナ・クラウド時代のスキル
コンテナが分からない=Linuxを分かっていない
今注目のDockerコンテナですが、Linuxとネットワークの知識がないと理解できないので、つまづいている人はここを勉強すると良いとのこと。
Dockerコンテナについては、7月のニフクラエンジニアミートアップで扱う予定です。
また、物理でもクラウドでも求められるスキルの基本は同じであり、クラウドにおいてもIPアドレスやサブネット、ゲートウェイといった基本的なネットワークの基本的な理解が必要になります。
クラウド時代に求められる知識
それを踏まえた上で、求められる知識は「マネージドサービス」や「IaC(Infrastructure as Code)」です。 要するに、AWSのRDSに代表されるようなマネージドサービスを利用することで、従来物理でデータベースの構築・運用で苦労していた部分を丸ごとクラウドベンダーに任せることができるという大きなメリットを得ることができます。
IaCに関しては、特にクラウドでインフラ構築を行う際に、コードをテンプレート化しておけば同じ作業を何度も繰り返す必要がなくなりますし、クラウドならではのメリットが得られます。
ロードマップの例
最後に、新人インフラエンジニアが勉強するためのロードマップはどう考えるか?というお話です。
上記の図は、ネットワークの勉強をするためのロードマップの例になります。
サーバーに関しては、基礎的なLinuxの知識を持ってコマンドを暗記する必要はなく、本を見ながら・ネットで調べながら操作できるレベルで十分だそうです。全体を理解した上で、右側に勉強を進めていけばいいそうです。
その他、初心者からよく聞かれる疑問点をいくつかコメントしてセッション終了しました。
QAセッション
続いて、お待ちかねのQAセッションに突入しました。
いくつか興味深い質問をピックアップします。
インフラエンジニアにプログラミング能力は必要?
動画のリンクはこのあたりをご覧ください。
スクリプトレベルで十分!シェル芸も
おすすめのクラウド構成はWeb三層?WordPress?
動画のリンクはこのあたりをご覧ください。
定番はとりあえずWordPress
Slidoだけでなくチャットにも質問がたくさん寄せられて、答え切れないほど(二次会の肴に)でしたが、その後も遅くまで「エンジニアとしての生き方」などの定番ネタで盛り上がっていました(生暖かく傍観)。
まとめ
最近、SNSで「とりあえずやってみて」とか「まずは自分で考えて」と若者に言うと嫌がられるぞ?的な話が盛り上がっていましたが、お読みになった方もいらっしゃると思います。
今回「インフラエンジニアの勉強法」では、「とりあえず実機触ってみて!」ではなく「どこからどこまでをとりあえず理解すればOK」というゴールが明確になっていますし、「ググればわかること」「本を読めばわかること」は無理に暗記することは無いという点は、非常にハードルが低くて納得感がありました。
学ぶ方も教える方も、まだまだ苦労は多いと思いますが、ぜひインフラエンジニアの学習法の参考としていただければ幸いです。
今回の動画をチャプター入りでご覧いただけます。 www.youtube.com www.youtube.com
次回もお楽しみに!