まいんだーのはてなブログ

はてブなのはてブロなのどっちなの

Microsoft Build 2017 のキーノートで発表のあった MySQL / PostgreSQL 関連の発表をざっくりと

MicrosoftMySQL/PostgreSQL のマネージドサービスを始めます

内部的にはずっと前から取り組みがされていて、多くの新規 Azure ユーザから望まれていた一方なかなか出てこなかった MySQL/PostgreSQL のマネージドサービスがいよいよ出てきました。 azure.microsoft.com azure.microsoft.com 何年も待ったわ~ほんとに。。。

これまでの MySQL/PostgreSQL マネージドサービスの課題

各種クラウドにあるサービスには大きく2つの課題があったと思います

インスタンス” というサイジング

どのサービスも基本的に “仮想マシン” 単位で要求性能とキャパシティを決めて、そこにセットアップの自動化とバックアップ、そして別インスタンスへのフェイルオーバーを提供するものでした。 仮想マシンでのプロビジョニングはこれまでの運用感覚からいうと分かりやすい一方、仮想マシンへの手入れができないのでその点は諦める必要があるところがありました。

“ダウンタイム” のトレードオフ

障害発生時のフェイルオーバーが発生した場合、他のサービスではDNSによるフェイルオーバーだったりして、クライアント側が接続について考慮する必要がありました。 スケールアップのための操作には、シャットダウンが必要であり、これもサービスを一度メンテナンスモードにするなどのダウンタイムの考慮が必要でした。 また、MHAを使っている人がやるようなダウンタイムなしの運用を求めると、仮想マシンを使わざるを得なくなります。

Azure Database for MySQL/PostgreSQL の特徴

“コンピュートユニット” と “ストレージユニット” というサイジング

Azure Database for MySQL/PostgreSQL は、インスタンスという概念が存在しません。 “どの程度のCPUとメモリを利用するか” という、所望のワークロードに合わせたプランを選択することになります。 実際に Azure Portal からサービスを受けようとすると f:id:myfinder:20170511005100p:plain このように、処理量と要求ストレージをスライダーで設定する形になります。 Preview 中はこの変更に制限があるようですが、GA までにはこの設定変更が任意のタイミングに(運用中であっても変更可能!)できるようになるはずです。

docs.microsoft.com ここにざっくりとした解説がありますが、もっと詳しいリソースガバナンスについてはいずれ MySQL Casual などで話をしたいと思います。

Azure SQL Databaseと同様のダウンタイム

こうなると当然気になってくるのが “ユニット変更したときの挙動はどうなるの?” という点だと思います。 Azure Database for MySQL/PostgreSQL の挙動を知るには、Azure SQL Database の仕組みを知ることが近道です。 Azure SQL Database がどういう挙動をするかは docs.microsoft.com このドキュメントにありますが “average under 4 seconds, and in more than 99% of cases is less than 30 seconds.” が示す通り、基本的にこのダウンタイムでスケールアップ/スケールダウン、フェイルオーバーが行われます。 この特徴は MySQL/PostgreSQL のサービスにも引き継がれており、 docs.microsoft.com こちらにも全く同様の記述があります。

この仕組みについてもいずれ詳しく MySQL Casual などで話をしたいと思います。

Azure SQL Database for MySQL/PostgreSQL がより良くワークするユースケース

Movable TypeWordpressなどのCMSEC-Cubeなどのソフトウェアパッケージとの組み合わせ

普段のワークロードはそれほど高くないが、柔軟かつダウンタイムを短く運営したいという受託の多いWeb開発企業にとって、サービスをほぼ止めずに切り替えができるデータベースサービスは有利に働くと思います。

たくさんのDB/スキーマを管理しなければならないSaaS企業

SaaSの構築パターンとして、アプリは共通だがDB/スキーマを分ける運用をしている会社さんは多いのではないかと思います。 そういったサービスでありがちなのが、特定顧客のマスターだけ負荷が上がり始めるなど、ワークロードの偏りです。 そういう時に、ダウンタイムがより短くスケールアップできる選択肢があると、サービス運営にかかる負担を下げられるのではないでしょうか。

おわりに

Previewが始まったばかりなので、まだまだこれからですが、ついにMicrosoftSQL Server以外のRDBMSを正式にサポートするということは大きな変化だと思います。 ご関心のある方はぜひ触ってみて、フィードバックを送ってください。

(General Feedback): New (2470 ideas) – Customer Feedback for Microsoft Azure

では。

※追記

キーノートの後のセッションで、ローンチ時点から日本リージョン(Japan East/Japan West両方!)で展開されることが発表されました。これで皆さん安心して(?)お試しいただけますね! f:id:myfinder:20170511144034p:plain