1週間ぐらい前にバズっていた東京大学計数工学科の講義資料が大変面白そうだったので全てのハンズオンをやってみた。
Webアプリケーション開発の実務経験があれば多少読み飛ばせる部分はあるのでだいたい半日程度、実行するコードを読み込んだとしても1日で完了できるボリューム。ハンズオンはやや腰が重いかもしれないが、細かく分けて実践することも可能なので興味を持った部分だけでも挑戦することをおすすめする。
実践的な内容
「1.1. 本講義の目的・内容」より。
本講義(計3回)の目的は,クラウドの初心者を対象とし,クラウドの基礎的な知識・概念を解説する. また, Amazon Web Service (AWS) の提供するクラウド環境を実例として,具体的なクラウドの利用方法をハンズオンを通して学ぶ.
特に,科学・エンジニアリングの学生を対象として,研究などの目的でクラウドを利用するための実践的な手順を紹介する. 知識・理論の説明は最小限に留め,実践を行う中で必要な概念の解説を行う予定である. 受講生が今後,研究などでクラウドを利用する際の,足がかりとなることができればこの講義の目的は十分達成されたことになる.
ざっくり言うと3回の講義で以下の実践が詰める。また、実践に必要となる前提知識も簡潔かつ必要十分でわかりやすい解説で学ぶことができる。
- CDKでVPN内にEC2インスタンスを起動してSSH
- GPUを搭載したEC2で機械学習、ECS+Fargateで分散並列処理
- Lambda, DynamoDBに代表されるサーバーレス技術を用いてスケーラブルなWebサービスを構築
業務でいろいろ触ったことがある人からすると「まぁ、そういう風に使うわな」といった感じだと思うが、「クラウドコンピューティング未経験者にその利便性・可能性を感じさせる」という目的ではこの上ない内容だと思う。
また、基本的にはコマンドラインでポチポチやっていけば動くものが見えるハンズオンなので理解が及ばないところ(自分にとっては機械学習まわり)はスキップできるし、深堀りしたくなったらコードを読んで理解を深めることができるのも良い。
学んだことなど
AWSに業務で触れたことはあるがゼロから構築した経験がないWebアプリケーションエンジニアとしては、これまで意識してこなかった具体が透けて見えるようになる良いハンズオンだった。比較的新しい技術スタックで構成されているため、特に手詰まりなく全トピックを終えることができた。
ここ数年はWebアプリケーションのフロントエンドやバックエンドといってもアプリケーションのコード中心に開発してきて、クラウドインフラを自分にとってのブラックボックスのまま放置してきてしまった(優秀な同僚頼みであった)負い目があり、それに対して少しはツケを払う土台ができた…と思いたい。少なくとも会話ができるレベルにこのまま持っていけると思う。
ふわっとした理解の至らなさと講義のコンテンツの結びつきは具体的にはこんな感じ。
「AMIとかVPCとかSecurity Groupとか、役割は知っているけど具体的な設定をどうやって管理してるのかよくわかってないんだよな…」
=> AWS Cloud Development Kit (AWS CDK) で構成管理、Infrastructure as Codeの恩恵を享受してみる
「EC2インスタンス、業務ではSREが良い感じに選んでくれているけど普段使っていないのにはどんなのがあるんだろう…」
=> GPUモリモリでディープラーニングの畳み込み演算が高速化できるAMIを試してみる
「Lambda function便利そうだが他サービスとのインテグレーションがよくわからん…」
=> API Gateway + Lambda + DynamoDB で一連の流れを書いてみる
「FargateがEC2とLambdaの中間に見えるが使いどころがよくわからん…」
=> ECRに登録したイメージをECS + Fargateで動かし、コンテナで動くアプリケーションのスケーラビリティを実感する
また、直接業務で関わったことはないが機械学習領域でのクラウド活用も知識として見聞きはしていたが具体的にどのように活用しているのかのイメージも湧いていなかったので、そのあたりも体感できた。
「GPUとCPUの速度差、知っているつもりだけど体感したことはあまりない…」
=> GPU搭載のEC2で起動したJupyter Notebookにローカルからポートフォワーディングして接続して、CPUとGPUでの処理速度の差をベンチマークとって比較してみる
その他にも名前は聞いたことあるが実態がよくわかっていない3文字のアルファベットがだいぶ解き明かされてきた。
感想
クラウドコンピューティングの実用性と革新性は知識では知っているが実際に手を動かしてみないと得られない手触り感はあるなぁ…。そのへんを大事にしなくなったらエンジニアとしては厳しいものがあるので引き続きやっていきたい。
最後に、講義の作成・公開をしてくださった方に多大な感謝。そして、大学時代にこんな実践的な講義が受けられるなんて羨ましい!