デベロッパー向けデータベース オブザーバビリティ: Cloud SQL Insights for MySQL(プレビュー版)を発表
Google Cloud Japan Team
※この投稿は米国時間 2022 年 4 月 8 日に、Google Cloud blog に投稿されたものの抄訳です。
2021 年、Google は、Cloud SQL Insights を発表しました。このツールは、Cloud SQL for PostgreSQL で、デベロッパーがデータベースのパフォーマンス問題を迅速に把握し、解決するための使いやすいツールです。Insights はオープン スタンダードを採用し、直感的なビジュアライゼーションとマイクロサービスなどの最新のアーキテクチャを意識して設計されました。
Insights は Cloud SQL で最も早く採用された新機能の一つです。そのため、広く普及しているもう一つのオープンソース リレーショナル データベース、MySQL に同じ機能を求める声が多いのも当然のことでしょう。今回は、Cloud SQL for MySQL(プレビュー版)の対応が開始されたことをお知らせします。
この機会に、アプリケーション デベロッパーや DBA にとっての Cloud SQL Insights のメリットや、MySQL 対応の意義について確認しておきましょう。
データベースのパフォーマンスに関する問題の対処が難しい理由
アプリケーション開発チームは、これまで以上に迅速に機能をリリースしています。DevOps が強化されたことで、かつては年に数回だったリリースは、週に数回、あるいは 1 日に数回になっています。さらに、多くのアプリケーション ユーザーが世界中に分散し、アプリケーションに継続的に負荷がかかっています。開発中にパフォーマンスの問題が適切に特定されないと、本番環境で問題が顕在化する可能性があります。パフォーマンスの問題の根本的な原因は往々にしてデータベースです。
開発ライフサイクルのオーナーシップは、ソフトウェア デベロッパーに移っています。しかし、デベロッパーにはデータベースのパフォーマンス問題を解決するスキルやツールがない場合もあり、DBA などのデータベースの専門家にサポートを求めてもすぐには対応してもらえません。DBA は今や希少なリソースで、開発に対して供給が不足し、現在のデータドリブン型ビジネスの需要に応えるために過負荷となっています。緊急のパフォーマンスの問題が解決されないまま放置されると、エンドユーザー エクスペリエンスが損なわれることにつながりかねません。
Cloud SQL Insights for MySQL の紹介
Cloud SQL on Google Cloud の機能である Insights は、MySQL データベースのパフォーマンスに関する問題をデベロッパー自らが診断し、解決できるようにするものです。これにより、アプリケーション開発で迅速なイテレーションが可能になり、DBA はデータ モデリング、クエリの最適化、データ分析など、もっと戦略的な作業に専念できるようになります。
Insights の機能をもう少し詳しく見てみましょう。
アプリケーション中心のデータベース オブザーバビリティ
従来のモニタリング ツールはクエリ中心のパフォーマンス ビューを提供します。しかしながら、特に最新のアーキテクチャでは、パフォーマンスとアプリケーション コードの間に断絶が生じ、機能が制限されてしまいます。
Insights を利用すると、デベロッパーはアプリケーションの視点からデータベースをモニタリングすることが可能で、タグを使用して、支払い、在庫、ビジネス分析、デリバリーなど、ビジネス機能ごとにクエリを関連付けることができるようになります。そして、特定のマイクロサービスやユーザーフローに起因するデータベース負荷を迅速に評価することなどが可能になります。
Insights では、クエリではなくビジネス機能ごとに整理されたパフォーマンスの全体像を見ることができます。データベース負荷はタグでソートされ、以下のようになります。
データベースのクエリ開発を容易にするために、多くのアプリケーションでオブジェクト リレーショナル マッパー(ORM)が使用されています。しかし、ORM は非効率なクエリを生成する傾向があり、診断は非常に困難です。Insights は、オープンソース ライブラリである Sqlcommenter と統合されています。Sqlcommenter を使うと、ORM は SQL ステートメントにコメントを追加するようになり、どのアプリケーション コードが問題を引き起こしているかを特定できるようになります。
Sqlcommenter は自動的にクエリタグを作成するので、アプリケーションのコードを変更する必要はありません。Hibernate、Spring、Django、Flask など、一般的な ORM を多数サポートしています。詳しくは、SQL Commenter の記事をご覧ください。
クエリ診断のセルフサービス エクスペリエンス
データベース パフォーマンスのトラブルシューティングには、問題の原因となっているクエリの迅速な特定、問題の根本原因の特定、問題の原因となっている特定のアプリケーション コードの特定という、いくつかの重要な課題があります。今は、データを関連付けるために複数のツールが必要で、作業には専門家と時間が必要です。クラウドでは、開発チームがユースケースごとに異なるデータベース エンジンを使用することが多く、課題はさらに大きくなります。
Insights for MySQL では、1 つのインターフェースで検出から診断までをシームレスに行うことができます。Cloud SQL Insights for PostgreSQL と同様に、あらかじめ用意されたダッシュボードを使って、クエリ パフォーマンスの問題を迅速に特定できます。たとえば次のようになります。
エンドツーエンドのアプリケーション トレースでは、問題のあるクエリのソースを、モデル、ビュー、コントローラ、ルート、ユーザー、ホストなどを確認しながら特定することができます。クエリプランでは、パフォーマンスの問題の根本原因に関する分析情報を視覚的に確認することができます。このビューは以下のようになります。
Insights は、診断のためのテレメトリーの収集を管理し、データベースへのパフォーマンスへの影響や、サードパーティのモニタリング ツールの管理に費やす時間を削減します。すべてのパフォーマンス指標は、データ保護を目的として、Google Cloud のエンタープライズ グレードのセキュリティ、プライバシー、コンプライアンスで保護されます。
使い慣れたツールやオープン スタンダードでデータベースのオブザーバビリティを実現
DevOps を効果的に機能させるためには、ソフトウェア開発ライフサイクルにデータベースをシームレスに組み込み、デベロッパー、SRE、プラットフォーム エンジニア、DBA などのさまざまな関係者が、データベース パフォーマンスの問題のトラブルシューティングに協力できるようにする必要があります。デベロッパーは使い慣れた APM ツールでデータベースのトレースにアクセスしたいと考え、SRE は自分たちの運用ダッシュボードで重要なデータベースのシグナルにアクセスしたいと思うかもしれません。それを実現するために、さまざまなエンタープライズ モニタリング ツールからデータベース テレメトリーにアクセスできるようにする必要があります。
Insights は、既存のツールでデータベースのオブザーバビリティを高め、デベロッパーや運用チームが早期に問題に対処し、トラブルシューティングの時間を短縮することを可能にします。他のアプローチでは、APM エージェントをデータベース上にインストールする必要があり、セキュリティ上の懸念やパフォーマンスのオーバーヘッドを引き起こす可能性があるのに対し、Insights はオープン スタンダードの OpenTelemetry と Cloud Monitoring および Cloud Trace API を通じてデータベースの指標とトレースを提供します。既存のツールでエンドツーエンドのトレースを簡単に実行することが可能で、アプリケーションからデータベースまで、すべての環境のフルスタック ビューを得ることができます。
Insights は、Cloud Monitoring とも連携しているので、クエリの指標やタグに関するカスタム ダッシュボードやアラートをすばやく作成し、メール、SMS、Slack、PagerDuty などで通知を受けることができます。Cloud Monitoring でダッシュボードをカスタマイズすることも可能です。
登録して Insights for MySQL(プレビュー版)を利用する
Cloud SQL Insights for MySQL のプレビュー版の公開を開始しました。ぜひご登録のうえ、ご意見をお聞かせください。
- プロダクト マネージャー Nimesh Bhagat
- プロダクト マーケティング マネージャー Yoav Eilat