コンテンツにスキップ

AWSでの扱い

AWS では、データベースを自前で OS から組むより、RDSAurora を使うことが多い。

AWS での実務イメージ

[App / ECS / EC2 / Lambda]
          |
          v
      [RDS/Aurora]
          |
   +------+------+
   |             |
[Backup]   [Metrics/Logs]

まず見るサービス

  • RDS AWS が DB の箱を管理してくれる
  • Aurora AWS ネイティブ寄りのマネージド RDB

インフラ担当として見る観点

個人的には、まず「DB を設計する」よりも以下を押さえる場面が多い。

  • どこに置くか
  • どう接続するか
  • どうバックアップするか
  • どう障害時に守るか

配置で見るポイント

  • サブネットグループが private 側にあるか
  • public access を不要に有効化していないか
  • セキュリティグループで接続元が絞られているか
  • アプリと DB の疎通経路が明確か

可用性で見るポイント

  • 自動バックアップ日数
  • マルチAZ の有無
  • リードレプリカの有無
  • フェイルオーバー時の接続影響
  • メンテナンスウィンドウ

監視で見るポイント

  • CPU 使用率
  • Freeable Memory
  • ストレージ使用量
  • 接続数
  • Read / Write Latency
  • スロークエリ
  • Performance Insights の有無

よくある構成

  • EC2 -> RDS 比較的基本的な構成
  • ECS -> RDS コンテナ化されたアプリから接続
  • Lambda -> RDS/Aurora 同時接続数や接続管理に注意が必要

障害時に見るポイント

  • セキュリティグループ変更が入っていないか
  • エンドポイント先が想定通りか
  • フェイルオーバー後にアプリが再接続できているか
  • バックアップからどこまで戻せるか
  • 直前のデプロイやスキーマ変更が影響していないか

メモ

  • AWS では 作る より 安全に置く 安全に運用する が重要
  • 特に RDS/Aurora は、ネットワーク、認証、監視、バックアップをセットで見る