SPECIALIST

多様な専門性を持つNRIデジタル社員のコラム、インタビューやインサイトをご紹介します。

BACK

Amazon DevOps Guru for RDSはどんなレコメンデーションをしてくれるのか

こんにちは、NRIデジタルの島です。

本番稼働中のシステムにおいて、パフォーマンス問題の原因の上位に来るのはデータベース関連かと思います。十分に試験環境で試験したとしても、本番のワークロードは予測が難しく、予防措置を準備するのもなかなか難しいと思っています。その為、高い品質の本番システムを運用していくには、発生時にいかに迅速に検知→原因切り分け→一次対応につなげていけるかが重要なポイントになってくると思います。

とはいえ、データベースのパフォーマンス問題は解析が難しく、自力で解決していくには相当のスキルセットが必要になります。
このような背景から、データベースの障害分析をサポートしてくれるサービスを多くの方が待ち望んでいると想像しておりますが、昨年のre:Inventにて「Amazon DevOps Guru for RDS」が発表されました。
Amazon DevOps Guru for RDSの発表

過日、掲載させていただいた「CodeGuru Profiler ※1」のデータベース版といったところですが、既に試せる状態ですので、実際どのようなレコメンデーションをしてくれるのか、ちょっと触ってみたので共有させていただこうと思います。
※1 (参考)昨年6/1に掲載
Amazon CodeGuru Profilerはどんな動的解析が可能なのか | TECH | NRI digital

Amazon DevOps Guru for RDSとは

前述した「CodeGuru Profier」同様、機械学習 (ML) を使用して、データベース上のパフォーマンス、運用の問題を自動的に検知、分析し、利用者へリコメンドしてくれるサービスです。

新機能 – Amazon DevOps Guru for RDS が ML を使用して Amazon Aurora 関連の問題を検出、診断、解決

筆者としては下記を期待しております。

  1. 異常発報と一次対応の具体的アクションをレコメンドしてくれる
  2. 問題のある箇所に対する具体的な改善事項をレコメンドしてくれる

では、実際どのようなレコメンドをしてくれるのか検証した結果を共有させていただきます。
(なお、今回の検証では「Aurora MySQL」を使用しています)

検証

■準備

利用するにあたって準備することは下記のみです。

  1. Performance Insightsを有効化
  2. Enabling and disabling Performance Insights – Amazon Relational Database Service

  3. 調査対象のデータベースクラスタへのタグ(Devops-Guru-Aurora)付与とDevOps Guruへの参照設定
  4. タグ付与

    参照設定(設定→ Analyzed resources)

  5. 異常検知時の通知先(SNSトピック)の設定(オプション)

■ シナリオ

実行したシナリオは下記の通りです。

比較的実行が遅いSQLを10多重で数分間実行
※この際、より遅く異常な状況を作りやすくする為クエリキャッシュを無効化

■ 実行結果

想定通り、Performance Insights上では待機イベントが溜まり続け異常な状態になりました。

待機イベント

トップSQL


DevOps Guruでも異常検知し発報されます。

異常検知

SNS通知(参考)

上記の通り、異常な状態は作り上げられました。

では、実際にどのような分析、レコメンドがされたのか確認してみます。

分析画面


今回のシナリオケースの場合、期待するリコメンドは、PhysicalReadが多い為「クエリキャッシュ有効化してね」や「実行計画上のアクセスパスが非効率な点の指摘(Indexをちゃんと貼ってね、など)」でした。
残念ながら、原因箇所の特定まではしてくれるものの、前述の期待する事項で記した「一次対応の具体的アクション」や「問題のある箇所に対する具体的な改善事項」はレコメンデーションしてくれないようでした。
(「リンク見て調査してね」くらいのレコメンデーションのようです)

この結果より、パフォーマンス問題の原因特定まではしてくれますが、迅速に解決する際には別のアプローチが必要そうです。

下記記事の「Optimizing SQL queries」項に「EverSQL」というプラグインが紹介されており、こちらを使用するとSQLの改善点をレコメンドしてくれるようです。
New – AWS DevOps Guru for RDS for Database performance

今回の検証では試してませんが、興味ある方は是非お試しいただければと思います。
EverSQL
EverSQL – Your AI database performance guru

さいごに

簡単なシナリオで実行してみた結果を共有させていただきました。

今回のシナリオにおいては期待していたようなレコメンドを得ることが出来ませんでしたが、迅速に問題点をレポートしてくれるのは非常にありがたいと思いました。
もう少し具体的なアプローチを提示してくれるようになれば、より有用なサービスになるのではないかと思います。

GA後間もないサービスでもあるので、今後のアップデートに期待しつつ、引き続き別のシナリオケースでも検証を進め、実用性を確認していきたいと思います。

以上