yuitaso / sunrise

1 stars 0 forks source link

RDB aurora #29

Open johshisha opened 7 years ago

johshisha commented 7 years ago

amazonのaurora最強説

ref

http://itpro.nikkeibp.co.jp/atcl/column/16/090800198/090800001/index.html

johshisha commented 7 years ago

AWSによると、AuroraはオープンソースのRDBMS(リレーショナルデータベース管理システム)である「MySQL」と互換性がある。「MySQLよりも最大5倍のパフォーマンス」を発揮し、「商業用データベースのセキュリティ、可用性、および信頼性を10分の1のコスト」で利用できるという。

johshisha commented 7 years ago

まず性能面。Auroraでは、1台のマスターに対して、最大15台までのリードレプリカを利用できる。これによって、さらに読み込み性能を高める。リードレプリカ間のデータ同期の遅延も10~20ミリ秒以下と、RDS for MySQLのリードレプリカ構成と比べると非常に小さい。

johshisha commented 7 years ago

可用性も高い。RDS for MySQLではマスターやリードレプリカなどの各ノードがそれぞれストレージを持っていたが、Auroraでは複数ノードで分散ストレージを共有する。最大三つのアベイラビリティゾーンに、最低5個のストレージを確保してデータを分散。2個が失われても継続して運用が可能で、その2個は自動的に再構築される。

johshisha commented 7 years ago

Auroraには様々な特徴がある。その一つが、ストレージのサイズが自動的に拡張されること。MySQLを始めとしたRDBMSでは、サーバーに接続されたディスクにデータを格納することから、ストレージのサイズはあらかじめ決定しておく必要がある。これは多くのクラウドサービスでも同様である。しかしAuroraでは、ストレージをデータベースノードから独立させ、共有、分散している。このため、ストレージを自動で拡張できる。

johshisha commented 7 years ago

自動で性能に影響を及ぼさずバックアップが行われるのも大きな利点だ。通常、バックアップは定期的に時間を確保し、しかもデータベースのリソースの一部を利用して行うものであるため、その時間に性能が低下してしまっていた。このため、バックアップは1日に1回などある程度の時間をおいて行うのが一般的である。これに対してAuroraでは、通常は5分以内のデータに復旧できるようにバックアップが継続的に行われる。

johshisha commented 7 years ago

さらに、再起動時にキャッシュが失われない。MySQLでは、再起動に伴ってキャッシュが失われ、その後元の性能に戻るまでに時間がかかってしまうことがあった。Auroraでは、キャッシュをデータベースのプロセスとは別に管理することで、この問題を克服している。

johshisha commented 7 years ago

料金

https://aws.amazon.com/jp/rds/aurora/pricing/

Amazon RDS と Amazon EC2 のインスタンス間のデータ転送は、同一アベイラビリティーゾーン内であれば無料です。 20161204_072948

johshisha commented 7 years ago

http://itpro.nikkeibp.co.jp/atcl/column/16/090800198/090800002/

共有分散ストレージを活用するAuroraは、集計などのテーブル全体を見る処理よりも、膨大なテーブルの中から必要なデータを取得するような処理を得意とする。

johshisha commented 7 years ago

Auroraを採用するに当たっては注意すべき点がある。

johshisha commented 7 years ago

開発やテストサーバー、ステージングサーバーなどをオンプレミス(自社所有)環境に持つ場合、データベースの部分はMySQLを使うほかない。実際の性能は、AWS上でAuroraを使用した環境を構築し、稼働させてみなければ分からない。キャッシュの取り扱いや共有分散ストレージといったAuroraの特徴による効果は、Aurora上でテストをしてみないと把握できないわけだ。

johshisha commented 7 years ago

通常のRDB

遅延は通常時は数百ミリ秒程度だが、書き込みが集中すると数秒~数十秒に拡大してしまうことがある。

Aurora

Auroraに移行したことで、レプリカラグの課題は解消した。Auroraを複数台で運用してもレプリカラグは数ミリ秒から数十ミリ秒の間に抑えられており、ほとんど気にする必要がない。レプリカラグをカバーする仕組みをFlipdeskそのものに組み込む対策も実施し、サービスの品質を保ちつつ、有人での運用体制を撤廃することができた。

REF

http://itpro.nikkeibp.co.jp/atcl/column/16/090800198/091100004/?P=2

johshisha commented 7 years ago

平行して、NoSQLデータベース「DynamoDB」など代替となるAWSのサービスや、米グーグル、米マイクロソフト、米IBMなど他のクラウドベンダー、オンプレミスなどへの移行の可能性も探ったが、適切な解は見つからなかった。特にグーグルの「Cloud SQL」でのMySQLの使用や、「Cloud Database」などは有力な選択肢であったが、Cloud SQLではRDS for MySQL以上のパフォーマンスが出ていなかったこと、Cloud Databaseは大掛かりな移行が必要なことから移行を見送っていた。

johshisha commented 7 years ago

BUT

移行時の不具合

まず、登場して間もないサービスにはつきものともいえる、不具合の存在だ。例えばFlipdeskでは、Aurora移行テストの時点で、大量のデータを移行するストアドプロシージャがフリーズする不具合があった。