こんにちは、Continue86です。
AWSの知識を広げるために、AWSが公式で提供しているオンラインの学習コンテンツ「AWS Skill Builder」を受講しました。
AWS Skill Builderとは
AWSが提供しているオンラインの学習コンテンツです。
無料/有料で多くの学習コンテンツがコース別に用意されています。内容は学習テーマに関する説明動画を見て問題に解答する、画面内のAWSコンソール上での操作による学習、3Dロールプレイングゲームでの学習、AWS認定に向けての問題回答など、多くの形式で効果的に学べます。
学習コンテンツの内容や料金体系など、詳細は公式サイトで確認できます。
受講したコースの一覧と概要
・Introduction to Serverless Development 日本語実写版
サーバーレスアプリケーションを作成する時の開発者の役割について、コードの記述、コードの管理の2つの観点から説明する。サーバーレスアプリケーションでのテストとデバックについても説明あり。
・Getting into the Serverless Mindset 日本語実写版
サーバーベースのアーキテクチャとサーバーレスアーキテクチャの主な違いについて説明し、ワークロードにサーバーレス設計を適用する際の推奨事項をいくつか紹介する。
学習した感想
AWS Skill Builderを初めて利用しましたが、今回選択したコースの場合には説明動画の閲覧と問題回答を通して、学びたい分野の概要を過不足なく学習できました。選択したコースがいずれも入門的な内容だったため、より実践的な内容やAWSコンソール上での操作を伴うコースの学習に進みたいと思いました。
以下、コースごとの感想および学習内容の整理となります。
Introduction to Serverless Development 日本語実写版
サーバーレスの利点、コンピューティングサービスであるLambdaについて、サーバーレスアプリケーションの構成・管理・テスト・デバッグ、Lambda関数のコード記述といった項目から構成されます。
サーバーレスの利点
大別すると「ITインフラのコスト削減」「使用量に応じたコストの発生」「スケーラビリティと可用性の提供」「イノベーションの速度向上」が利点として紹介されています。インフラのコスト削減に関して、EC2やAuto Scalling等を使って開発した同要件のサーバーアプリケーションと比較してどれくらいコスト削減されるのか気になりました。
サーバーレスアプリケーションの構成
主な構成例として、「トリガーとなるイベントソース→Lambda→DynamoDBなど」が挙げられ、処理のトリガーとなるイベントソースとLambdaの間にIAMリソースポリシー、LambdaとDynamoDBなどの間にIAM実行ロールが関連します。
上記の構成については、以前にAWSのハンズオン学習にてAPI GatewayとLambdaとDynamoDBの組み合わせでのサーバーレスアプリケーション開発を体験していたのですぐに理解できました。
Lambda関数のコード記述について
簡単な関数はLambdaマネジメントコンソールに記述して実行します。本番アプリケーションでのコード実行ではコードのGit管理や自動デプロイなどの工夫が必要とのことです。
サーバーレスアプリケーションの管理
サーバーベースのアプリケーション開発と同じく、既存のIDEやGitを使用することは変わりません。その上で、AWS SAM(CloudFormationの構文を簡単に記述できるよう拡張したフレームワーク)を使用してサーバーレスアプリケーションの開発、デバッグ、デプロイ、コード定義と管理を合理化・簡略化できるとのことです。AWS SAMについても実際に触って理解してみたいと思いました。
サーバーレスアプリケーションのテスト
ローカルテストをする際には、DynamoDBなどローカルに存在しないサービスを含む場合があります。その場合はDynamoDB LocalとLocalStack、カスタムモックといったモックを使用してテストすることもできるとのことです。
モック(モックアップ)…Webサイトやソフトウェアを実装する前に一部または全体を試作したもの
Getting into the Serverless Mindset 日本語実写版
以下の項目から構成されます。
・サーバーレスによるコスト削減
・モノリスからマネージドサービスを活用した構成に
・Lambdaによる作業時間の短縮
・作業環境を増やして多くのイノベーションを実現する
「サーバーレスによるコスト削減」については上述の「Introduction to Serverless Development 日本語実写版」といくらか重複する内容だったため割愛します。
モノリスからマネージドサービスを活用した構成に
モノリス(=一枚岩)とは、複数の機能を一枚岩のように捉えてアプリケーションの構成と考えます。対して、サーバーレスアプリケーションの開発においてはAWS Lambda以外にもAPI Gateway、S3、Amazon Alexa、Amazon SQSなど多くのサービスをLambdaイベントソースとして使用でき、アプリケーションを構成する要素間の依存性を低めて、用途に応じてサービスを組み合わせることができます。
また、サーバーレスアーキテクチャを設計する際には「保存する必要があるデータと、そのデータに対してどのような操作を実行するべきか」とは考えずに
「システムにおいてアクションをトリガーする必要があるイベントは何か」と考えることが重要だとの説明があり、考え方の転換が必要とのことでした。
Lambdaによる作業時間の短縮
動画のトランスコーディング処理に対して、S3および複数のlambdaを並列使用することで処理時間を短縮できる事例が紹介されていました。
作業環境を増やして多くのイノベーションを実現する
サンドボックスアカウントを用意した上での本番同様の環境でのテスト実施や、本番テスト、バグ修正など用途によって複数の環境を作ることでの多くのサービス開発が促進されるとのこと。またそのためには構築・デプロイの自動化(CI/CD)が別途必要になるとの説明がありました。
サンドボックス…直訳すると「砂場」。ユーザーが通常利用する領域から隔離され、保護された領域に構築された環境のこと。
終わりに
サーバーレスアプリケーションについての導入レベルのコースを2つ学習してみましたが、サーバーレスの利点やアーキテクチャ、関連サービスについての概要を理解するには良い内容でした。ここから更にサーバーレスのハンズオン学習やサーバーレスアプリケーション開発に進むのも良いですし、他の関心があるサービスを対象とするコースを学習してAWSの幅広いサービスについて理解を広げていくのも良いと思いました。