Slide 1

Slide 1 text

【Ottertune】MLでDBを最適化する ツールの紹介

Slide 2

Slide 2 text

自己紹介 ● Hank Ehly (ハンク イーリー) ● ENECHANGE株式会社 ● qiita.com/hankehly ● github.com/hankehly ● connpass.com/user/hankehly

Slide 3

Slide 3 text

アジェンダ 1. DBチューニングの問題点 2. OtterTuneとは 3. 営業とのQ&A

Slide 4

Slide 4 text

AWS RDSとは ● マネージド PostgreSQL、MySQL、... ● バージョン更新 / バックアップ等 自動化される ● デフォルトパラメータ ● DBの使われ方に最適化されていない

Slide 5

Slide 5 text

DBチューニングの問題点 ● RDBの費用を抑えて性能を最適化したいよね? (A) PostgreSQLの内部の専門的な知識 (B) 試行錯誤でパラメータ変更を繰り返し、最適化されるまで、パフォーマンスへの 影響を検証する時間 (私はどちらも持っていない) ● 本来より高いクラウドコストを支払っていて、低いパフォーマンスしか出せていない

Slide 6

Slide 6 text

OtterTuneとは AWS の RDS と連携し、PostgreSQL と MySQL の設定項目を機械学習で最適化する SaaS プロダクト 1. 接続 ● OtterTuneアカウント作成 ● Agentをデプロイする 2. メトリック取得 ● DB のハードウェア、パラメータ、メトリクス情報を 定期的に取得する ● データやクエリーを見ない 3. 最適化 ● ユーザーが設定した目標に向けて、 DB の設定を機械学習で最適化していく

Slide 7

Slide 7 text

①今この設定だよ ②多分これに変えたら パフォーマンス上がるよ ③どうする?

Slide 8

Slide 8 text

営業とのQ&A 1. どんな情報を取得するか ● 数値、カウンター、レイテンシー情報 ● PostgreSQL Statistics Collector ● CloudWatchメトリック(CPU使用率など) ● クエリーの内容/スキーマは取得されません 2. RDSとどう接続するか ● Agentをデプロイする(Fargate) ● 公式 CloudFormation / Terraform

Slide 9

Slide 9 text

module "ottertune-iam" { source = "ottertune/ottertune-iam/aws" version = "0.0.6" external_id = "***" } (Terraform)

Slide 10

Slide 10 text

営業とのQ&A 3. 設定変更によるダウンタイムはあるか ● 設定変更によるダウンタイムは今まで発生したことがないそうです ● 変更すると再起動が必要な設定はあるけど、事前に分かるもののみ 4. 日本語対応(ダッシュボード / サポート等) ない 5. 設定変更は自動なのか、人がやるのか ● どちらも対応している ● 完全に自動化できる ● 人間が変更内容を見てボタンクリックで適用することもできる(human in the loop と呼ぶ)

Slide 11

Slide 11 text

営業とのQ&A 6. 設定変更はどの頻度で行われるか ● 調整できるけど、24時間に1回が推奨される ● 大体20回目のイテレーションで、パフォーマンスチューニングがMAXに到達する

Slide 12

Slide 12 text

営業とのQ&A 7. どのくらいのパフォーマンス向上が期待できるか ワークロードによるけど、デフォルトの RDS 設定を使っている場合 5% 〜 15% は期待 できる

Slide 13

Slide 13 text

営業とのQ&A 8. PostgreSQL のバージョン変更したらどうなるか ● 何もなかったように、新しいメトリック/設定項目を考慮範囲に含められるだけ ● OtterTuneのサービスが途切れることはない 9. 設定変更によってパフォーマンスが下がったことはあるか? ● あるけど、最初の方だけで、ノイズに近い ● 継続的な設定調整でパフォーマンスがだんだん悪くなることはない 10. でもお高いでしょ? ● 1 db = $0 ● 〜5 db = $450/月 ● https://ottertune.com/pricing 11. 検証環境で学習させて本番環境に適用することは? ● 環境によってワークロードが違うので、検証環境で学習させて、本番環境に変更を展開することはあまり意味がない

Slide 14

Slide 14 text

営業とのQ&A 12. どのDBがサポートされるか

Slide 15

Slide 15 text

13. どのパラメータを調整するか ● autovacuum_vacuum_cost_delay ● autovacuum_vacuum_cost_limit ● autovacuum_vacuum_scale_factor ● autovacuum_vacuum_threshold ● bgwriter_delay ● bgwriter_lru_maxpages ● bgwriter_lru_multiplier ● checkpoint_completion_target ● 等々 営業とのQ&A

Slide 16

Slide 16 text

ご清聴ありがとうございます