11月30日(米国時間)から約3週間に渡って開催されるAWSのグローバル年次カンファレンス「AWS re:Invent 2020」 。毎年、米ラスベガスで数万人を集めて華やかに開催されてきた業界最大のクラウドフェスティバルも、今年は他のカンファレンスと同様に新型コロナウイルスの影響を免れず、フルバーチャルカンファレンスとしての開催となりました。もっともバーチャルイベントであってもAWS re:Inventで繰り出される数々のアナウンスの破壊力は健在です。それが証拠に11月30日に行われた前夜祭的なキーノート「AWS Late Night 1」では、世界初の"macOS on クラウド"を実現する「Amazon EC2 Macインスタンス」が発表され、初日から大きなインパクトを与えました。
今回のre:Inventの最初の大きなアナウンスとなった「Amazon EC2 Mac Instances」はAppleとAWSの提携という意味でも大きな注目をあつめた
その翌日の12月1日(米国時間)にはre:Inventにおける最大のメインイベント、アンディ・ジャシー(Andy Jassy)CEOによるキーノートが行われ、例年通り、3時間(!)のキーノートに27もの新発表がぎっしりと詰め込まれていました。各種EC2インスタンスのアップデートに始まり、ストレージ、データベース/データストア、コンテナ、マシンラーニング、コンタクトセンター、産業用IoT、ハイブリッド/エッジといった流れで次々と新サービスが紹介されていましたが、全体的にEC2 Macインスタンスのような強いインパクトを伴ったアナウンスは少なく、かわりに既存のAWSサービスを"reinvent"するかのような、地味ではあるけれどもクラウドの新たなケイパビリティを強く実感させるアップデートが目立ちました。
オンラインでキーノートを行うアンディ・ジャシーCEO
本稿ではアンディ・ジャシーが紹介したそれらの新サービスの中から、ひときわユニークな印象を与えたデータベース関連プロダクト「Babelfish for Aurora PostgreSQL」( プレビュー版)を取り上げます。
SQL Serverの使う“言語”を即座に翻訳してくれる“魚”
Babelfish for Aurora PostgreSQLは、Microsoft SQL ServerアプリケーションをリライトすることなくAurora PostgreSQL上で動かすことができるトランスレーション機能で、AWSが開発した「Babelefish」と呼ばれるSQL Server互換のエンドポイントをAurora PostgreSQLに追加して利用します。"Babelfish"という名称は、英国のSF作家 ダグラス・アダムス(Douglas Adams)の代表作『銀河ヒッチハイク・ガイド(The Hitchhiker's Guide to the Galaxy) 』に登場する、耳に入れるとどんな言葉でも即座に翻訳してくれる魚「バベルフィッシュ(Babel Fish) 」に由来しており、Babelfish for Aurora PostgreSQLもこの魚のようにSQL ServerからPostgreSQLへの"翻訳"を実行します。Auroraのビルトインケイパビリティとして提供されるため、Auroraユーザであれば追加費用は必要ありません。
データベースの新サービスのひとつ、SQL ServerアプリケーションをAurora PostgreSQLで実行可能にする「Babelfish for Amazon Aurora PostgreSQL」
Babelfishが翻訳するのはSQL Serverの独自のSQL拡張言語「T-SQL」と通信プロトコル「TDS」です。PostgreSQLはBabelefishの翻訳を介することで、T-SQLに加え、SQLコマンド、カーソル、カタログビュー、データタイプ、トリガ、ストアドプロシージャ、ファンクションなどをそのまま利用できるようになります。つまりSQL Serverアプリケーションはコードの変更を(ほとんど)することなく、SQL Server上で動かすのと同じようにPostgreSQL上でアプリケーションを実行できるようになるのです。連携後はPostgreSQLのネイティブAPIを使って新たな機能をアプリケーションに実装することも可能です。
Babelfishの概要
AWSはデータベースマイグレーションサービスとして「AWS Database Migration Service(DMS) 」や「AWS Schema Conversion Tool(SCT) 」などを提供していますが、これらのツールはデータベーススキーマの変換やデータの移行を自動化し、その負荷を大きく軽減するものの、移行後のコード変更やドライバの書き換えといった作業はカバーしません。一方、Babelfishが行うのはコンバージョンではなくトランスレーションなので、PostgreSQLで動かすためにSQL Serverアプリケーションのコードやドライバを変更する必要は(ほとんど)ありません。AWSは「( Babelfishにより)SQL Server 2014以降で実行されているアプリケーションを変更してAuroraに移行するために必要な労力が軽減され、より高速でリスクが低く、費用対効果の高い移行が実現」と説明していますが、どちらかというと性急な移行を促すのではなく、SQL Serverと共存させながらPostgreSQLへのゆるやかな移行をサポートするサービスのようです。
なお、AWSは2021年第1四半期をめどにBabelfish for PostgreSQLをオープンソース(Apache License 2.0)としてGithubで公開することを同時に発表しています。
Babelfish for PostgreSQL -Comming Soon -GitHub
「AWSはこれまで35万件以上のレガシーデータベースのクラウド移行を実現してきた。AuroraはAWSのサービスの中でももっとも成長のスピードが速い。( OracleやSQL Serverなど)プロプライエタリのオールドガードに必要のないライセンスフィーを払うのはもうやめよう」―Babelfish for Aurora PostgreSQLを紹介するとき、アンディ・ジャシーはあらためてレガシーデータベースからの脱却の必要性を強調していました。
これまで35万件以上のレガシーデータベースをクラウドに移行させてきた実績をもつAWS。AuroraやRDSなどのデータベースサービスだけでなく、自動化された移行ツールも提供する
Amazon RDSやAmazon Auroraはデータベースの世界に大きな変革をもたらしましたが、それでもまだ多くのユーザがオンプレミスのレガシーデータベースから動けないままでいます。そうしたユーザに対し、AWSはBabelfish―トランスレート機能によるクラウドデータベースへのアプリケーション連携といった新しいアプローチを用意してきました。さらにこれをオープンソースで公開し、外部の知見を得ることでどんな相乗効果がもたらされるのか、今後のプロダクトとしての進化に期待したいところです。
キーノートの前半でアンディが示したクラウドとオンプレミスの比率をあらわしたグラフ。世界のITはまだオンプレミスが主流であり、クラウドの普及率は4パーセントに過ぎない。データベースも同様にまだレガシーが主流。AWSのデータベースチャレンジはこれからが本番である