AWS RDS/Auroraでモニタリング&チューニングを始めるための資料11選
これはなに
ども、レバテック開発部のもりたです。
もりたはデータベースが好きなんですが、最近は特にAWS RDS/Auroraでのモニタリングとパフォーマンスチューニングについて興味があります。ただ、これらのうちモニタリングは扱っている話題が若干ローレベルであまりピンとこず、またチューニングもどこから手をつければいいのかわかりませんでした。
この記事では、もりたがモニタリング&チューニングを学習する上で役に立った書籍やWeb上の資料をロードマップ形式で紹介していきます。対象読者はDBのモニタリングとチューニングをやりたいけどどこから手をつければいいか分かんないなとなっている人、ゴールはそんな人がモニタリング&チューニングの第一歩を踏み出せることです。
スコープ
今回扱うもの、扱わないものは以下の通りです。
- 扱う
- モニタリング&チューニングの概要
- モニタリングの前提知識
- チューニングの前提知識
- Auroraモニタリングツールの資料群
- チューニングで使える資料群
- 扱わない
- 高度なモニタリングやチューニング
ロードマップ
例によってちいせ〜ので拡大してください
まず、AWS RDS/Auroraでのモニタリングとチューニングについての見通しをよくするために「概要」資料をご紹介します。次にモニタリングとチューニングそれぞれ「前提」的な資料、そしてその先に「モニタリングツールの資料群」、「チューニングで使える資料群」という流れです。
なぜモニタリング&チューニングなのか
前提: なぜモニタリング&チューニングなのか?
なぜモニタリング&チューニングをするのでしょうか?
第一にシステムのパフォーマンスをモニタリングし、ユーザに影響がないかを確認するのは大切です。ただ、そことは別観点として、モニタリング&チューニングができるとどう面白いか? という点を説明させてください。
モニタリングができると嬉しいのは、以下の点です。
- クラウド時代のデータベースに求められるスキル
- パフォーマンスチューニングはインパクトがでかい
- 障害対応が捗る
クラウド時代のデータベースに求められるスキル
かつてデータベースにまつわる課題は複雑で多様でした。ただ、クラウドサービスが一般化し、フルマネージドなDBが出現すると、エンジニアが直接扱うデータベースの課題はかなり絞られました。それが「クエリ作成」「スキーマ設計」「モニタリング&チューニング」です。
そしてこれらはアプリケーションを知っているエンジニアがやると効果の高い分野でもあります。クラウドが台頭したいま、アプリケーションのエンジジアがデータベースを学ぶ意義がとても大きいのです。
パフォーマンスチューニングはインパクトがでかい
次に挙げるのはチューニングできた時のインパクトが大きいという点です。まず、速度はシステムにおける絶対正義です。そして速度の課題に対してDBが背負うものは大きいです。
そのDBのチューニングをするには、まず現状がどうなっていてどのクエリが遅いのか知る必要があるでしょう。モニタリングから取り扱うことで、原因を掘り起こし、システムに対して大きく貢献ができます。
障害対応が捗る
障害対応でも役立ちます。モニタリングの指標が読めると、システムのどこに障害の原因があるのか特定する上で便利です。また、データベース周りはアプリケーションエンジニアでも苦手な人が一定数いるため、わかっているとかなり重宝されますし、障害を片付けられた時のかっこよさはでかいです。
データベースというのは運用している中で輝くミドルウェアなわけですが、その問題領域の中でも運用の側面が強いのがモニタリングとチューニングです。つまり、データベースのモニタリング&チューニングは運用をやるSWEにとってはでかい武器になるわけで、そこがもりたはカッケーなと思っています。
1. おすすめ資料の紹介
1-1. 概要資料
まずはAWS RDS/Auroraでのモニタリングとチューニングについての見通しをよくするための概要資料です。初学者にとっても取り組みやすいよう、SpeakerDeckの資料とYoutube動画を紹介します。どちらもAWS内部の方が作成された資料で、被る箇所もありますが、ざっくり全体観を得るには最適です。
Amazon RDS/ Amazon Auroraパフォーマンスチューニングとモニタリング
まずはSpeakerDeckの資料です。AWS RDS/Auroraのモニタリング&チューニングにおいて重要な知識はすべてここにまとまっています。この資料を読むだけでなんとなくモニタリングとパフォーマンスチューニングができるんじゃないかと思わせてくれます。
Amazon RDS におけるパフォーマンス最適化とパフォーマンス管理
Youtube動画です。「Amazon RDS/ Amazon Auroraパフォーマンスチューニングとモニタリング」と被る部分も多いですが、よりパフォーマンスチューニングに寄った内容です。また、動画でわかりやすく、こういうふうにパフォーマンスチューニングができるようになるんだぞ、というのが掴める資料です。
1-2. モニタリングの前提知識
続いてはモニタリングの基礎的な知識が得られる資料です。ここでは現代のモニタリングに関する包括的なベストプラクティスがわかるような資料ではなく、CloudWatchだとかのモニタリングツールを見た時に登場するワードが理解できるだとか、ぼんやりと持っている苦手意識を解消できる資料を紹介します。また、スコープはDBのモニタリングではなくシステム全体の話です。
補記: システムパフォーマンスを理解するための考え方
なぜデータベースの指標以外も学ぶのか
できるとかっこいいモニタリングですが、同時にとっつきづらいと感じている人も多いのではないでしょうか。もりたは長らく以下のように感じていました。
- モニタリングの色んな統計情報を見てもピンとこない
- グラフを見ても波だな〜としか思わない。CPU使用率が30%→80%とかに急上昇していてなんとなくやばいんだろうなとか思うけど、実際のところ何がまずいのか説明できない
- ローレベルの話が多くてよくわからん
- 大量の指標がありどれもがローレベルなもので、指標それぞれが何を表しているのかわからない
- 運用してナンボの領域なので個人で勉強しにくい
- プログラミングみたいに作って勉強、とはいかない
ここに対処するため、今回はデータベースに限らずシステムパフォーマンス全体の知識を補う書籍を紹介しています。
遠回りに思えますが、一段上の情報から整理した方が理解しやすいと(もりたが)思っていますし、データベースに固有の観点だけで考えるより、もう少し抽象的なレベルで理解して、その具象としてデータベースのパフォーマンス指標を捉えられた方が納得しやすいと考えています。
『絵で見てわかるシステムパフォーマンスの仕組み』
システムパフォーマンスとチューニングの仕方を扱った書籍です。第二章と第三章がモニタリング指標を使ったパフォーマンス分析の章です。
この書籍の発行は2014年とだいぶ古いです。そのためクラウドを前提としない内容で適宜読みかえが必要なのですが、便利なモニタリングツールもなく自分でコマンドを打つことで、どんな目的でどの指標を使っているのか具体的に考える機会になりました。この手触り感が初学者にとっては良いのではないかと思って選んでいます。
『オペレーティングシステムの仕組み』
こちらはプロセスやスレッドについて学ぶための書籍です。システムパフォーマンスについて考えていると、どのスレッドが高負荷なのか考えるような機会が生まれます。そんなときにスレッドやプロセスについてイマイチ分からんなと思っているとよくないので、選んでいます。
なおこの手の書籍だと他にも『[試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識』なども評判が良いです。好きな方を選んで読んでください。
『プログラムはなぜ動くのか 第3版 知っておきたいプログラミングの基礎知識』
こちらもおすすめです。コンピュータの五大要素として計算・制御・記憶・入力・出力の5つがありますが、この教科書的な知識を腹落ちさせ、これがコンピュータの基礎的なアーキテクチャだと納得できます。
システムパフォーマンスを考えるとき、そのシステムを構成する様々なリソースそれぞれのアーキテクチャを把握してどこがボトルネックになるのかを考える必要があります。とはいえ、いろんなリソースの内部構造やアーキテクチャを知るのは大変ですよね。そんな時に役に立つのが「コンピュータの基礎的なアーキテクチャ」です。どのリソースも突き詰めていけばコンピュータの五大要素というアーキテクチャの上に成り立っており、ボトルネックを考えるときも基本は計算制御か、記憶か、入出力かの観点で考えられます。それをベースに個別リソースの特性を考えるだけであれば、だいぶ楽ができますよね。
1-3. チューニングの前提知識
チューニングの前提知識としてはざっくりデータベースの内部構造や仕組みがわかる資料をご紹介します。もりたが以前投稿した『データベースを勉強したいあなたに送る技術書17冊(+11冊1講義7link)』の一部をあらためてご紹介します。
コラム: 全て読まないとダメか?
この記事は初学者向けに参考になりそうな資料をたくさん挙げているんですが、たくさん本を出されると全部読まなきゃと思う方もいると思います。本当に全部読まないと理解したことにならないのか? みたいなのってありますよね。
結論からいうと、全然読まなくていいと思います。気になるところまで読んで、一定の納得ができたら本は閉じましょう。もりたもほとんどの本は通読しませんし、購入して目次だけ読んで終わりもよくあります。
本棚って外部ストレージなので、買って積んだらもう知識です。全ての情報をメモリに積むのは永遠の夢ですが、メモリを有効活用するのもデータベースの面白いところ。自分の脳でも実践していきましょう。
『SQL実践入門』
ミックさんの書籍です。アーキテクチャの話とSQLの書き方、インデックスまでざっくりと広く扱っています。おすすめです。
『絵で見てわかるSQL Serverの仕組み』
DBの内部構造が丁寧に解説されている書籍です。SQL Serverの書籍を選んでいますが、DBの内部構造はだいたい同じですし、自分の使っているRDBMSでどうなっているのか気になれば自分で調べることもできます。
『SQLパフォーマンス詳解』
SQLパフォーマンスといったらこの書籍です。時代が下って一部古い内容もありますが、それでもなおデータベースを学ぶ上での聖書の一つです。
1-4. モニタリングツールの資料群
モニタリングツールの資料群ではAWS公式の資料をご紹介します。どちらも本当に最高な資料です。公式が出している資料を使ってまず学びつつ、DatadogやNewRelicなど別のツールを使いたい人は置き換えて考えるのが良いと思います。
Performance Monitoring Workshop for RDS PostgreSQL and Aurora PostgreSQL
PostgreSQLの資料ですがほとんどの箇所はMySQLの人でも参考になります。AWS RDS/Auroraで使えるモニタリングツールについてそれぞれワークショップ形式で紹介しています。英語なのでDeeplのブラウザ拡張機能とか入れながら読んでください。
初めてのPerformance Insights入門
part1と2があります。Performance Insightsの使い方をスクショを交えつつ解説しています。前提としてPerformance Insightsというツールが本当にめちゃくちゃ良いツールで、その解説資料なのでもう最高という寸法です。ぜひ読んで、使って、感動してください。
1-5. チューニングで使える資料群
モニタリングツールの資料群に続いて、AWS公式のページをご紹介します。
Aurora MySQL のチューニング
こちらも最高の資料です。特に良いのが「待機イベントを使用したAurora MySQLのチューニング」ページで、Performance Insightsで調べた待機イベントとよくあるパターン、そして対策までがまとまっています。なにかDB周りで障害が起きた時は、とりあえずPerformance Insightsを確認してこのページを見るだけで何が起きておりどう対策すれば良いのか分かってしまいます。仮に障害が起きていなかったとしても面白いから全てのページを読みたい。
2. 紹介しなかった分野
今回の記事ではハイレベルな内容のものは扱っていません。
2-1. 高度なモニタリング
モニタリングをどうすべきなのかという点は高度な内容なので扱いませんでした。気になる人は『入門 監視』あたりから読んでみると良いと思います。基本的な考え方からリソースごとにみるべき指標までまとまっていて、テンションの上がる良い本です。またDBにフォーカスをあてた書籍としては『データベースリライアビリティエンジニアリング』もおすすめです。現代にどうデータベースと向き合うかという観点でまとめられた書籍で、その中に一部モニタリングを扱った箇所があります。
2-2. 高度なチューニング
こちらも広い範囲で扱うことはしていません。基本的にはモニタリングして、内部構造から原因を割り出して、より良いクエリを作成することになります。そのため内部構造やクエリのことをさらに深く知っていけば良いでしょう。
手前味噌で恐縮ですが、参考になりそうな記事をもりたもいくつか書いているのでご笑覧ください。
『データベースを勉強したいあなたに送る技術書17冊(+11冊1講義7link)』
『クエリチューニングを簡単に試せるハンズオン環境「SeekQueryLab」を作ったよ』
おわりに
元気なハンバーガーで締めさせていただきます
以上、AWS Auroraでモニタリング&パフォーマンスを始めるための資料紹介でした。色々と資料をご紹介しましたが、最高の教科書は生きているシステムです。これらを読んで上で運用に活かすととても有意義だと思うので、ぜひ使ってみてください。
Discussion