0
0

AWS勉強備忘録13 - S3

Last updated at Posted at 2024-03-19

Amazon S3は、AWSが提供するオブジェクトストレージサービスです。これは、インターネット上で大量のデータを保存、取得するための耐久性に優れたプラットフォームを提供します。S3は「Simple Storage Service」の略で、その名の通りシンプルで強力なデータストレージソリューションを提供します。

オブジェクトストレージサービスとは

オブジェクトストレージサービスは、データをファイルとしてではなく、オブジェクトとして管理します。各オブジェクトにはデータ本体、メタデータ、グローバルにユニークなIDが含まれます。この設計により、スケーラビリティと管理のしやすさが大幅に向上します。

S3の特徴と主な機能

WEBサーバー機能

S3は静的コンテンツのホスティングに利用でき、HTML、CSS、JavaScriptファイルなどを直接S3バケットに保存して、ウェブサイトとして公開することができます。EC2インスタンスをWebサーバーとして利用することも可能ですが、S3を使用することで、サーバーの管理やスケーリングの手間を省くことができます。

クエリ機能

S3 SelectやAmazon Athenaの使用により、S3に保存されたデータに対して直接クエリを実行できます(CSVやJSONのような構造化されたテキスト形式のデータに対してSQLのSELECT文を実行可能)。これにより、大規模なデータセットから必要なデータのみを効率的に抽出し、アプリケーションのパフォーマンス、データの抽出・分析のパフォーマンスを向上させることができます。

S3の主要な利点

スケーラビリティ

S3は自動的にスケールし、どんな量のデータも保存できます。ユーザーはストレージ容量を気にすることなく、任意の量のデータをS3に保存できます。

可用性と耐久性

可用性は、システムが稼働し続ける能力を意味し、S3は99.99%の稼働率を保証しています。耐久性は、データが失われるリスクを低減する能力を指し、S3は99.999999999%(11 9's)の耐久性を提供します。

信頼性

AWSの広範なインフラストラクチャにより、S3は高い信頼性を持っています。データは複数の物理的なロケーションに自動的に複製されるため、災害時でもデータの安全性が確保されます。

管理機能とインテリジェントな機能

S3は、ストレージクラス分析、ライフサイクルポリシー設定など、豊富なデータ管理機能を提供します。

AWS Lambdaとの連携

S3とAWS Lambdaの連携により、データがS3にアップロードされた際に自動的にコードが実行されるイベント駆動型のアーキテクチャを構築できます

補足1: RailsアプリをAWSデプロイする場合

Railsで開発されたアプリケーションをデプロイする際には、一般的にAmazon EC2(Elastic Compute Cloud)がよく利用される。EC2インスタンス上でRailsアプリケーションを実行することにより、アプリケーションのサーバーサイドのロジックを処理し、ユーザーリクエストに応じて動的なコンテンツを生成して提供できます。

一方、Amazon S3(Simple Storage Service)は、オブジェクトストレージサービスであり、静的ファイルやメディアファイル、バックアップなど、大量のデータを保存・配信するために設計されています。S3はデータベースとしては使用されず、主に静的コンテンツのホスティングやデータのバックアップ、アーカイブ用途に適しています。

したがって、Railsアプリケーションのデプロイにおいて、EC2はアプリケーションの実行環境として、S3は静的アセット(画像、CSSファイル、JavaScriptファイルなど)の保存や配信、バックアップの保管場所としてそれぞれ異なる役割を担います。

データベースについては、Railsアプリケーションでは通常、Amazon RDS(Relational Database Service)やAmazon DynamoDBのようなAWSのマネージドデータベースサービス、またはEC2インスタンス上に自らデータベースサーバー(例:PostgreSQL、MySQL)を設定して使用することが一般的です。これらのデータベースサービスは、アプリケーションのデータを管理し、高いパフォーマンスとスケーラビリティ、簡単な管理を提供します。

補足2: EC2上にPostgreSQLを設置する場合と、Amazon RDSを使用する場合の比較

EC2上のPostgreSQLのスケーラビリティ

EC2インスタンス上に直接PostgreSQLを設置する場合、スケーラビリティの管理は全て手動で行う必要があります。これには、インスタンスのサイズ変更、レプリケーションの設定、ロードバランサーの設定、バックアップの管理などが含まれます。データベースが成長するにつれて、これらの作業はより複雑になり、運用の負担が増大します。自動スケーリングの設定や運用は可能ですが、そのための設定や管理は自己責任となり、専門知識が必要です。

AWS RDSの利点

Amazon RDSを使用すると、これらのスケーラビリティと管理の課題が大幅に軽減されます。RDSはマネージドサービスであり、データベースのセットアップ、パッチ適用、バックアップ、スケーリングなどの管理タスクを自動化します。具体的には、数クリックでデータベースのレプリケーションやリードレプリカの設定が可能で、負荷に応じて自動的にストレージをスケールアップする機能も提供します。また、RDSは高可用性のためのマルチAZデプロイメントを簡単に構成でき、故障時の自動フェイルオーバー機能を持っています。
結論として、EC2上に自分でデータベースを設定することも可能ですが、スケーラビリティや運用の簡便さを考慮すると、AWS RDSの利用が推奨されます。

補足3: S3の代替品としてのWasabi

Amazon S3の代替品としてWasabiは、コストパフォーマンスや特定の機能面で異なる選択肢を提供します。Wasabiは低コストで高速なオブジェクトストレージサービスを標榜しており、データ転送費用が無料である点や、よりシンプルな料金設定が特徴です。S3と同様に、Wasabiも耐久性と可用性が高いストレージサービスを提供しますが、AWSの豊富な追加サービスやエコシステム、地理的なリージョンの広がりといった点では差があります。
結論として、WasabiがS3の有効な代替品になり得ますが、選択にあたってはコスト、パフォーマンス、サービス連携の要件を総合的に評価する必要があります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0