Developing Serverless Solutions on AWS とは?
AWS 認定トレーニングについて
AWS 認定トレーニングは AWS の公式トレーニングメニューであり、クラスメソッドは AWS 認定トレーニングを提供できる AWS トレーニングパートナーです。プロフェッショナルな AWS エンジニアが講師を務めており、職務やスキルに応じて選べる実践的なコースを提供しています。
「どのコースを選べばいいの?」という方は、まずは以下の記事をご一読いただければと思います。
コース概要
Developing Serverless Solutions on AWS は開発者向けのコースで、下記の図の黄色のカードに位置するコースになります。
このコースでは、主に AWS Lambda や AWS サーバーレスプラットフォームの他のサービスを利用して、サーバーレスアプリケーションを構築するためのベストプラクティスを学びます。60 〜 90 分に渡る本格的なラボに加え、「Try It Out」と呼ばれる簡単なハンズオンがトレーニングの随所に挿入されており、実際にサーバレスアプリケーションのデプロイからデプロイパイプラインの構築まで実践します。
受講に必要な知識
- プログラミングの基礎知識(関数の概念など)
- AWS クラウドアーキテクチャに関する基礎知識
- AWS Lambda や Amazon API Gateway の利用経験
- 受講前に他の AWS サーバーレスサービスについて軽くでも良いので触っておくとベター
オススメする人
- アプリケーション開発の経験がある
- AWS クラウドでのサーバーレス開発への興味、あるいは経験がある
こうして見ると「このコースって結構難しめかも……?」と思われる方もいらっしゃるかもしれませんが、分からないことがあっても講師の方が全力でサポートしてくれるので全く問題ありません。事実、私はトレーニング中に少しでも疑問があれば初歩的な内容でも何でも即質問していましたが、講師の方も「質問大歓迎!」というマインドで快く答えてくださりました。
また、サーバーレス開発の経験が乏しかったとしても、経験豊富な講師の方がご自身の経験などを交えた具体的な説明をしてくれるため、ハンズオンを通して各 AWS サービスの利用イメージを持つことができるかと思います。
トレーニング内容
3 日間で実施されるトレーニング内容は以下のようになります。
モジュール 1: サーバーレス思考
- サーバーレスのメリット、導入課題
- アプリケーションサービスの範囲を設定する作業を分割する
- イベント駆動型設計
- AWS におけるサーバーレス
モジュール 2: API 駆動の開発と同期イベントソース
- 同期イベントソース
- Amazon API Gateway
- Try it out: HTTP API の作成
- Amazon API Gateway コンソールを使って AWS Lambda 関数と統合された HTTP API を構築する
- (オブション)例に基づいて REST API を構築してデプロイし、API 用の SDK を生成する
- GraphQL API と AWS AppSync
モジュール 3: 認証、認可、アクセスコントロールの概要
- 認証と認可
- API Gateway オーソライザー
- Amazon Cognito
モジュール 4: サーバレスデプロイのフレームワーク
- AWS CloudFormation
- AWS CDK
- AWS SAM
- Amplify フレームワーク
ラボ 1: シンプルなサーバーレスアプリケーションのデプロイ
このラボでは、以下構成図のような Web サービス環境を構築します。
技術要素
- AWS Amplify
- AWS サーバーレスアプリケーションモデル (AWS SAM)
- Amazon Cognito
- Vue JavaScript フレームワーク
- AWS Cloud9
- Swagger API
- Amazon DynamoDB
具体的な内容としては、以下のようなことを実施します。
- Amazon Cognito ユーザープールを使用した認証の設定
- AWS SAM を使用してバックエンドコードをデプロイ
- Swagger エディタを使用して API ドキュメントを表示
- フロントエンドの設定を更新し、AWS Cloud9 を使ってビルドを実行し、デプロイ前にテスト
- Amplify を使用してフロントエンドアプリケーションをデプロイ
これ以降のラボはこの環境をベースに発展させていく形になります。
モジュール 5: Amazon EventBridge と Amazon SNS を使用して コンポーネントを疎結合化する
- 非同期イベントソース
- EventBridge
- Try it out: EventBridge ルールの設定
- EventBridge コンソールを使ってカスタムイベントバスを構築し、カスタムイベントルールを追加する
- Amazon SNS
- Try it out: Amazon SNS トピックとサブスクリプションを設定する
- Amazon SNS コンソールで、属性フィルタリングを使用して Lambda 関数をトピックにサブスクライブする
ラボ 2: Amazon EventBridge を使用したメッセージのファンアウト
ラボ 1 で構築した環境に対して、以下の青枠で囲んでいる部分を追加していきます。
技術要素
- Amazon DynamoDB Streams
- Amazon SNS
- Amazon EventBridge
このラボを通して、ラボ 1 の構成に影響を与えることなく疎結合で新たなコンポーネントを追加できる、その拡張性を実際に体験します。
モジュール 6: キューとストリームを使用したイベント駆動型開発
- ポーリングイベントとイベントソースのマッピング
- Amazon SQS
- Try it out: Amazon SQS コンソールの使用
- SQS コンソールを使ってキューを Lambda イベントソースとしてセットアップする
- Kinesis Data Streams と DynamoDB Streams
モジュール 7: 優れた Lambda 関数を書く
- Lambda アプリケーション
- Try it out: アプリケーションのセットアップ
- 例から 2 つのサーバーレスアプリケーションを構築する
- Lambda のライフサイクル
- 関数を設定する
- Try it out: Lambda コンソール
- Lambda コンソール
- 関数コード
- バージョンとエイリアス
- 関数の実行とテスト
- Lambda のエラー処理
モジュール 8: AWS Step Functions を使用したオーケストレーション
- Try it out: Step Functions コンソール
- AWS Step Functions
- Try it out: エクスプレスワークフローのトラブルシューティング
- Step Functions コンソールを使用して、Express ワークフローをスタンダードのワークフローにコピーし、視覚的にトラブルシューティングする
ラボ 3: AWS Step Functions を使用したワークフローオーケストレーション
このラボで構築するアーキテクチャは以下の図の通りです。
技術要素
- AWS Step Functions
ラボ 3 では、これまでのラボで構築した構成の EventBridge にトリガーを追加していきます。そのトリガーから Step Functions のステートマシンを起動し、非同期で進行するワークフローを実行します。ワークフロー内では、人的レビューのための手動承認ステップが含まれており、実践的な Step Functions の活用方法を体験できます。
モジュール 9: オブザーバビリティとモニタリング
- オブザーバビリティ
- Amazon CloudWatch Logs
- Try-it-out 演習: API Gateway のログ記録と X-Ray を有効化する
- Amazon API Gateway のログ記録と AWS X-Ray のトレースを設定し、サンプルトラフィックを生成します。
- Try-it-out 演習: CloudWatch Logs
- CloudWatch ログ
- AWS X-Ray
- Try-it-out 演習: X-Ray
- CloudWatch X-Ray トレース
- Amazon CloudWatch
- Try-it-out 演習: CloudWatch メトリクス
- Try-it-out 演習: CloudWatch メトリクス
- Try-it-out 演習: CloudWatch ServiceLens
ラボ 4: オブザーバビリティとモニタリング
これまで開発してきたアプリケーションにオブザーバビリティ(可観測性)を組み込んでいきます。
技術要素
- AWS X-Ray
- Amazon CloudWatch Logs Insights
- Artillery
ラボ 4 には、エラーを発生させるように意図されたコードが予め組み込まれています。そこで、AWS X-Ray トレースと CloudWatch を既存の環境と連携させることによって、アプリケーションのモニタリングとトラブルシューティングを行います。
モジュール 10: サーバーレスアプリケーションのセキュリティ
- すべてのレイヤーにセキュリティを適用する
- API Gateway とアプリケーションのセキュリティ
- Lambda とアプリケーションのセキュリティ
- サーバーレスデータストア内のデータを保護する
- 監査、トレーサビリティ、セキュリティのオートメーションを実現する
ラボ 5: サーバーレスアプリケーションのセキュリティ保護
このラボでは、各種セキュリティサービスを利用してサーバレス環境のセキュリティを強化していきます。
技術要素
- AWS WAF
- AWS Key Management Service (AWS KMS)
- AWS Systems Manager Parameter Store
- AWS Secrets Manager
モジュール 11: サーバーレスアプリケーションでのスケール処理
- API Gateway を使用してスケールを管理する
- Lambda 同時実行スケーリング
- Lambda を使用して異なるイベントソースをスケールする方法
- 構築、測定、学習、繰り返し
モジュール 12: デプロイパイプラインの自動化
- ベストプラクティス
ラボ 6: AWS 上のサーバーレス CI/CD
ラボ 6 では、CI/CD パイプラインを設定して構築とデプロイのプロセスを自動化していきます。以下はその構成図です。
技術要素
- AWS CodeCommit
- AWS CodePipeline
- AWS CodeBuild
- AWS CodeDeploy
- AWS Cloud Development Kit (AWS CDK)
このラボでは、AWS でカナリアデプロイメントを実施する方法を体験します。
所要時間が約 90 分に設定されており、最後のラボにふさわしいボリュームの内容になっています。
まとめ
本記事では Developing Serverless Solutions on AWS コースの体験レポートをお届けしました。
受講後の感想として、AWS におけるサーバーレス開発について体系的に学ぶことのできるとても実践的なコースだと感じました。ある程度 AWS を触ったことがある方であれば、多くの学びを持ち帰ることができると思いますが、アプリケーション開発の経験がある方にとっては更に面白く感じられるコースかと思います。
本コースは 2024 年 6 月から新規開講予定です。「サーバーレスアプリケーションにおける適切なサービス選定、開発組織や環境に応じたアーキテクチャ設計について学びたい」という方は、是非受講をご検討ください!
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。