patorashのブログ

方向性はまだない

第23回中国地方DB勉強会に参加してきた

昨日はこれに参加してきました。

dbstudychugoku.github.io

LT枠で申し込んでいたのでLTもしましたよ!

今回は、AWSの藤原さん(@twingo_b)のAmazon Auroraの話と、オミカレの曽根さん(@soudai1025)のデータベースモニタリングの話で、どちらも内容が濃くて面白かったです。

togetterまとめ

まとめがありますので、当日の様子はこちらでご確認ください。

togetter.com

Amazon Aurora ベストプラクティスと最新アップデート

私自身はAWSほとんど使ったことがないのですが、RDSとAuroraは何が違うのかイマイチわかっていなかったので楽しみにしていました。

Auroraすごい

Auroraはハイエンドデータベースのような性能と可用性で、オープンソースデータベースのMySQLPostgreSQLのどちらかを選択できる。PostgreSQLの場合は、9.6互換。データベースを通常のRDSからAuroraに変更するだけで普通に動く。プログラム側の変更なしで高速化できる!5倍速いとかネット上で見かけた。

お試し用にt2のインスタンスが選択できる。ただし、MySQLのみ。PostgreSQLはまだ選べない。残念…。

速くて障害に強い理由は、DB専用に作られたストレージと、3つのアベラビリティゾーンに分散化されたストレージノードにストライピングされていること、各AZにコピーが作られていること、マスターとレプリカが同じストレージ上にあること、など。

AWSのサービスなので他のAWSとのサービスとの連携が強み。例えば…

  • プロシージャからLambdaの呼び出し
  • S3にバックアップ
  • IAMでアクセス制御
  • CloudWatchで監査ログやシステムメトリクスをとる

などなど。

一番嬉しいのは、ユーザーはアプリケーション最適化だけ考えればいいという点だと思う。DBのチューニングは、インスタンスサイズによって最初から適切な設定が行われているとか、最高。

RDSはスケールアップでもそんなに性能が上がらないことがあるけれど、Auroraにするとかなり上がる。そして移行は容易。Auroraにしない理由が見つからない…(お金以外で)。とはいえ、Auroraにすることでコスト削減っていう話もあった。管理コストも下がるし、商用DBからの移行で下がるという話だったかなと思う。商用DBからの移行用のサービス・ツールもある。データ移行サービス(DMS)と、スキーマコンバージョンツール(SCT)。

あとは新機能についての話題があったのだけれど、Aurora Serverlessが今後出るとか…。オンデマンドで起動するDBで、瞬発的にアクセスが多くなるようなものに使えるという話だった。ブログとか、BIツールとかによさそうとTLでは上がってたかなと思う。

Amazon Lockerすごい

話の導入前に、藤原さんがAmazonの本社に行ってたときの話があったのだけれど、Amazon Lockerという、買ったものがコインロッカーに届くというサービスが向こうでは始まってるらしい。日本でいうコンビニ配達みたいなものなのだけれど、人の手を介さずに荷物を受け取れるのですごくよさそう。流通も最適化されるだろうし、日本にも早く導入してほしい〜!

気づき

Auroraに変えるだけでパフォーマンスが向上する、というのは正直すごい。なんだかんだで多少は面倒臭いんだろうなとか思っていたけれど、移行が容易というのがよかった。PostgreSQLでもt2インスタンス使えるようになってほしい…。

今から始めるデータベース監視 ~あなたのデータベースは大丈夫?~

DBのモニタリング、スロークエリくらいは時々見ているけれど、あんまりちゃんとできていないしこれから趣味アプリでMackerelとか使っていくかーと考えていたので、ちょうどよかったです。

なぜモニタリングするのか?

モニタリングする理由は、

  • 素早く障害に気づくため
  • 原因究明のため
  • 未然に障害を防ぐため

そもそも障害が起きてしまってはいけないので、サービスが落ちる前に気づけるようにしないといけない。

監視の勘所

監視は、サービスが正しく動いているかをモニタリングするわけだけれど、定量データを取り続けることで、意図しない挙動に気づくことができる。

アクセス監視でいえば、

  • 特定のページにアクセスがない
  • 特定の時間帯でアクセスがない

サーバ監視でいえば、

  • batchのジョブ数の変化
  • キューの数の変化
  • DNS, NTPは問題ないか

サービス自体の監視でいえば、

  • ユーザーのプレイ状況(アクティブユーザー数など)
  • 検索ワード
  • 申し込みボタンのクリック数

これらで、サービスの課題に気づきやすくなる。

DBのモニタリング

DBのモニタリングにはMackerelってやつがいいよという話と、DBの得意・不得意を知っておくことの重要性と、おすすめの本の紹介など。あとは内部構造がわかれば何を監視すればいいかが見えてくるという話もあった。

DBの得意・不得意

MySQLはキー1発でデータを取ってくるのは得意だけれど、JOINとか、複数INDEXを扱うのが苦手なので、それを知っていれば、一部をNoSQLに逃すとかの対策が打てる。DBだけでなんとかしようとしてもどうにもならないことがあるのを知っておくことが大事。

おすすめの本

この本は知らなかったので、読んでみたい。というか、社内で読書会するかな〜。募ってみるか。

実践ハイパフォーマンスMySQL 第3版

実践ハイパフォーマンスMySQL 第3版

エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド

エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド

MySQLについてはこれらの本がおすすめらしい。もうMySQLは数年は触っていないな…。ちなみに家には結構MySQLの本ある(妻の持ち物とか)。

内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 Software Design plus

内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 Software Design plus

PostgreSQLに関してはこの本は本当にいい。この本はバージョン9.3の頃のやつなのだけれど、そろそろ新しいのが出るらしいという噂を聞いたので個人ではまだ持ってないけれど新しいのが出たら買う!

Mackerelプラグインのコードリーディングがいい

Mackerelプラグインのコードを読むと、どういうSQLでどういう値を取得しているかがわかって面白いらしい。オープンソースだからこそって話でよかった。

LT

LTは3枠あったのだけれど、キャンセルや交通機関の影響?で、私だけだった。

OSS-DB Silverという資格を取ったのだけれど、体系的にデータベースの基本知識を学べるのでおすすめですというLTをした。Goldいつ取るの?と煽られたので、頑張ろうと思う。

お悩み相談タイム

JPUGの中国支部長のお悩み相談タイム、のはずが、本人が用事で急遽参加できなくなったため、相談内容だけ残してみんなで喧々諤々の話し合いが行われた。割と、身もフタもない話が展開されつつも、面白い話題になってよかったと思います。雑にまとめたツイートを自分がしていたので、とりあえず貼っておくけれど、togetterまとめを見た方がいいでしょう。

自分なりの気づき

「SELECT INSERT or UPDATEはINSERT(UPDATE)中にSELECTの結果が変わってしまってはいけないからSELECTしている行もロックされる」という話題があって、なるほど〜!!と思いました。大量のデータで気軽にやったらシステム止まっちゃうよということだったので、忘れないようにしたい。

あとネットでは業務内容に絡むので話題にしづらいけれど、DB勉強会ではある程度踏み込んだ相談ができるので、そのあたり実際にDBに詳しい人たちに会って聞けるってのはほんま恵まれた機会だなと思います。

今回も充実した内容で楽しかったです!また参加したいと思います。