AWS クラウド

AWSエンジニアを目指すなら持っておきたい3つのサブスキル

こんにちは、yassanです。
今回は「AWSエンジニアを目指すなら持っておきたい3つのサブスキル」について紹介します。

これからAWSエンジニア(クラウドエンジニア)を目指す方、新人エンジニアの方向けに、
これはできた方が良いことを3つに絞って紹介します。
(もちろん、できた方が良いことはたくさんあるのですが、今回は3つに厳選しました。)

これらができないとAWSエンジニアになれないかというと、そういうわけではありません。
ですが、ステップアップしていくうえで、遅かれ早かれ今回紹介するスキルは必要になると思います。

なぜそのスキルが必要か、どうやったらスキルが獲得できるかまで紹介していますので、
ぜひ参考にしてください!

Linuxスキル

まず一つ目は、Linuxスキルです。

Linuxはグローバルに利用されているオープンソースのOSの代表例です。
AWSの世界では、EC2がもっとも関わりの大きいサービスです。

Linuxスキルとは?

Linuxスキルというと、具体的には下記の理解を指します。

  • コマンド操作/エディタ操作ができること
  • ディレクトリの構造を理解していること
  • タイムゾーンや言語などの基本的な設定を理解していること
  • SSHの仕組みを理解していること
  • systemdを理解していること
  • パッケージ・レポジトリについて理解していること

最低限でも上記の理解が必要です。
そのほかにも、ファイルシステムやDNSなどについても、いずれは理解が必要になります。

Linuxスキルのメリット

Linuxスキルを持つことにどんなメリットがあるのかというと、
やはりEC2内部の設定が可能になるので、できることが格段に増えます。

Webサーバを作成する、バッチサーバを作成する、プロキシサーバを作成する、メールサーバを作成する...などなど
サーバを作成するには必ずLinuxについて理解しておいた方が、より高品質な仕上がりになると思います。

逆に言えば、EC2を起動することだけできても意味はありません。
EC2とLinuxの理解は切っても切れない関係ですので、Linuxのことがわからない状態で「EC2の触ったことがある」と言われても信用されないでしょう。

また、EC2だけでなく、ECSやLambdaにもLinuxの知識はあった方が良いです。
例えばLambdaの場合、サーバレスなのでOSについては開発者は意識しなくても良いはずですが、
デバッグなどをしていると結局エラー内容によってはLinuxの知識が必要になります。
(サーバレスと言えど、裏にはサーバがあってそこでOSが動いているのです....)

Linuxスキルの獲得方法

では、Linuxスキルをどのように身に着けたら良いのかというと、2つ方法があります。
個人的には、どちらか1つの方法というよりも、順番は問わないので2つとも実践することがおすすめです。

1つは、実際に手を動かして自分で操作して設定してみることです。
例えば、Webサーバを構築することを目標にして、自分で試行錯誤しながらやっていくことです。
やっていくと必ず壁にぶち当たるはずです。その時の大変な思いが、逆に身に刻まれてスキルが獲得されます。

もう1つは、書籍で体系的に学習することです。
網羅的に着実にスキルを獲得するには、やはり体系的な学習が必要です。
LPICやLinucの資格を取得することを目標にして、書籍読み進みていくのが良いかと思います。

LPICについては私も取得済みで、付け焼刃で終わっていたLinuxスキルをきちんと自分のものにするために、本当にとって良かったなと思います。

ネットワークスキル

2つ目はネットワークスキルです。

ネットワークスキルとは、OSI参照モデル・ルーティング・名前解決などなど、ネットワークや通信に関することです。
VPCをはじめAWSで設計・構築をするには欠かせない知識分野と言えます。

ネットワークスキルとは?

ネットワークスキルは、具体的には下記の理解を指します。

  • IPアドレス(IPv4, IPV6)
  • OSI参照モデル
  • ルーティング
  • プロトコルとウィルノウンポート
  • NAT
  • ファイアウォール
  • ロードバランス
  • 名前解決

ネットワークスキルのメリット

ネットワークスキルを持つことにどんなメリットがあるかというと、
通信経路を意識した設計やトラブルシューティングができ、できることが格段に広がります。

通信経路を意識した設計とは、例えばWebサービスを構築したとして、
何番のポートでリクエストを受けるのか、負荷分散からの通信はどのようにリッスンするのか、
ログはどこにどうやって出力するのか、災害が起こった時どのように切り替えるのか、、
などなど、考えることはたくさんあります。

それらが、過不足なくつながって安定してセキュアなサービスとして稼働させるには、
やはりネットワークスキルがないと難しいと思います。

トラブルシューティングに関しても、同じことが言えます。
通信に起因する障害やトラブルというのはよくあることです。

そういったときの調査で、ネットワークスキルは必要になります。
仮に原因がアプリケーション起因だったとしても、問題の切り分けにはかなわず通信が絡んできます。

大変なときにサクッと通信仕様を理解して問題を解決できるとやはり一目おかれますね。

ネットワークスキルの獲得方法

ネットワークスキルの獲得方法ですが、
こちらも資格をとること、手を動かすことが大事だと思います。

資格に関しては、基本情報技術者をお勧めします。
ネットワークだけでなく、その周辺の基礎知識の学習にもなるため個人的には良いと思います。

基本情報技術者試験についてはこちらの記事で紹介してます。

専門資格のCCNAも余裕があればとっておくと良いかと思います。
(僕はCCNAは取得してません。)

手を動かすことに関しては、
AWS公式が提供しているクラウド構成のパターンを参考にいくつか作ってみるのがおすすめです。

とはいえ、
作るには時間がかかりそうだし、料金も高そうだ...という方には、
同じくAWS公式が提供しているオンラインセミナー BlackBelt シリーズを視聴するのがおすすめです。

プログラミングスキル

3つ目はプログラミングスキルです。

プログラミングスキルは、改めて紹介しなくても皆さんお分かりの通りです。
アプリケーションやソフトウェアを動作させるために記述するテキストのことです。

AWSの世界では、EC2やLambdaをはじめ数多くのサービスで関わります。

プログラミングスキルとは

”AWSエンジニアを目指す”うえでのプログラミングスキルというのは、
いわゆるWebエンジニアのプログラミングスキルと少し違います。

AWSでは、アプリケーション開発ができるようながっつりとしてプログラミング知識はいったん不要だと思います。
(もちろん、できた方が良いのは間違いない)

AWSエンジニアとして必要なプログラミングスキルは、以下だと思います。

  • 苦手意識を持たない
  • ロジックが理解できる
  • 最低限動作するコーディングができる

これらがてきるレベルまでもっていくことが、あくまでサブスキルとしては重要だと思います。

また、言語についてはPythonをお勧めします。
理由については、下で紹介します。

プログラミングスキルのメリット

プログラミングができることのメリットは、言うまでもなくできることの幅がめちゃくちゃ広がります。
特に、PythonはAWSの中でも出番がとても多いです。

一番よく知られているのがLambdaです。
LambdaのコードはデフォルトでPythonになっています。
ネットで調べても、ほとんどの記事がLambdaでの処理はPythonで記述しています。
Pythonができるようになると、それすなわちLambdaもできる(またはそれ相応のポテンシャルがある)とみなされると思います。

他には、AWS CDKもPythonを使用します。
いわゆるInfrastructure as Codeの領域の話で、CloudFormationよりもテクニカルなことができるツールとなっています。
PythonとCDKができるようになると、インフラの自動化・コード管理化ができるようになります。
構築作業や運用業務の負担を減らすことができる貴重な人材になれるようになると思います。

他にも色々ありますが、代表的なのはこの2つです。

プログラミングスキルの獲得方法(Python)

Pythonのプログラミングスキルの獲得方法ですが、
今の時代、無料や安価で教材はネット上にたくさん転がっています。

どれか一つに絞って、その教材をとことん突き詰める方法がおすすめです。
Pythonは特に、人によって記述方法やルールが変わったりするので色々な教材に手を出すのはあまりお勧めしません。

学習するうえで1つポイントがあるとしたら、
Pythonの実行環境の構築も含めて学ぶことを強くおすすめします。

いわゆるWebブラウザ上でコーディングだけ行う学習では、かなりもったいないです。
実行環境まで理解しておくと、Lambdaのより深い機能やCloudShellの活用もできるので、せっかく学ぶのであれば実行環境も合わせた方が絶対に良いです。

僕のおすすめの学習教材は、こちらの記事で紹介しています。


まとめ

いかがでしたでしょうか。
今回は、「AWSエンジニアを目指すなら持っておきたい3つのサブスキル」を紹介しました。

それらは、以下の通りです。

  • Linuxスキル
  • ネットワークスキル
  • プログラミンスキル

ここまで読んでいただき、ありがとうございました!

-AWS, クラウド
-