Auroraとは?RDSの高性能版|6重コピーとI/O課金の罠

データベースの話をしていた先輩が、とつぜん「そこはオーロラだから大丈夫」と言って会話を先に進めてしまった。RDSの話をしていたはずなのに、なぜ別の名前が出てくるのか分からない。そんな場面に出くわしたことはありませんか。

この記事では、Amazon Auroraを「RDSに載せられる高性能エンジン」というたとえで整理します。ふつうのデータベースと何が違うのか、なぜ壊れにくいと言われるのか、そして料金でつまずきやすいポイントまで順番に見ていきます。

結論から言うと、Amazon AuroraとはAWSがクラウド向けに作り直した、MySQLとPostgreSQL互換のデータベースです。

この記事でわかること

  • Amazon AuroraとRDSの関係(別サービスではなく、RDSの中の選択肢のひとつ)
  • データを3つの場所に6つコピーする仕組みと、壊れにくさの正体
  • ストレージ代とは別に「読み書きの回数」で課金される、初心者がはまりやすい落とし穴
目次

Amazon Auroraとは?一言でいうと「RDSに載せる高性能エンジン」

Amazon Auroraとは、AWSがクラウド上で動かすことを前提に設計し直したデータベースです。AWS公式は、MySQLとPostgreSQLの両方に互換性があると説明しています。互換性があるとは、これまでMySQL向けに書いてきたプログラムを、ほぼそのまま動かせるという意味です。

ここでつまずきやすいのが、RDSとの関係です。AuroraはRDSと並ぶ別サービス、ではありません。RDSというデータベース管理サービスの中で選べるエンジンのひとつという位置づけです。バックアップや監視といった面倒を見てもらえる点はRDSと共通で、中身の作りだけが違います。

車にたとえると分かりやすいかもしれません。RDSが車体で、その中に載せるエンジンとしてMySQL、PostgreSQL、そしてAuroraがある。ハンドルもブレーキも同じ操作で動きますが、Auroraを選ぶと中身がクラウド専用に作り替えられていて、速く走れて壊れにくい、という関係です。

どれくらい速いのかというと、公式は「MySQLの5倍、PostgreSQLの3倍のスループット」という数字を挙げています。スループットとは、決まった時間内にさばける処理の量のことです。同じ設定のデータベースでも、Auroraを選ぶだけで処理量が数倍になる場面がある、と読めます。

Auroraはデータを3つのアベイラビリティーゾーンに2つずつ、合計6コピー自動で持つ
図: Auroraはデータを3つのアベイラビリティーゾーンに2つずつ、合計6コピー自動で持つ(筆者作成)

Amazon Auroraの仕組みと使いどころ

データを3か所に6つ持つ、という設計

Amazon Auroraがふつうのデータベースと決定的に違うのは、データの置き方です。公式によると、Auroraはデータを3つのアベイラビリティーゾーンに分散し、それぞれ2つずつ、合計6つのコピーとして保持します。

アベイラビリティーゾーンとは、物理的に離れた場所にあるデータセンターのまとまりのことです。詳しくはVPCの記事でも触れていますが、ここでは「離れた3つの建物」と思っておけば十分です。

大事な書類を、同じ建物の中で2部コピーしても、その建物が火事になれば両方なくなります。離れた3つの建物にそれぞれ2部ずつ置いておけば、1つの建物がまるごと使えなくなっても、残りの4部が無事です。Auroraがやっているのはこれです。

しかもこのコピーは、利用者が設定するものではありません。Auroraを使うと自動的にそうなります。可用性についても公式は、単一リージョンで最大99.99%、複数リージョンにまたがる構成なら最大99.999%を目指す設計だとしています。

容量の心配をしなくてよくなる

もうひとつ楽になるのが、ディスク容量です。ふつうのデータベースなら「何GBぶん確保するか」を先に決める必要があり、足りなくなれば拡張作業が発生します。

Auroraのストレージは10GBずつ、最大256TiBまで自動的に大きくなります。使った分だけ増えていくので、最初に多めに確保しておく必要がありません。これは新人が任されがちな「容量が逼迫しています」というアラート対応そのものを減らしてくれます。

読み取り担当を最大15台まで増やせる

アクセスが増えてデータベースが重くなったとき、AuroraではAuroraレプリカという読み取り専用のコピーを最大15個まで足せます。書き込みは1台が担当し、読み取りは大勢で分担する形です。

気になるのは、コピー側のデータがどれだけ遅れるかです。公式は「レプリカの遅延時間がしばしば10ミリ秒足らず」としています。人間の体感ではほぼ同時と言ってよい速さです。

さらにMySQL互換版には、バックトラックという機能があります。誤った更新をしてしまったとき、データベースの時計を巻き戻せるしくみで、公式によれば最大72時間前まで戻せて、実行は数秒で終わります。バックアップから復元すると数十分かかることを考えると、事故対応の性質が変わる機能です。

新社会人がAmazon Auroraに出会う場面

よくあるのは、先輩から「この検証、Auroraのクラスターに繋いで」と言われる場面です。ここで戸惑うのは、接続先が2つ出てくることです。書き込み用と読み取り用でエンドポイント(接続先のアドレス)が分かれているため、どちらを使うか確認せずに繋ぐと、書き込みだけエラーになります。

もし読み取り用のエンドポイントに書き込もうとして怒られたら、それは設定ミスではなく、Auroraが役割を分けている証拠です。落ち着いて書き込み用に繋ぎ直せば解決します。

Amazon Auroraと関連サービスの違い・つながり

最初に整理すべきは、やはりRDSとの線引きです。繰り返しになりますが、AuroraはRDSの一部です。ただし請求書やコンソールの表示では「Aurora」として独立して見えるため、別サービスに見えます。ここが混乱の元です。

実務での使い分けはシンプルで、同じMySQLを使うにしても、性能と可用性を優先するならAurora、費用を抑えたいなら通常のRDSという判断になります。学習用や小さな検証なら通常のRDSで十分です。

次に混同しやすいのがDynamoDBです。どちらもAWSのデータベースですが、種類が違います。Auroraは表と表を結びつけて扱うリレーショナルデータベースで、SQLという言語で問い合わせます。DynamoDBは鍵を指定して1件を高速に取り出すことに特化した、別の種類のデータベースです。「複雑な集計をしたいならAurora、大量のアクセスを単純にさばきたいならDynamoDB」がざっくりした目安になります。

接続する側は、たいていEC2のサーバーやLambdaの関数です。動きが遅いと感じたときに見る指標はCloudWatchに集まるので、この4つはセットで覚えておくと現場の会話についていけます。

もうひとつ、規模が大きくなると出てくるのがGlobal Databaseです。複数のリージョンにまたがってデータを持つ構成で、公式によればリージョン間の遅延は通常1秒未満、災害時にはセカンダリリージョンが1分以内に読み書き可能な状態へ昇格します。新人のうちに触ることはまずないので、言葉だけ知っていれば十分です。

現場ではAmazon Auroraをこう見ている

ここからは、運用監視から設計構築まで10年ほどインフラを見てきた筆者(AWS認定8冠)が、案件でAuroraを選ぶときに実際に使っている判断の物差しを書きます。公式ページには載っていない部分です。

まず、性能よりも「復旧のしやすさ」で選んでいます。5倍速いという数字は目を引きますが、その差を体感できるほど負荷の高いシステムは、実はそれほど多くありません。それより効くのは、故障してもデータが残ること、そして戻せることです。3か所6コピーと、MySQL互換ならバックトラック。夜中に呼び出されたとき、手元にこの2つがあるかどうかで、翌朝の状況がまるで違います。

次に、レプリカを足す前にクエリを疑います。「重いからレプリカを増やしましょう」は、いちばん高くつく解決策です。実際には、索引(インデックス)が1つ足りないだけ、というケースが体感で半分以上を占めます。台数を増やすと費用は確実に増えますが、遅い問い合わせは遅いままです。増設の提案をする前に、まず遅いクエリを1本特定する。この順番を守るだけで、若手でも「ちゃんと見ている人」と思ってもらえます。

最後に、検証環境こそServerless v2にします。後述しますが、Auroraは動かしている時間で課金されます。検証用のクラスターを立てたまま週末を越えると、使っていない時間ぶんがまるごと請求されます。自動で小さくなる構成にしておけば、この無駄が消えます。

Amazon Auroraの料金と無料枠

Amazon Auroraの料金は、大きくインスタンス(処理をする部分)・ストレージ・入出力の回数の3つに分かれます。この3つ目が、初めて使う人がいちばん驚くところです。

Auroraには課金方式が2つあり、公式は次のように整理しています。

  • Aurora Standard — ストレージはGB-月あたりで課金され、それとは別に読み書きのI/Oオペレーションが100万リクエストごとに課金される
  • Aurora I/O-Optimized — ストレージの単価は高くなるが、読み書きのI/Oは無料になる

つまりStandardでは、データ量が小さくても、アクセスが多ければ料金が上がります。ここが「置いてある量だけで決まる」と思い込んでいると読み違える点です。公式は、I/Oを大量に使うアプリケーションならI/O-Optimizedのほうがコストを最大40%節約できる場合があるとしています。目安として、請求のうちI/Oが4分の1を超えるようなら切り替えを検討する、と覚えておくとよいでしょう。

インスタンス側は、あらかじめ大きさを決めるプロビジョニング方式なら時間単位(最低10分)で、Serverless v2なら秒単位で課金されます。Serverless v2の単位であるACU(Aurora Capacity Unit)は1つがおよそ2GiBのメモリに相当し、0.5ACU刻みで増減します。対応バージョンなら最小0ACU、つまり使われていない間はゼロまで下げられ、上限は256ACUです。

無料枠については、執筆時点(2026年9月)の公式料金ページに、Aurora PostgreSQLのサーバーレスインスタンスをクラスターあたり最大4ACU・ストレージ1GiBまで利用できると記載されています。触って覚えるぶんには十分な範囲です。

なお単価も無料枠の内容も見直されることがあります。実際に使う前には、必ず公式の料金ページで最新の条件を確認してください。

Amazon Auroraのまとめ

ここまでの要点を整理します。

  • Amazon AuroraはRDSと別のサービスではなく、RDSで選べる高性能なエンジン。MySQLとPostgreSQLに互換性がある
  • データは離れた3つの場所に合計6コピーが自動で保たれ、ストレージは10GB単位で最大256TiBまで勝手に広がる。読み取り専用のレプリカは最大15個まで足せる
  • 料金はインスタンス・ストレージに加えて読み書きの回数でも発生する。I/Oが多いならI/O-Optimizedへの切り替えを検討する

まずは自分の現場で、使っているデータベースが通常のRDSなのかAuroraなのかを確認してみてください。どちらかが分かるだけで、障害時にどこまで自動で守られているかの見当がつくようになります。

あわせて読みたい

データベースの前にキャッシュを置く構成は、以下の記事で解説しています。

参考リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次