【AWS SAP】Auroraがどうしても覚えられない人向け

# Auroraがどうしても覚えられない人向け

## Auroraの仕組み
- **分散ストレージアーキテクチャ**  
  Auroraは専用の分散ストレージレイヤーを持ち、データを6つのコピーに分散して保存します。この仕組みにより、高い耐障害性が実現されています。

```mermaid
flowchart LR
    subgraph AZ1[アベイラビリティゾーン1]
        DATA_BLOCK1[データ]
        DATA_BLOCK2[データ]
    end
    subgraph AZ2[アベイラビリティゾーン2]
        DATA_BLOCK3[データ]
        DATA_BLOCK4[データ]
    end
    subgraph AZ3[アベイラビリティゾーン3]
        DATA_BLOCK5[データ]
        DATA_BLOCK6[データ]
    end

    AZ1 <-->|データの同期| AZ2
    AZ2 <-->|データの同期| AZ3
    AZ3 <-->|データの同期| AZ1
```

- **リーダーレプリカ**  
  最大15個のリーダーレプリカを作成可能で、読み取り性能を大幅に向上できます。

```mermaid
flowchart TB
    PRIMARY[クライアント]
    PRIMARY --> REPLICA1[Auroraレプリカ]
    PRIMARY --> REPLICA2[Auroraレプリカ]
    PRIMARY --> REPLICA3[Auroraレプリカ]
    PRIMARY --> REPLICA4[・・・（最大15個）]
```

- **フェイルオーバー**  
  プライマリインスタンスが障害を起こした場合、リーダーレプリカがプライマリに昇格できます。

```mermaid
graph LR
    subgraph Amazon Aurora
        D[リードレプリカ]
        F:::障害発生
        D -->|昇格| F[新プライマリインスタンス]
    end
    classDef 障害発生 fill:#f96,stroke:#000,stroke-width:2;
```

## Auroraの主要機能とユースケース

### 主要機能
1. **Global Database**  
   複数のリージョンにまたがるデータベースを提供し、災害対策やグローバルな低遅延アクセスが可能
2. **Aurora Serverless**  
   自動スケーリングが可能なオンデマンドのデータベースで、使用量に応じてコストを削減
3. **並列クエリ**  
   クエリ処理を高速化するために分散アーキテクチャを活用

### ユースケース
- **高可用性**が求められるWebアプリケーション
- **高速な読み取り**性能を必要とする分析システム
- 負荷が不規則なアプリケーション（Aurora Serverlessの活用）

## 他サービスとの比較

| 特徴                  | Aurora                         | RDS                           | DynamoDB                    |
|-----------------------|--------------------------------|-------------------------------|-----------------------------|
| データモデル          | リレーショナル                 | リレーショナル                 | NoSQL                      |
| パフォーマンス        | 高い                          | 標準                          | 非常に高い                 |
| スケーラビリティ      | 自動（ストレージとリーダー）   | 手動または制限付き             | 自動                       |
| 主なユースケース      | 高可用性、トランザクション処理 | 一般的なRDB用途               | キーバリュー、低遅延要件  |

### Aurora MySQL互換版 vs Aurora PostgreSQL互換版
- **MySQL互換版**  
  既存のMySQLアプリケーションを移行しやすい  
- **PostgreSQL互換版**  
  高度な分析機能や複雑なクエリを必要とするユースケースに適している

## 最小構成（梅）

```mermaid
graph TD
    A[アプリケーション] -->|SQLクエリ| B[Auroraプライマリインスタンス]
    B -->|データ保存| C[Auroraストレージ]
    subgraph Auroraストレージ
        D1[自動バックアップ]
        D2[分散ストレージ]
    end
    C --> D1
    C --> D2

```
- 構成
    - Auroraプライマリインスタンス 1台
    - Auroraストレージ（自動バックアップ付き）
- 特徴
    - コスト: 最小限（インスタンス1台分のコスト）
    - 可用性: プライマリインスタンスが停止した場合、ダウンタイムが発生
    - 用途: テスト環境、小規模アプリケーション

## 中規模構成（竹）

```mermaid
graph TD
    A[アプリケーション] -->|SQLクエリ| B[Auroraクラスターエンドポイント]
    B -->|書き込み| C[Auroraプライマリインスタンス]
    C -->|データ保存| D[Auroraストレージ]
    C -->|非同期レプリケーション| E[Auroraリードレプリカ]
    B -->|読み取り| E
    subgraph Auroraストレージ
        D1[自動バックアップ]
        D2[分散ストレージ]
    end
    D --> D1
    D --> D2
```
- 構成
    - Auroraプライマリインスタンス 1台
    - Auroraリードレプリカ 1台
    - Auroraストレージ（自動バックアップ付き）
　
- 特徴
    - コスト: 中程度（インスタンス2台分のコスト）
    - 可用性: リードレプリカがプライマリ障害時に昇格可能（ダウンタイム短縮）
    - 用途: 中規模アプリケーション、読取負荷分散が必要な環境

## 大規模構成（松）
```mermaid
graph TD
    A[アプリケーション] -->|SQLクエリ| B[Auroraクラスターエンドポイント]
    B -->|書き込み| C[Auroraプライマリインスタンス]
    C -->|データ保存| D[Auroraストレージ]
    C -->|非同期レプリケーション| E1[Auroraリードレプリカ（AZ1）]
    C -->|非同期レプリケーション| E2[Auroraリードレプリカ（AZ2）]
    B -->|読み取り| E1
    B -->|読み取り| E2
    subgraph Auroraストレージ
        D1[自動バックアップ]
        D2[分散ストレージ]
    end
    D --> D1
    D --> D2
```
- 構成
    - Auroraプライマリインスタンス 1台
    - Aurora**リードレプリカ 2台**（異なるAZに配置）
    - Auroraストレージ（マルチAZ分散、自動バックアップ付き）
　
- 特徴
    - コスト: 高い（インスタンス3台分のコスト）
    - 可用性: 高可用性を実現（**AZ障害時でも継続可能**）
    - 用途: 大規模アプリケーション、高可用性が求められるプロダクション環境

## まとめ

AuroraはRDSの上位版！