AWSでの扱い¶
AWS では、データベースを自前で OS から組むより、RDS や Aurora を使うことが多い。
AWS での実務イメージ¶
[App / ECS / EC2 / Lambda]
|
v
[RDS/Aurora]
|
+------+------+
| |
[Backup] [Metrics/Logs]
まず見るサービス¶
RDSAWS が DB の箱を管理してくれるAuroraAWS ネイティブ寄りのマネージド 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 は、ネットワーク、認証、監視、バックアップをセットで見る