「今回、この場ですばらしいゲストをお迎えできることを心から嬉しく思う。18年にも渡ってPostgreSQL開発者として活動をされてきたPostgreSQLの世界的リーダーの"イシイサン"を紹介したい」―11月28日(米国時間) 、米ラスベガスで開催されたAWSの年次カンファレンス「AWS re:Invent 2017」で行われたとあるセッション、そこでAWSのAmazon RDS/Aurora/RDS for PostgreSQL部門のゼネラルマネージャであるマーク・ポッター(Mark Potter)氏から呼ばれて登壇したのはSRA OSS, Inc 日本法人社長の石井達夫氏でした。本稿ではその石井氏によるセッション「Report from the field on Aurora PostgreSQL Performance」の内容をご紹介します。
「AWS re:Invent 2017」での石井達夫氏
石井氏が裏付けた「Aurora完全勝利」の衝撃
石井氏のプレゼンの前、ポッター氏から現在のAWSにおけるPostgreSQL関連サービスについて簡単な説明がありました。AWSは2013年11月にフルマネージド型のPostgreSQLをRDSメニューのひとつとして発表し、大きな反響を呼びました。また、AWSの中でももっとも成長が速いサービスとして知られるクラウドネイティブなデータベースエンジン「Amazon Aurora」を2014年11月に発表した2年後、つまり今からちょうど1年前の2016年11月には、AWSのアンディ・ジャシーCEOがPostgreSQL版Auroraのプレビューリリースをアナウンスしています。AWSはユーザのフィードバックをもとにアップデートを行うことで知られていますが、ことデータベース関連サービスにおいては「PostgreSQLへの強いニーズがグローバルでつねに存在している」( ポッター氏)ことが伺えます。
ポッター氏に紹介される石井達夫氏
一方、長年に渡りPostgreSQL開発の最前線で活動してきた石井氏は、SRA OSS, Inc.というインテグレータのトップでもあります。PostgreSQL開発者として、そしてインテグレータとして、ここ1、2年、非常に興味深くその動向をチェックしてきたのがPostgreSQL版Auroraの実力でした。「 Auroraエンジンに移行するだけでWrite性能が劇的に向上し、オリジナルなPostgreSQL(RDS)の3倍のパフォーマンスを得られる」というその"ウワサ"は本当なのか - 石井氏は7月にAWSの国内イベントにおいて、PostgreSQL版AuroraとRDSの性能を検証した結果を発表しています。詳細は当該レポート を参照していただければと思いますが、
データローディングはAuroraが3倍高速
スループットはAuroraが3倍高速
Auroraは高速で安定したレスポンス
Auroraは接続数が増えても性能の劣化がほとんど見られない
Auroraはレプリカラグ(レプリケーション後に読み出し可能になるまでのレイテンシ)が小さい
という"Aurora完全勝利"の検証結果が得られたことを明らかにしました。石井氏はこの性能検証をre:Invent 2017のセッションでも同様に紹介しています。AWSではなく、エキスパートの第三者によるPostgreSQLに特化したAuroraとRDSの性能検証は、PostgreSQLやクラウドデータベースへの移行を検討しているユーザにとって非常に貴重であり、意義のある比較だといえます。
AuroraとRDSの比較検証に用いた環境 7月の国内イベントで発表されたものと同じ
いくつもあるAuroraの優位点の中でも特筆すべきはリードレプリカの性能、とくにレプリカラグのレイテンシにおける差は圧倒的で、オリジナルのストリーミングレプリケーションではまったく太刀打ちできない
フォールトトレランスに関してもAuroraは30秒以内でのアプリケーション復旧が可能「RDSも悪くはないが、Auroraに比べるとやはり落ちる」( ポッター氏)
Pgpool-IIもAuroraをサポート
Aurora版PostgreSQLがオリジナルに較べてこれほど性能が高いのは、やはり最初からクラウドでの利用に最適化されたデータベースエンジンとして設計されていることに尽きるといえます。たとえば読み出し専用のリードレプリカを3つのAZ(アベイラビリティゾーン)にまたがって複数作成できる、ストレージ容量は自動で64Tバイトまでスケール可能、障害検知からアプリケーション復旧までのフェイルオーバーが30秒以内といった特徴はまさにクラウドネイティブなデータベースならではの強みです。とくに独自実装のリードレプリカはAuroraのパフォーマンスに大きく貢献しています。
しかしいくらAuroraのリードレプリカの性能が高くても、すべてのクエリをリードレプリカに投げるわけにはいきません。石井氏はここで、リードレプリカの負荷分散機能をもつミドルウェア「Pgpool-II」を紹介しています。Pgpool-IIはPostgreSQLマネジメントに特化したオープンソースのミドルウェアで、もともとは石井氏が開発し、現在はSRA OSS, Inc.が中心となってメンテナンスが行われています。
前掲の記事でも紹介している通り、Pgpool-IIがサポートするのはこれまでオリジナルのPostgreSQL(ストリーミングレプリケーション)とAmazon RDS for PostgreSQLのみで、Auroraには対応していませんでした。しかし7月のイベントでユーザから「AuroraにもPgpool-IIを対応させてほしい」という声を受けたことにより、11月22日にリリースされたPgpool-II 3.7では約束どおりにAuroraサポートが実現しています。ちょうどre:Invent 2017の1週間前となるリリースで、石井氏は「このタイミングで、そしてこの場でPgpool-IIのAuroraサポートを発表できて非常に嬉しい」とセッションで語っています。Auroraはマスターにつねに同じホスト名を使用するので、あらたなバックエンドフラグ「ALWAYS_MASTER」を追加するなど、若干の工夫が必要だったそうですが、コネクションプーリングやクエリキャッシュもサポートされており、Auroraユーザのユーザエクスペリエンスが大きく向上するのは間違いありません。
11月にリリースされたPgpool-II 3.7では約束通りにAuroraサポートが実現、Auroraでのリードレプリカの負荷分散が可能に
AWSはここ1、2年、オープンソースプロダクトへのコミットを急速に強化しています。過去にはGoogleなどと同様に「オープンソースのフリーライダー」と呼ばれることも少なくなかったのですが、最近ではオープンソース担当の責任者として元Netflixのエイドリアン・コッククロフト(Adrian Cockcroft)氏を据え、組織的にオープンソースを支援する方向性を強く打ち出しています。RedshiftやRDS、AuroraといったAWSサービスとも関係が深く、特定の企業にコミュニティが支配されていないPostgreSQLは、AWSのオープンソース戦略と非常に親和性が高いプロダクトだといえます。
そうした中にあって、PostgreSQLの黎明期からコミュニティを支え、いまも現役のPostgreSQLコミッターとして活躍する石井氏のセッションには、PostgreSQLのクラウド導入がグローバルで拡がっているトレンドを反映してか、多くの参加者が聴講し、時間ぎりぎりまで積極的な質疑応答が行われていました。国内外のカンファレンスでの登壇回数が多い石井氏は「Mr. Ishii」ではなく「イシイサン」と呼ばれることが常のようで、本セッションでも質問者全員が「イシイサン」と呼んでいたのが印象的でした。これまでのPostgreSQLの進化の歴史から見れば、明らかにその成り立ちが異なるAWSという巨大なトレンドをPostgreSQLが柔軟に受けとめ、時代のニーズを取り入れながら迅速なアップデートを実現できているのも、PostgreSQLのデータベースアーキテクチャとしての筋の良さに加え、石井氏のように長くコミュニティで活動する開発者の存在が大きいのではないでしょうか。クラウド時代にあって既存のオープンソース - もともとクラウドネイティブではなかったプロダクトとコミュニティはどう進化していくべきのか、そのひとつの答えとして、PostgreSQLと石井氏のアプローチは参考になる部分が多いように感じさせられたセッションでした。
セッション終了後の石井さん