会員登録すると
学習することができます。
会員登録する(無料)
学習することができます。
登録済みの方はこちら
ログイン
学ぶ目的
キャッシュを選ぶ
同じ答えを何度も計算したり読んだりしないように、結果を近くに覚えておきます。
- ElastiCache … Valkey・Redis OSS・Memcached を使うインメモリのキャッシュ。データベースの前に置く
- DynamoDB Accelerator(DAX) … DynamoDB 専用のキャッシュ。コードをほとんど変えずに読み込みを速くする
- CloudFront … 世界中の拠点で、画像や応答を利用者の近くに置く
- API Gateway のキャッシュ … REST API のステージで、応答を覚えておく
キャッシュの書き方には、読みに来たときに無ければデータベースから読んで入れる遅延読み込み(lazy loading)と、書き込むたびにキャッシュも書き換える書き込みスルー(write-through)があります。古い値が残りすぎないように TTL(有効な時間)を付けます。
再試行と指数バックオフ
スロットリングや一時的なエラーは、間を空けてやり直せば成功することが多いものです。待つ時間を 100 ミリ秒、200 ミリ秒、400 ミリ秒、800 ミリ秒と倍々に広げるのが指数バックオフです。さらに待つ時間にばらつき(ジッター)を加えると、多くの呼び出しが同じ瞬間にやり直して、また混むことを防げます。AWS の SDK は、この再試行を自動で行います。
Lambda の最適化
- メモリを増やすと CPU も増えるので、計算の重い処理は速くなる。速くなった分、実行時間が短くなる
- データベースの接続や SDK のクライアントは、ハンドラの外で作って、次の呼び出しで使い回す
- コールドスタートを減らすには、プロビジョニングされた同時実行や、対応するランタイムでの SnapStart を使う
メッセージングの最適化
SQS は、まとめて送る・受け取る(バッチ)と呼ぶ回数が減ります。ロングポーリング(最大20秒、メッセージが来るまで待つ)で、空の応答を減らせます。1件を複数に配るなら、SNS のファンアウトにします。
このレクチャーで学ぶこと
- ElastiCache・DAX・CloudFront・API Gateway のキャッシュの選び分け
- 遅延読み込みと書き込みスルー、TTL
- 指数バックオフとジッターによる再試行
- Lambda のメモリ・接続の使い回し・コールドスタート対策
質問
まだ質問は投稿されていません。
質問投稿
ログイン後に質問の投稿ができます。
#1
未完了
認証と認可 ― Cognitoのユーザープールとアイデンティティプール、APIの守り方
#2
未完了
暗号化と秘密情報 ― KMSのエンベロープ暗号化、Secrets ManagerとParameter Store
#3
未完了
AIサービスを安全に組み込む ― アクセスの管理、入力と出力の制御、エージェントとログ
#4
未完了
デプロイの準備とテスト ― SAM・CloudFormation・CDK、エイリアスと環境ごとの設定
#5
未完了
CI/CDとデプロイ方式 ― CodePipeline・CodeBuild・CodeDeployとカナリア・ロールバック
#6
未完了
監視とトラブルシューティング ― CloudWatchのログ・メトリクス・アラームとX-Rayのトレース
#7
未完了
最適化 ― キャッシュ、再試行と指数バックオフ、Lambdaのメモリと同時実行
#8
未完了