株式会社estieでSRE/Platfrom Engineeringをしている徳原です。
テック転生ということで、今イチからインフラを学び直すならということで記事を書かせていただきます。
自分が社会人になった頃はまだオンプレミスが主流だった時代です。仮想環境は開発環境としては使えそうだけど本番環境では使えないねというのが世間一般の捉え方だったと記憶してます。社会人最初の数年はデータセンターにいって検証環境を作ったり、大量にあるネットワーク機器に接続するためのteratermのマクロ組んだりと、大量の物理機器を如何に効率よく運用するかみたいなことをやったので、学習環境としても機器を触るようにしていました。秋葉原で中古のネットワーク機器と安いサーバを購入して自宅ラック勢とまではいかないまでも、そこそこの台数で検証環境を組んで遊んでいました。ただ、LoadBalancerやFirewallといったアプライアンスは中古でも手が出ず(そもそも家庭にいらない)、ハンズオンイベントなどを探してそれで勉強していました。
2014年あたりからVMware vSphereなどで仮想サーバが本番のワークロードでもいけそうとなり、クラウドが盛り上がってきたので、AWSをさわりはじめボタンをクリックするだけでサーバができるようになりました。このあたりぐらいからプロビジョニングツールなどが流行しだし、インフラエンジニアでもコードを触る時間が増えてきたのを覚えています。2015年に転職し、AWSがメイン環境となったので、学習環境がPC1台で済むようになり、学びやすさが格段に変わってきました。
あとはTerraformが出てきたり、Dockerが出てきたりとその都度色々学習対象を変えて必要な技術を覚えていった形になります。
いざ! テック転生!
トクハラはRustを覚えたい…! しかしトクハラは技を4つ覚えているのでもう精一杯だ!
- インフラ ◀️
- Observability
- Security
- CI/CD
「1 2の……ポカン!」トクハラはインフラ技術をきれいに忘れた。そして新しくRustを勉強し始めた。
(間違えてAボタン連打して消したくない技を消してしまったことありますよね。)
というわけで、手違いでインフラ技術を綺麗さっぱり忘れてしまいました。困った。
今は2024年、自分がインフラを学びはじめた2011年から13年も進んだ世界です。きっと当時より効率的に学べるはずです。
プロダクトのインフラを担う一エンジニアとなるために、いざしゅっぱつ!
学習に向けての戦略
クラウド環境でのインフラエンジニアを目指します!
物理機器を触るのはとても楽しいですが、オンプレだけでやっている企業はほんと少なくなってきている印象があります。(調べたことないので肌感)
オンプレ + クラウド、あるいはクラウドのみというのが大半なのではないでしょうか。なので、ここではまずはクラウド環境でのインフラエンジニアを目指していくこととします。
基本は「座学」と「ハンズオン」の2本立て
クラウド全盛期になってもインフラ領域でのベースとなる技術は過去と変わりません。まずは基礎となる技術を理解することが大事です。ポケモンと同じように自身のレベルが低い(バッジがない)状態で、強いポケモンを手に入れても、身の丈に合ってないなら言うことを聞かないのと同じで、下地がないのに、強い武器を持つことはあまり得策ではありません。まずはしっかり下地を作りましょう。
どの領域でも同じですが、参考書を読む、オンラインコースを見るだけでは、学びは少ないです。実際に手を動かし、自分の目で見て動作を確認し、ちょっとコードを変えてみたら動かなくなって、その解決をする(理解が深まる)という流れが必要です。ここに関しては、インフラでもそうじゃなくても学び方は同じかなと思います。
また、学ぶにあたり、大事なことを伝えておくと
- 信頼できるソースを当たる
- ソフトウェアは日々アップデートされる。書籍・ドキュメント通りに動かないこともあるので、実際に動かしてその挙動を信じる
という点です。
1点目についていうと、参考書だったり、公式ドキュメントだったり、RFCだったりします。検索すれば無数に技術系ブログといった記事も出てきますが、それらはあくまで信頼できるソースを読む上での参考情報になり得るものと捉えておくと良いでしょう。私も調べ物をする際は、技術系ブログはよく読みますが、その後、公式ドキュメントも必ず読むようにしています。
2点目でいうと、日々ソフトウェアは更新されるので、書籍は出版された時点ですでに最新情報ではない可能性があります。また、公式ドキュメントも更新が遅れることがあります。そのため、アクセスしたり、コンフィギュレーションを変更してみたりと、実際に動かして確認することが非常に重要です。
座学で学ぶ内容
先に書いた通り、ベースとなる技術が変わってないためここで学ぶ内容は下地作りのものがメインになります。それに加え、クラウドサービスのどれかを学ぶと言うのが良いかと思います。
最初から全てのクラウドサービスに手を出すのはNGで、まずはひとつ自分の中に基準を作るということを心がけましょう。その基準があれば、別のクラウドを触ってもその基準をベースにサービスを理解をすることができ、その差分だけ理解するといったことが可能になります。
個人的にこれからインフラ分野を学び始めるなら何を読むか、何を見るか、何で学ぶかをリストアップします。
本当はもっといろいろあるのですが、書き出すときりがないので、もし私が各領域で一個に絞るならという点で、厳選させていただきました。あくまで私の経験からのものなので書店などで目次などを見てもらい自分にあったものを選んでみてください。
Network
- 書籍: マスタリングTCP/IP 入門編
- 私がネットワークエンジニアとしてキャリアをスタートして最もお世話になった本です
Linux
- 資格試験: LPIC/LinuCの試験対策本
- Linuxを設定する機会自体がかなり減りましたが、それでも必須知識として知っておくべき内容です。Linuxは資格試験があり、そのテキストに従って勉強するのが体系立って理解できてよいかと思います。興味があれば資格まで取ってしまってもいいかもしれません
- 試験対策本はとりあえず分厚いのを選び、その一冊でじっくり学ぶというのが個人的にはおすすめです
- Level2まであれば十分かなと。後は興味次第でLevel3を目指しても良いかと思います
- Windows Serverを業務で触ることを避けてきたのでWindowsについてはわかりません…
Docker/Container
- Docker ドキュメント日本語化プロジェクト — Docker-docs-ja 24.0 ドキュメント
- コンテナで開発している場合、Docker Desktopを使い開発することが大半だと思います
- 有志の方々が日本語化してくれています。ありがとうございます
- Docker周りはネットにも多く記事があり、参考書も多くあります
Web/HTML
- 書籍: Real World HTTP
- 初学者からすると難しい部類の本だと思います。Web/HTTPはどこでも使うし、必須の知識となるので、是非しっかりとした理解をしましょう
ハンズオンで学ぶ内容
先に、どれか一つのクラウドを学ぶと書きましたが、ここではシェアがトップのAWSを学ぶことにしましょう。
まずはAWSアカウントを払い出しましょう。
アカウント払い出し後、最初にすることは
- ルートアカウントのMFA設定を行う
- 勉強用に使うIAM Userを払い出す
- 予算アラートの設定
です。
何から手をつけるか?
業務ですでに使っているのであれば、同じ構成のものをまねて作ってみるというのが良いかと思います。まずはAWSの管理コンソールから作ってみることをおすすめします。
そういう環境にいない場合、AWSには初学者向けの1Dayハンズオン資料があるのでこちらを有効活用すると良いでしょう。
マシンを起動した分だけ課金されるので学習後は環境を削除することを忘れずに。
資格試験を有効活用する
AWSも例に漏れず資格試験があります。
資格試験の勉強を実際のAWSを使って学ぶというのも良いでしょう。資格を取ることでAWS Summitなどで、認定者ラウンジを使えたり、資格以外にも良いことがあります。
コミュニティイベント、カンファレンスを有効活用
AWSはユーザー有志のコミュニティもあります。有名どころは JAWS-UG(AWS User Group – Japan) で、定期的にイベントが開催されているので、モチベーションアップのために参加したりするのも良いと思います。
最初はわからないこともあるかと思いますが、そこから知識を広げていくきっかけにもなりますし、コミュニティに参加することで社外のエンジニアとのつながりもでき、学び以外にも得るものがあると思います。
まとめ
テック転生ということで、今一から技術を学び直すならというテーマでインフラ領域についてブログを書かせていただきました。 いろいろ書いてますが、いきなり全部に手を出さずにできる範囲で、じっくり腰を据えて学習していきましょう。やることが多く、また周りの速度に比べて焦ってしまうこともあるかもしれませんが、継続的に学習を続けるというところが一番大事です。それを続けるうちに、点と点がつながり、応用が利くようになります。気長に頑張りましょう。
継続的に学べる習慣を作るというところが実は一番のポイントかもしれません。