ようへいの日々精進XP

よかろうもん

2018 年 09 月 03 日 (月)

ジョギング

  • 香椎浜 x 2 周
  • かなりシューズがすり減ってきたので変え時かなー
  • 引き続き, 右足が全体的にアレ
  • 熱中症気味

日課

  • (腕立て x 50) x 3
  • 腹筋はまだ腰が痛くなりそうなので止めてる

今日の AWS ~ 色々メモ ~

DynamoDB

可用性

  • DynamoDB では, 同じ AWS リージョン内の 3 つの施設間でデータが同期的にレプリケートされる為, 可用性とデータ耐久性も高まる

整合性モデル

  • 結果的に整合性のある読み込み (デフォルト)
    • 結果整合性のあるオプションを選択すると, 読み込みスループットが最大限に向上する
    • 場合によっては, 最新の書き込み結果が反映されない可能性がる
  • 強い整合性の読み込み
    • GetItem, Query, Scan においてオプションとして指定可能
    • キャパシティユニットを 2 倍消費する
    • Read リクエストを受け取る前までの Write が全て反映されたレスポンスを保証

料金体系

  • プロビジョンドスループット
  • ストレージ利用量
    • 無料枠 (25GB)
    • 0.25$/GB
  • キャパシティユニット
    • 書き込み
      • 1 ユニット: 最大 1KB のデータを 1 秒に 1 回書き込み可能
    • 読み込み
      • 1 ユニット: 最大 4KB のデータを 1 秒に 1 回書き込み可能 (強い一貫性を持たない読み込みであれば, 1 秒辺り 2 回)

テーブル設計

  • プライマリキー
    • Partation key
    • Partation Key と Sort Key

Scaling

  • スループット
  • サイズ
    • 1 つのアイテムの合計サイズは 400KB
    • local secondary index は異なるハッシュキー毎に最大 10GB のデータを格納

Local Secondary Index

  • Sort Key 以外に絞り込み検索を行う Key を持つことが出来る
  • Partition Key が同一で, 他のアイテムからの検索の為に利用

Global Secondary Index

  • Partition Key 属性の代わりとなる
  • Partition Key をまたいで検索を行うインデックス

高度なテーブル操作

  • 強い一貫性を持った Read オペレーション
    • GetItem, Query, Scan には Consistent Read オプションを指定可能
    • Read Capacity Unit を 2 倍消費する
  • Conditionl Write
    • 条件付き書き込み, 更新
  • Filter 式による結果の絞り込み
    • Query と Scan で利用可能
  • UpdateItem における Attribute への操作
  • Atomic Counter

Beanstalk 構成, 対応プラットフォーム等

SQS

識別子

  • Queue URL
  • Message ID
  • Receipt Handle
    • メッセージ削除, Visibility の変更に必要
    • メッセージ受信毎に受信する
    • 同一メッセージでも受信毎に異なる

コスト

  • 100 万キューイングリクエストまでは無料
  • SQS リクエスト 100 万件につき 0.476 USD/GB
  • データ転送
    • 送信にコスト発生
    • 同一リージョン内の SQS と EC2 インスタンスのデータ転送は無料

効率化

  • Visibility Timeout (Default: 30 秒, 最大 12 時間)
    • 複数の受信者がある場合, 受信者 1 が受信後, 他の受信者が受信出来ない (見せない) 状態にする (in Flight)
  • スポットインスタンスを使おう
  • メッセージの送受信は最大 10 件
    • SQS へのリクエストが少なければ少ない程コスト効率が良い
    • 送信: send-message-batch, 受信: receive-message の --max-number-of-messages オプションを利用する (デフォルト 1, 最大 10)
  • Long Polling
    • Recieve Message Wait Time
    • メッセージが取得出来るまで 待つ時間を設定出来る (0 秒から 20 秒)

上限

  • メッセージの保持期間
    • デフォルトでは 4 日間保持
    • 60 秒から 14 日間で変更可能
  • In Flight されたメッセージ
    • 1 キュー毎に 120,000 In Flight メッセージ
    • 超過すると OverLimit エラー
  • メッセージの最大サイズ
    • 64KB から 256KB に拡張された (2013/06)

その他の機能

  • Delay Queue
    • キューに送られた新しいメッセージを一定期間見えなくする
    • 0 〜 900 秒
    • 全てのメッセージに適用される
  • Message Timer
    • 個々のメッセージに対して, 送信されてから見えるようになるまでの時間を設定
    • 0 〜 900 秒
    • Delay Queue の遅延時間設定を上書きする
  • Dead Letter Queue
    • Worker 側の不具合等でキュー内に削除されず残ってしまったメッセージについて, 指定回数受信したら Dead Letter Queue に移動する

フムフム.