// Course 08 — AWS
AWS 応用コースのメインテーマは、サーバレスアーキテクチャです。
これまでの「AWS基礎コース」や「実践コース」、さらには「Kubernetes応用コース」では、コンテナ技術を中心に学んできましたが、本コースでは一転して、Lambda、API Gateway、Step Functionsといった、サーバレスの文脈で登場するサービスを本格的に扱っていきます。
従来のコンテナによるアプリケーション運用とは異なり、サーバレスには独自の設計思想が求められます。そのあたりについても、各チャプターで丁寧に解説していきます。
サーバレスはややとっつきにくく感じるかもしれませんが、しっかりと構築できれば、名前の通り低コスト、スケーラブルで非常に強力な構成を実現できます。
ぜひこのAWS応用コースを通じて、サーバレスの持つ威力や、実務での運用ノウハウをとことん習得し、楽しんでいただければと思います。
前半では、フルサーバレス構成によるAPI基盤を構築していきます。
Lambda を API として外部に公開するには、API Gateway というサービスを前段におきます。
API Gateway には「HTTP API」と「REST API」の2種類がありますが、より機能が豊富で構築の難易度も高い REST API を選んで進めていきます。
SQSを使った非同期処理も扱います。
ECSでは常時起動するワーカーがポーリングしていましたが、Lambdaではそのような構成はできません。そのため、SQSからのイベントによってLambdaが起動される「プッシュ型」のアーキテクチャで、非同期処理を実現します。
API GatewayとCognito と連携することで、インフラレイヤーだけで完結する認証基盤を簡単に構築可能です。具体的には、Cognito を API Gateway のオーソライザーとして紐付け、IDトークンベースの認証を実現します。
ただし Cognito を使いこなすには、そもそも認証・認可の仕組みを理解しておくことが重要です。
「Cognitoが何をしているのか分からない…」という状態にならないよう、少しバックエンド寄りの内容になりますが、認証・認可の基本的な仕組みについても丁寧に解説する課題を用意しています。
しかし、高負荷のワークロードにおいては Lambda のスケーラビリティに対して RDS のコネクション数が追いつかず、DBコネクション枯渇のような問題が発生しがちです。
これを解決すべく、RDS Proxy を間に挟むことで コネクションプーリングを実現し、安定したDB接続を維持できるようにします。
加えて、RDS Proxy を導入すると、LambdaからRDSへの接続にIAM 認証が使えるようになります。これにより、環境変数にパスワードを持たせることなく、安全にRDSへアクセスできる激アツな構成を実現できます。
また、WAFは単なるブロック機能だけでなく、アクセス制御エンジンとしての役割も果たします。
たとえば、カスタムルールで一部アクセスを制御する、社内メンバー以外にメンテナンス画面を表示する、など、ちょっとした Nginx のような振る舞いをさせることも可能です。
多くの企業では、WAFを単なるブロッカーとして利用していますが、Cloud Praticaでは、知る人ぞ知る玄人向けの使い方についても習得していただきます。
後半では、Step Functions(ステップ・ファンクションズ)というサービスを深く扱っていきます。チャプターは「入門編」と「応用編」の2つに分かれており、それぞれ段階的に学べる構成になっています。
その上で、Step Functions 独自の文法や操作方法を、手を動かしながら実践的に学習していきます。
特に、Step Functions で使用する JSONata という便利な表現方法についても詳しく解説し、実際に以下のような基本的な動作をハンズオン形式で体験していきます。
・Step FunctionsからLambda、ECSタスクを起動 ・条件分岐(入力による分岐) ・並列実行(平行処理) ・並列ループ実行
たとえば、入力が画像であれば Lambda による圧縮処理、動画であれば ECS タスクを起動して処理、それらを並列で高速に捌く、といったワークフローを徐々に拡張を重ねていくハンズオン形式で習得してもらいます。
Step Functions は「なんとなく難しそう」と感じるエンジニアも多いですが、正しく使いこなせれば非常に強力な設計ツールになります。
この後半のチャプターを通じて、Step Functions をマスターし、今後の設計力・構成力の引き出しを一段と広げてもらえたら嬉しいです。
これまでECS中心の構成に慣れていたため、Lambdaのライフサイクルやコールドスタートを意識した設計は新鮮でした。特にRDS Proxy + IAM認証によるパスワードレスなDB接続は、コネクション枯渇問題を解決しつつセキュアな接続を実現できる点で、実務で即活用したい構成です。
今回のコースもかなりボリューム感があって大変でしたが、凄く楽しかったです!
API Gatewayは技術選定時にちょうどよい候補に上がったりするのですが、自分に知見がなく中々採用していませんでした。ただ、今回色々触ってみて結構使い所がわかりました。
認証認可周りはこれまで実装する機会があまりなく、現在の参画先でもアプリチームの担当範囲になっていることが多い様子のため、今回応用コースで一通り経験でき、理解がとても深まりました。