ストレージ
AWSは、さまざまなストレージニーズに対応するオプションを提供しています。以下に主要なカテゴリを詳しく解説します。
ブロックストレージ
- Amazon Elastic Block Store (EBS): EC2インスタンスにアタッチされるブロックストレージで、ハードディスクのように使用可能です。EBSボリュームはインスタンス終了後もデータが保持されます。
- インスタンスストア: 一部のEC2インスタンスタイプに付属する一時的なストレージで、インスタンス停止時にデータが失われます。高速なI/Oが必要なワークロードに適しています。
ファイルストレージ
- Amazon Elastic File System (EFS): 完全に管理されたファイルシステムで、Linuxベースのワークロードに最適です。NFSv4プロトコルを使用し、自動的にスケーリングします。複数のAZにまたがる高可用性が特徴です。
- Amazon FSx: さまざまなファイルシステムをクラウドで管理可能にします。
- FSx for Windows File Server: Windows環境向け、SMBプロトコル対応。
- FSx for Lustre: 高性能コンピューティング(HPC)や機械学習に適し、大規模データ処理に最適。
- FSx for NetApp ONTAP: NetAppの機能をクラウドで利用可能、NFS/SMB/iSCSI対応。
- FSx for OpenZFS: OpenZFSのスナップショットやデータ整合性チェック機能を活用。
EFSとFSxの選択基準は、ワークロードのOSやパフォーマンス要件によります。例えば、LinuxベースのウェブアプリケーションではEFSが適し、Windowsベースのファイル共有が必要な場合はFSx for Windows File Serverを選ぶと良いでしょう。
オブジェクトストレージ
- Amazon Simple Storage Service (S3): 耐久性が高く(11ナイン、年間99.999999999%の耐久性)、スケーラブルなオブジェクトストレージです。バックアップ、データレイク、メディアストレーミング、静的ウェブサイト、アーカイブなどに利用されます。
- バケットとオブジェクト: バケットはオブジェクトを格納するコンテナで、オブジェクトはファイルとそのメタデータ(例:写真の撮影日時や場所)を含みます。
- アクセス制御: デフォルトはプライベート設定で、他のユーザーはアクセスできません。パブリック設定はセキュリティリスクが高いため非推奨で、バケットポリシーやアクセスポイントを活用することが推奨されます。例えば、バケットポリシーを使用して特定のIAMロールのみアクセスを許可する設定が可能です。
- 暗号化: SSE-S3(S3管理キー)やKMSキー、カスタマー提供キー(SSE-C)でデータを保護できます。KMSキーはキーのローテーションや監査が容易です。
- ストレージクラス:
- S3 Standard: 高いアクセス頻度でミリ秒単位のアクセスが必要な場合。コストは高いがパフォーマンスが優れる。
- S3 Standard-IA: アクセス頻度が低いデータで、コストを抑えたい場合。
- S3 One Zone-IA: 1つのAZに保存され、コストがさらに低い。災害復旧には不向き。
- S3 Glacier: 長期保存向けで、復元が必要な場合に使用。zipファイルのようなイメージで考えられます。
- S3 Glacier Deep Archive: コストが最も低いが、復元に12時間かかり、復元コストが高い。
- S3 Intelligent-Tiering: アクセスパターンに基づき自動的にクラスを変更。30日間アクセスがないと低頻度アクセス階層へ、90日間ないとアーカイブへ移行。
- バージョン管理: オブジェクトの複数のバージョンを保持し、誤削除や変更から保護。
- ライフサイクルポリシー: オブジェクトの保存日数に基づき、ストレージクラスを自動移行(例:ログデータの長期保存)。
- レプリケーション: 同一リージョン内やクロスリージョンでデータを複製可能。静的機能のため、手動設定が必要です。
- マルチパートアップロード: 大きなファイルを分割してアップロードし、効率化。
- 転送加速: 長距離データ転送を高速化し、エッジロケーションを利用。
- イベント通知: S3にオブジェクトがアップロードされた際にLambda関数やSNSトピックに通知可能。
ベストプラクティス
- バケットポリシーでアクセス制御を細かく設定し、パブリックアクセスを避ける。
- ライフサイクルポリシーでコスト最適化を図り、アクセス頻度が低いデータは安価なクラスに移行。
- バージョン管理を有効にして、データ損失リスクを低減。
- 暗号化を活用し、データ保護を強化。
共有ファイルシステム
共有ファイルシステムは、複数のインスタンスやユーザーが同時にアクセス可能なストレージを提供します。
- Amazon EFS:
- Linuxベースのワークロード向けで、NFSv4プロトコルを使用。
- 自動スケーリングで容量とパフォーマンスを調整可能。
- 高可用性で、複数のAZにデータがレプリケート。
- 利点: バーストスループットモードで使用量に応じたスケーリング、低頻度アクセスや1ゾーン選択でコスト削減可能。
- Amazon FSx:
- オープンソースや一般的なファイルシステムをクラウドで提供。
- FSx for Windows: Windows環境向け、SMBプロトコル対応。
- FSx for Lustre: HPCや機械学習向け、高速データアクセス。
- FSx for NetApp ONTAP: NetAppの機能をクラウドで利用。
- FSx for OpenZFS: OpenZFSのスナップショット機能を利用。
- 利点: ハードウェア管理やパッチ適用が不要で、バックアップも自動化。
選択基準
- EFSはLinuxベースの共有ストレージが必要な場合に最適。
- FSx for WindowsはWindowsワークロードやActive Directory統合が必要な場合。
- FSx for Lustreは大規模データ処理やHPCに適し、FSx for NetApp ONTAPはNetApp環境のクラウド移行に。
データ移行ツール
- AWS Storage Gateway: オンプレミスとクラウドのハイブリッド環境で使用。オブジェクト保存をクラウドに。
- AWS DataSync: オンプレミスとS3/EFS/FSx間で大量データ転送を効率化。
- AWS Snowファミリー: ネットワーク環境が限定的な場合に物理デバイスでデータ移行。SnowconeやSnowball Edgeでペタバイト規模の移行も可能。
データベース
AWSのデータベースサービスは、リレーショナルと非リレーショナルの両方をカバーし、さまざまなニーズに対応します。
リレーショナルデータベースと非リレーショナルの比較
- リレーショナル(SQL)データベース:
- 行と列のテーブル形式で、厳格なスキーマルールが必要。
- データ品質確保や複雑なクエリに適し、読み書き負荷が低い場合に有効。
- 例: MySQL、PostgreSQL。
- 非リレーショナル(NoSQL)データベース:
- キーと値、ドキュメント、グラフなど柔軟なモデル。
- 水平スケーリングが必要な場合や、スキーマが変化するデータに適。
- 高速な読み書きが必要な場合に有効。
- 例: DynamoDB。
マネージドサービスとアンマネージドサービスの選択
- マネージドサービス: RDSやDynamoDBのように、AWSがバックアップやパッチ適用を管理。推奨される。
- アンマネージドサービス: EC2上でデータベースソフトウェアをインストールし、自力で管理。特定のバージョンが必要な場合に選択。
Amazon RDS
- サポートエンジン: Aurora、PostgreSQL、MySQL、MariaDB、Oracle、SQL Server。
- マルチAZ配置: 2つのAZに配置し、プライマリDB障害時に自動フェイルオーバー。
- リードレプリカ: 読み取り専用DBを用意し、読み込み負荷分散。
- 暗号化: KMSキーによるデータ保存時暗号化。
Amazon Aurora
- AWS独自のサービスで、MySQL/PostgreSQLと互換性あり。
- パフォーマンスはMySQLの5倍、PostgreSQLの3倍。
- Aurora Serverless: コンピューティング管理不要で、課金は呼び出し回数ベース。
Amazon DynamoDB
- NoSQLデータベースで、フルマネージド。
- 容量とスケーリング: オンデマンド(リクエストごと課金)またはプロビジョニング済み(RCU/WCU設定)。
- 整合性オプション: 強力な整合性(1RCU使用)や結果整合性(0.5RCU使用)。
- グローバルテーブル: リージョン間レプリケーション自動化。
データベースキャッシング
- ElastiCache: MemcachedやRedisでキャッシュを管理。リレーショナルDBの前段に配置。
- DynamoDB Accelerator (DAX): DynamoDB向けキャッシュで、マイクロ秒応答時間を実現。
ベストプラクティス
- RDS vs DynamoDBの選択: トランザクションデータはRDS、キーバリュー型データはDynamoDB。
- キャッシングを活用し、DB負荷を軽減。
データベース移行ツール
- AWS Database Migration Service (DMS): 異種データベース間移行をサポート。継続的レプリケーションでダウンタイム最小化。
- Schema Conversion Tool (SCT): スキーマ変換を支援し、RDSやAuroraへの移行を容易にする。
モニタリング
モニタリングは、アプリケーションとインフラの健全性を維持するために不可欠です。
- Amazon CloudWatch:
- メトリクス収集(EC2、RDSなど)し、ダッシュボードで可視化。
- アラームを設定し、SNSで通知可能。
- CloudWatch Logs:
- ログデータを収集・検索。リアルタイム分析にはコストが高いため、S3+Athenaでコスト最適化。
- Amazon CloudTrail:
- APIコールの履歴をログ化し、セキュリティ監査に利用。ログは自動的にS3に保存。
- VPC Flow Logs:
- VPC内のネットワークトラフィックをキャプチャし、S3やCloudWatchに収集。
- Amazon EventBridge:
- イベント駆動型自動化を可能にし、SaaSやAWSサービス間の統合を簡素化。
ベストプラクティス
- CloudWatchアラームでクリティカルメトリクスの閾値監視。
- EventBridgeでスケジューリングやLambdaトリガー設定。
ロードバランシング
トラフィックを複数のターゲットに分散し、高可用性とパフォーマンスを確保。
- Elastic Load Balancing (ELB):
- Application Load Balancer (ALB): HTTP/HTTPS(レイヤー7)でルーティング。
- Network Load Balancer (NLB): TCP/UDP(レイヤー4)で高パフォーマンス。
- Gateway Load Balancer (GLB): IP(レイヤー3)でVPC間トラフィック分散。
- コンポーネント: リスナー、ターゲットグループ、接続ドレーニング(障害時接続維持)。
ベストプラクティス
- アプリケーション特性に応じ、ALB(HTTP)やNLB(TCP)を選択。
- ヘルスチェックで健全なターゲットのみにトラフィックをルーティング。
オートスケーリング
需要に応じてリソースを自動調整し、パフォーマンスとコストを最適化。
- Amazon EC2 Auto Scaling:
- 起動テンプレートでインスタンス設定定義。
- オートスケーリンググループでインスタンス群管理。
- スケーリングポリシーでCPU利用率などに基づきスケールイン/アウト。
- 特徴: 動的スケーリング(リアルタイム対応)、予測スケーリング(ML予測)、スケジュールスケーリング(定時対応)。
ベストプラクティス
- 適切なメトリクス(CPU利用率など)でスケーリングトリガー設定。
- CloudWatchでパフォーマンス監視し、ポリシー調整。
自動化
インフラ管理を効率化するツール群。
- Amazon CloudFormation:
- IaCでJSON/YAMLテンプレートを使用。スタック単位でリソース管理。
- 再利用性高く、ドリフト検知やロールバック可能。
- Elastic Beanstalk:
- PaaSでアプリデプロイを簡素化。Java、.NETなど対応。
- 自動スケーリングとバージョン管理をサポート。
- AWS CDK:
- プログラミング言語(Pythonなど)でインフラ定義。if文やfor文使用可能。
- Amazon Systems Manager:
- ハイブリッド環境のノード管理を一元化。パッチ管理やセッションマネージャー提供。
- Amazon Q:
- AIアシスタントでコーディング支援や運用問題解決。無料枠あり。
ベストプラクティス
- CloudFormationでテンプレート再利用し、一貫性確保。
- Elastic Beanstalkでアプリデプロイを迅速化。
0 件のコメント:
コメントを投稿